Re: [Mesa-dev] [PATCH 5/5] nv50, nvc0: add support for fine derivatives

2014-08-14 Thread Marek Olšák
Are you gonna update the release notes too?

Marek

On Thu, Aug 14, 2014 at 6:52 AM, Ilia Mirkin imir...@alum.mit.edu wrote:
 The quadop-based method we currently use on all chipsets already
 provides the fine version of the derivatives.

 Signed-off-by: Ilia Mirkin imir...@alum.mit.edu
 ---
  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

2014-08-14 Thread Chris Forbes
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 mar...@gmail.com wrote:
 Are you gonna update the release notes too?

 Marek

 On Thu, Aug 14, 2014 at 6:52 AM, Ilia Mirkin imir...@alum.mit.edu wrote:
 The quadop-based method we currently use on all chipsets already
 provides the fine version of the derivatives.

 Signed-off-by: Ilia Mirkin imir...@alum.mit.edu
 ---
  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
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 5/5] nv50, nvc0: add support for fine derivatives

2014-08-14 Thread Ilia Mirkin
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 mar...@gmail.com wrote:
 Are you gonna update the release notes too?

 Marek

 On Thu, Aug 14, 2014 at 6:52 AM, Ilia Mirkin imir...@alum.mit.edu wrote:
 The quadop-based method we currently use on all chipsets already
 provides the fine version of the derivatives.

 Signed-off-by: Ilia Mirkin imir...@alum.mit.edu
 ---
  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