[Mesa-dev] [PATCH 5/5] nv50, nvc0: add support for fine derivatives
The quadop-based method we currently use on all chipsets already provides the fine version of the derivatives. Signed-off-by: Ilia Mirkin --- docs/GL3.txt | 2 +- src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 4 src/gallium/drivers/nouveau/nv50/nv50_screen.c| 2 +- src/gallium/drivers/nouveau/nvc0/nvc0_screen.c| 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/GL3.txt b/docs/GL3.txt index 89529fe..0a40e23 100644 --- a/docs/GL3.txt +++ b/docs/GL3.txt @@ -189,7 +189,7 @@ GL 4.5, GLSL 4.50: GL_ARB_clip_control not started GL_ARB_conditional_render_inverted not started GL_ARB_cull_distance not started - GL_ARB_derivative_controlnot started + GL_ARB_derivative_controlDONE (nv50, nvc0) GL_ARB_direct_state_access not started GL_ARB_get_texture_sub_image started (Brian Paul) GL_ARB_shader_texture_image_samples not started diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp index 14b6d68..456efcb 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp @@ -531,7 +531,9 @@ static nv50_ir::operation translateOpcode(uint opcode) NV50_IR_OPCODE_CASE(COS, COS); NV50_IR_OPCODE_CASE(DDX, DFDX); + NV50_IR_OPCODE_CASE(DDX_FINE, DFDX); NV50_IR_OPCODE_CASE(DDY, DFDY); + NV50_IR_OPCODE_CASE(DDY_FINE, DFDY); NV50_IR_OPCODE_CASE(KILL, DISCARD); NV50_IR_OPCODE_CASE(SEQ, SET); @@ -2327,6 +2329,8 @@ Converter::handleInstruction(const struct tgsi_full_instruction *insn) case TGSI_OPCODE_NOT: case TGSI_OPCODE_DDX: case TGSI_OPCODE_DDY: + case TGSI_OPCODE_DDX_FINE: + case TGSI_OPCODE_DDY_FINE: FOR_EACH_DST_ENABLED_CHANNEL(0, c, tgsi) mkOp1(op, dstTy, dst0[c], fetchSrc(0, c)); break; diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c b/src/gallium/drivers/nouveau/nv50/nv50_screen.c index 34cca3d..8a9a40e 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c @@ -169,6 +169,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_USER_VERTEX_BUFFERS: case PIPE_CAP_TEXTURE_MULTISAMPLE: case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER: + case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: return 1; case PIPE_CAP_SEAMLESS_CUBE_MAP: return 1; /* class_3d >= NVA0_3D_CLASS; */ @@ -200,7 +201,6 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION: case PIPE_CAP_COMPUTE: case PIPE_CAP_DRAW_INDIRECT: - case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: return 0; } diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c index 17aee63..c6d9b91 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c @@ -167,6 +167,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_SAMPLE_SHADING: case PIPE_CAP_TEXTURE_GATHER_OFFSETS: case PIPE_CAP_TEXTURE_GATHER_SM5: + case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: return 1; case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE: return (class_3d >= NVE4_3D_CLASS) ? 1 : 0; @@ -184,7 +185,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_VS_LAYER_VIEWPORT: case PIPE_CAP_FAKE_SW_MSAA: case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION: - case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: return 0; } -- 1.8.5.5 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 5/5] nv50, nvc0: add support for fine derivatives
Are you gonna update the release notes too? Marek On Thu, Aug 14, 2014 at 6:52 AM, Ilia Mirkin wrote: > The quadop-based method we currently use on all chipsets already > provides the fine version of the derivatives. > > Signed-off-by: Ilia Mirkin > --- > docs/GL3.txt | 2 +- > src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 4 > src/gallium/drivers/nouveau/nv50/nv50_screen.c| 2 +- > src/gallium/drivers/nouveau/nvc0/nvc0_screen.c| 2 +- > 4 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/docs/GL3.txt b/docs/GL3.txt > index 89529fe..0a40e23 100644 > --- a/docs/GL3.txt > +++ b/docs/GL3.txt > @@ -189,7 +189,7 @@ GL 4.5, GLSL 4.50: >GL_ARB_clip_control not started >GL_ARB_conditional_render_inverted not started >GL_ARB_cull_distance not started > - GL_ARB_derivative_controlnot started > + GL_ARB_derivative_controlDONE (nv50, nvc0) >GL_ARB_direct_state_access not started >GL_ARB_get_texture_sub_image started (Brian Paul) >GL_ARB_shader_texture_image_samples not started > diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > index 14b6d68..456efcb 100644 > --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > @@ -531,7 +531,9 @@ static nv50_ir::operation translateOpcode(uint opcode) > > NV50_IR_OPCODE_CASE(COS, COS); > NV50_IR_OPCODE_CASE(DDX, DFDX); > + NV50_IR_OPCODE_CASE(DDX_FINE, DFDX); > NV50_IR_OPCODE_CASE(DDY, DFDY); > + NV50_IR_OPCODE_CASE(DDY_FINE, DFDY); > NV50_IR_OPCODE_CASE(KILL, DISCARD); > > NV50_IR_OPCODE_CASE(SEQ, SET); > @@ -2327,6 +2329,8 @@ Converter::handleInstruction(const struct > tgsi_full_instruction *insn) > case TGSI_OPCODE_NOT: > case TGSI_OPCODE_DDX: > case TGSI_OPCODE_DDY: > + case TGSI_OPCODE_DDX_FINE: > + case TGSI_OPCODE_DDY_FINE: >FOR_EACH_DST_ENABLED_CHANNEL(0, c, tgsi) > mkOp1(op, dstTy, dst0[c], fetchSrc(0, c)); >break; > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > index 34cca3d..8a9a40e 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > @@ -169,6 +169,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum > pipe_cap param) > case PIPE_CAP_USER_VERTEX_BUFFERS: > case PIPE_CAP_TEXTURE_MULTISAMPLE: > case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER: > + case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >return 1; > case PIPE_CAP_SEAMLESS_CUBE_MAP: >return 1; /* class_3d >= NVA0_3D_CLASS; */ > @@ -200,7 +201,6 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum > pipe_cap param) > case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION: > case PIPE_CAP_COMPUTE: > case PIPE_CAP_DRAW_INDIRECT: > - case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >return 0; > } > > diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > index 17aee63..c6d9b91 100644 > --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > @@ -167,6 +167,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum > pipe_cap param) > case PIPE_CAP_SAMPLE_SHADING: > case PIPE_CAP_TEXTURE_GATHER_OFFSETS: > case PIPE_CAP_TEXTURE_GATHER_SM5: > + case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >return 1; > case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE: >return (class_3d >= NVE4_3D_CLASS) ? 1 : 0; > @@ -184,7 +185,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum > pipe_cap param) > case PIPE_CAP_TGSI_VS_LAYER_VIEWPORT: > case PIPE_CAP_FAKE_SW_MSAA: > case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION: > - case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >return 0; > } > > -- > 1.8.5.5 > > ___ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 5/5] nv50, nvc0: add support for fine derivatives
I've included an appropriate release notes change including nv50 & nvc0 in my i965 follow-up series, on the assumption that these two will land more or less together. On Thu, Aug 14, 2014 at 11:00 PM, Marek Olšák wrote: > Are you gonna update the release notes too? > > Marek > > On Thu, Aug 14, 2014 at 6:52 AM, Ilia Mirkin wrote: >> The quadop-based method we currently use on all chipsets already >> provides the fine version of the derivatives. >> >> Signed-off-by: Ilia Mirkin >> --- >> docs/GL3.txt | 2 +- >> src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 4 >> src/gallium/drivers/nouveau/nv50/nv50_screen.c| 2 +- >> src/gallium/drivers/nouveau/nvc0/nvc0_screen.c| 2 +- >> 4 files changed, 7 insertions(+), 3 deletions(-) >> >> diff --git a/docs/GL3.txt b/docs/GL3.txt >> index 89529fe..0a40e23 100644 >> --- a/docs/GL3.txt >> +++ b/docs/GL3.txt >> @@ -189,7 +189,7 @@ GL 4.5, GLSL 4.50: >>GL_ARB_clip_control not started >>GL_ARB_conditional_render_inverted not started >>GL_ARB_cull_distance not started >> - GL_ARB_derivative_controlnot started >> + GL_ARB_derivative_controlDONE (nv50, nvc0) >>GL_ARB_direct_state_access not started >>GL_ARB_get_texture_sub_image started (Brian Paul) >>GL_ARB_shader_texture_image_samples not started >> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp >> b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp >> index 14b6d68..456efcb 100644 >> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp >> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp >> @@ -531,7 +531,9 @@ static nv50_ir::operation translateOpcode(uint opcode) >> >> NV50_IR_OPCODE_CASE(COS, COS); >> NV50_IR_OPCODE_CASE(DDX, DFDX); >> + NV50_IR_OPCODE_CASE(DDX_FINE, DFDX); >> NV50_IR_OPCODE_CASE(DDY, DFDY); >> + NV50_IR_OPCODE_CASE(DDY_FINE, DFDY); >> NV50_IR_OPCODE_CASE(KILL, DISCARD); >> >> NV50_IR_OPCODE_CASE(SEQ, SET); >> @@ -2327,6 +2329,8 @@ Converter::handleInstruction(const struct >> tgsi_full_instruction *insn) >> case TGSI_OPCODE_NOT: >> case TGSI_OPCODE_DDX: >> case TGSI_OPCODE_DDY: >> + case TGSI_OPCODE_DDX_FINE: >> + case TGSI_OPCODE_DDY_FINE: >>FOR_EACH_DST_ENABLED_CHANNEL(0, c, tgsi) >> mkOp1(op, dstTy, dst0[c], fetchSrc(0, c)); >>break; >> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c >> b/src/gallium/drivers/nouveau/nv50/nv50_screen.c >> index 34cca3d..8a9a40e 100644 >> --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c >> +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c >> @@ -169,6 +169,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum >> pipe_cap param) >> case PIPE_CAP_USER_VERTEX_BUFFERS: >> case PIPE_CAP_TEXTURE_MULTISAMPLE: >> case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER: >> + case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >>return 1; >> case PIPE_CAP_SEAMLESS_CUBE_MAP: >>return 1; /* class_3d >= NVA0_3D_CLASS; */ >> @@ -200,7 +201,6 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum >> pipe_cap param) >> case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION: >> case PIPE_CAP_COMPUTE: >> case PIPE_CAP_DRAW_INDIRECT: >> - case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >>return 0; >> } >> >> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c >> b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c >> index 17aee63..c6d9b91 100644 >> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c >> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c >> @@ -167,6 +167,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum >> pipe_cap param) >> case PIPE_CAP_SAMPLE_SHADING: >> case PIPE_CAP_TEXTURE_GATHER_OFFSETS: >> case PIPE_CAP_TEXTURE_GATHER_SM5: >> + case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >>return 1; >> case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE: >>return (class_3d >= NVE4_3D_CLASS) ? 1 : 0; >> @@ -184,7 +185,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum >> pipe_cap param) >> case PIPE_CAP_TGSI_VS_LAYER_VIEWPORT: >> case PIPE_CAP_FAKE_SW_MSAA: >> case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION: >> - case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >>return 0; >> } >> >> -- >> 1.8.5.5 >> >> ___ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev > ___ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org h
Re: [Mesa-dev] [PATCH 5/5] nv50, nvc0: add support for fine derivatives
I was going by the assumption that this would miss the 10.3 release and didn't want to create a 10.4 notes file quite yet. However that doesn't look to be the case, so I'll definitely drop it in :) On Thu, Aug 14, 2014 at 7:00 AM, Marek Olšák wrote: > Are you gonna update the release notes too? > > Marek > > On Thu, Aug 14, 2014 at 6:52 AM, Ilia Mirkin wrote: >> The quadop-based method we currently use on all chipsets already >> provides the fine version of the derivatives. >> >> Signed-off-by: Ilia Mirkin >> --- >> docs/GL3.txt | 2 +- >> src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 4 >> src/gallium/drivers/nouveau/nv50/nv50_screen.c| 2 +- >> src/gallium/drivers/nouveau/nvc0/nvc0_screen.c| 2 +- >> 4 files changed, 7 insertions(+), 3 deletions(-) >> >> diff --git a/docs/GL3.txt b/docs/GL3.txt >> index 89529fe..0a40e23 100644 >> --- a/docs/GL3.txt >> +++ b/docs/GL3.txt >> @@ -189,7 +189,7 @@ GL 4.5, GLSL 4.50: >>GL_ARB_clip_control not started >>GL_ARB_conditional_render_inverted not started >>GL_ARB_cull_distance not started >> - GL_ARB_derivative_controlnot started >> + GL_ARB_derivative_controlDONE (nv50, nvc0) >>GL_ARB_direct_state_access not started >>GL_ARB_get_texture_sub_image started (Brian Paul) >>GL_ARB_shader_texture_image_samples not started >> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp >> b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp >> index 14b6d68..456efcb 100644 >> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp >> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp >> @@ -531,7 +531,9 @@ static nv50_ir::operation translateOpcode(uint opcode) >> >> NV50_IR_OPCODE_CASE(COS, COS); >> NV50_IR_OPCODE_CASE(DDX, DFDX); >> + NV50_IR_OPCODE_CASE(DDX_FINE, DFDX); >> NV50_IR_OPCODE_CASE(DDY, DFDY); >> + NV50_IR_OPCODE_CASE(DDY_FINE, DFDY); >> NV50_IR_OPCODE_CASE(KILL, DISCARD); >> >> NV50_IR_OPCODE_CASE(SEQ, SET); >> @@ -2327,6 +2329,8 @@ Converter::handleInstruction(const struct >> tgsi_full_instruction *insn) >> case TGSI_OPCODE_NOT: >> case TGSI_OPCODE_DDX: >> case TGSI_OPCODE_DDY: >> + case TGSI_OPCODE_DDX_FINE: >> + case TGSI_OPCODE_DDY_FINE: >>FOR_EACH_DST_ENABLED_CHANNEL(0, c, tgsi) >> mkOp1(op, dstTy, dst0[c], fetchSrc(0, c)); >>break; >> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c >> b/src/gallium/drivers/nouveau/nv50/nv50_screen.c >> index 34cca3d..8a9a40e 100644 >> --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c >> +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c >> @@ -169,6 +169,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum >> pipe_cap param) >> case PIPE_CAP_USER_VERTEX_BUFFERS: >> case PIPE_CAP_TEXTURE_MULTISAMPLE: >> case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER: >> + case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >>return 1; >> case PIPE_CAP_SEAMLESS_CUBE_MAP: >>return 1; /* class_3d >= NVA0_3D_CLASS; */ >> @@ -200,7 +201,6 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum >> pipe_cap param) >> case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION: >> case PIPE_CAP_COMPUTE: >> case PIPE_CAP_DRAW_INDIRECT: >> - case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >>return 0; >> } >> >> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c >> b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c >> index 17aee63..c6d9b91 100644 >> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c >> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c >> @@ -167,6 +167,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum >> pipe_cap param) >> case PIPE_CAP_SAMPLE_SHADING: >> case PIPE_CAP_TEXTURE_GATHER_OFFSETS: >> case PIPE_CAP_TEXTURE_GATHER_SM5: >> + case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >>return 1; >> case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE: >>return (class_3d >= NVE4_3D_CLASS) ? 1 : 0; >> @@ -184,7 +185,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum >> pipe_cap param) >> case PIPE_CAP_TGSI_VS_LAYER_VIEWPORT: >> case PIPE_CAP_FAKE_SW_MSAA: >> case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION: >> - case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: >>return 0; >> } >> >> -- >> 1.8.5.5 >> >> ___ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev