Mesa (main): v3d: add ARB_polygon_offset_clamp extension support

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 9 09:24:09 UTC 2022


Module: Mesa
Branch: main
Commit: ef6cc03b175c6f43b055e2d2ba23777e7ce82003
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef6cc03b175c6f43b055e2d2ba23777e7ce82003

Author: Juan A. Suarez Romero <jasuarez at igalia.com>
Date:   Wed Jun  8 11:49:29 2022 +0200

v3d: add ARB_polygon_offset_clamp extension support

Signed-off-by: Juan A. Suarez Romero <jasuarez at igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16925>

---

 docs/features.txt                    | 2 +-
 src/gallium/drivers/v3d/v3d_screen.c | 3 +++
 src/gallium/drivers/v3d/v3dx_state.c | 6 ++++++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/docs/features.txt b/docs/features.txt
index 0e749d94d37..3bd71a7fdf2 100644
--- a/docs/features.txt
+++ b/docs/features.txt
@@ -230,7 +230,7 @@ GL 4.6, GLSL 4.60 -- all DONE: radeonsi, zink
   GL_ARB_gl_spirv                                       DONE (i965/gen7+, llvmpipe)
   GL_ARB_indirect_parameters                            DONE (i965/gen7+, nvc0, llvmpipe, virgl, d3d12)
   GL_ARB_pipeline_statistics_query                      DONE (i965, nvc0, r600, llvmpipe, softpipe, )
-  GL_ARB_polygon_offset_clamp                           DONE (freedreno, i965, nv50, nvc0, r600, llvmpipe, virgl)
+  GL_ARB_polygon_offset_clamp                           DONE (freedreno, i965, nv50, nvc0, r600, llvmpipe, v3d, virgl)
   GL_ARB_shader_atomic_counter_ops                      DONE (freedreno/a5xx+, i965/gen7+, nvc0, r600, llvmpipe, softpipe, virgl, v3d)
   GL_ARB_shader_draw_parameters                         DONE (i965, llvmpipe, nvc0, d3d12)
   GL_ARB_shader_group_vote                              DONE (i965, nvc0, llvmpipe)
diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c
index 8e610be37da..a93879d1583 100644
--- a/src/gallium/drivers/v3d/v3d_screen.c
+++ b/src/gallium/drivers/v3d/v3d_screen.c
@@ -150,6 +150,9 @@ v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
         case PIPE_CAP_INDEP_BLEND_FUNC:
                 return 1;
 
+        case PIPE_CAP_POLYGON_OFFSET_CLAMP:
+                return screen->devinfo.ver >= 41;
+
         case PIPE_CAP_TEXTURE_QUERY_LOD:
                 return screen->devinfo.ver >= 42;
                 break;
diff --git a/src/gallium/drivers/v3d/v3dx_state.c b/src/gallium/drivers/v3d/v3dx_state.c
index 249910ed606..ce293218447 100644
--- a/src/gallium/drivers/v3d/v3dx_state.c
+++ b/src/gallium/drivers/v3d/v3dx_state.c
@@ -105,6 +105,9 @@ v3d_create_rasterizer_state(struct pipe_context *pctx,
         v3dx_pack(&so->depth_offset, DEPTH_OFFSET, depth) {
                 depth.depth_offset_factor = cso->offset_scale;
                 depth.depth_offset_units = cso->offset_units;
+#if V3D_VERSION >= 41
+                depth.limit = cso->offset_clamp;
+#endif
         }
 
         /* The HW treats polygon offset units based on a Z24 buffer, so we
@@ -113,6 +116,9 @@ v3d_create_rasterizer_state(struct pipe_context *pctx,
         v3dx_pack(&so->depth_offset_z16, DEPTH_OFFSET, depth) {
                 depth.depth_offset_factor = cso->offset_scale;
                 depth.depth_offset_units = cso->offset_units * 256.0;
+#if V3D_VERSION >= 41
+                depth.limit = cso->offset_clamp;
+#endif
         }
 
         return so;



More information about the mesa-commit mailing list