[Mesa-dev] [PATCH 5/5] nv50, nvc0: add support for fine derivatives
Chris Forbes
chrisf at ijw.co.nz
Thu Aug 14 04:17:11 PDT 2014
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 <maraeo at gmail.com> wrote:
> Are you gonna update the release notes too?
>
> Marek
>
> On Thu, Aug 14, 2014 at 6:52 AM, Ilia Mirkin <imirkin at 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 <imirkin at 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_control not started
>> + GL_ARB_derivative_control DONE (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 at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list