freedreno/a3xx+: Enable ARB_derivative_control
authorRob Clark <robdclark@chromium.org>
Sat, 29 Oct 2022 20:23:16 +0000 (13:23 -0700)
committerMarge Bot <emma+marge@anholt.net>
Wed, 2 Nov 2022 15:42:14 +0000 (15:42 +0000)
Also already supported by ir3.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19400>

docs/features.txt
src/gallium/drivers/freedreno/a6xx/fd6_program.c
src/gallium/drivers/freedreno/freedreno_screen.c

index 7e3ba2d..642e2c9 100644 (file)
@@ -216,7 +216,7 @@ GL 4.5, GLSL 4.50 -- all DONE: nvc0, r600, radeonsi, llvmpipe, zink
   GL_ARB_clip_control                                   DONE (freedreno, i965, nv50, softpipe, virgl, lima, d3d12)
   GL_ARB_conditional_render_inverted                    DONE (freedreno, i965, nv50, softpipe, virgl, panfrost, d3d12)
   GL_ARB_cull_distance                                  DONE (freedreno/a6xx, i965, nv50, softpipe, virgl)
-  GL_ARB_derivative_control                             DONE (i965, nv50, softpipe, virgl)
+  GL_ARB_derivative_control                             DONE (freedreno/a3xx+, i965, nv50, softpipe, virgl)
   GL_ARB_direct_state_access                            DONE (all drivers)
   GL_ARB_get_texture_sub_image                          DONE (all drivers)
   GL_ARB_shader_texture_image_samples                   DONE (freedreno/a3xx+, i965, nv50, virgl)
index 4f45bc6..fbbca5b 100644 (file)
@@ -873,6 +873,7 @@ setup_stateobj(struct fd_ringbuffer *ring, struct fd_context *ctx,
       ring,
       A6XX_SP_FS_CTRL_REG0_THREADSIZE(fssz) |
          COND(enable_varyings, A6XX_SP_FS_CTRL_REG0_VARYING) | 0x1000000 |
+         COND(fs->need_fine_derivatives, A6XX_SP_FS_CTRL_REG0_DIFF_FINE) |
          A6XX_SP_FS_CTRL_REG0_FULLREGFOOTPRINT(fs->info.max_reg + 1) |
          A6XX_SP_FS_CTRL_REG0_HALFREGFOOTPRINT(fs->info.max_half_reg + 1) |
          COND(fs->mergedregs, A6XX_SP_FS_CTRL_REG0_MERGEDREGS) |
index 831e9ed..cb68f10 100644 (file)
@@ -472,6 +472,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
    case PIPE_CAP_TGSI_TEXCOORD:
    case PIPE_CAP_SHADER_ARRAY_COMPONENTS:
    case PIPE_CAP_TEXTURE_QUERY_SAMPLES:
+   case PIPE_CAP_FS_FINE_DERIVATIVE:
       if (is_ir3(screen))
          return 1;
       return 0;