Mesa (main): panfrost: Lower user clip planes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon May 2 14:14:35 UTC 2022


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

Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date:   Tue Apr 26 16:32:01 2022 -0400

panfrost: Lower user clip planes

Since we don't export the relevant CAP, the state tracker calls
nir_lower_clip_vs for us. However, for some reason we're still responsible for
calling nir_lower_clip_fs. Now that we have sane shader key infrastructure,
let's do so.

Fixes the floor rendering wrong in the title screen of Neverball.

Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16173>

---

 src/gallium/drivers/panfrost/pan_assemble.c | 6 ++++++
 src/gallium/drivers/panfrost/pan_context.c  | 5 +++++
 src/gallium/drivers/panfrost/pan_context.h  | 3 +++
 src/panfrost/ci/panfrost-g52-fails.txt      | 6 ------
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/panfrost/pan_assemble.c b/src/gallium/drivers/panfrost/pan_assemble.c
index ac34c46e463..43b28465193 100644
--- a/src/gallium/drivers/panfrost/pan_assemble.c
+++ b/src/gallium/drivers/panfrost/pan_assemble.c
@@ -57,6 +57,12 @@ panfrost_shader_compile(struct pipe_screen *pscreen,
                                    true /* point coord is sysval */,
                                    false /* Y-invert */);
                 }
+
+                if (state->key.fs.clip_plane_enable) {
+                        NIR_PASS_V(s, nir_lower_clip_fs,
+                                   state->key.fs.clip_plane_enable,
+                                   false);
+                }
         }
 
         /* Call out to Midgard compiler given the above NIR */
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 4f52ae0b4f2..b1044c0206d 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -380,6 +380,11 @@ panfrost_build_key(struct panfrost_context *ctx,
                 key->fs.sprite_coord_enable = rast->sprite_coord_enable;
         }
 
+        /* User clip plane lowering needed everywhere */
+        if (rast) {
+                key->fs.clip_plane_enable = rast->clip_plane_enable;
+        }
+
         if (dev->arch <= 5) {
                 u_foreach_bit(i, (nir->info.outputs_read >> FRAG_RESULT_DATA0)) {
                         enum pipe_format fmt = PIPE_FORMAT_R8G8B8A8_UNORM;
diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h
index ee6268af504..737ed78c802 100644
--- a/src/gallium/drivers/panfrost/pan_context.h
+++ b/src/gallium/drivers/panfrost/pan_context.h
@@ -266,6 +266,9 @@ struct panfrost_fs_key {
 
         /* From rasterize state, to lower point sprites */
         uint16_t sprite_coord_enable;
+
+        /* User clip plane lowering */
+        uint8_t clip_plane_enable;
 };
 
 struct panfrost_shader_key {
diff --git a/src/panfrost/ci/panfrost-g52-fails.txt b/src/panfrost/ci/panfrost-g52-fails.txt
index e4650e4bdb8..b522c6fba26 100644
--- a/src/panfrost/ci/panfrost-g52-fails.txt
+++ b/src/panfrost/ci/panfrost-g52-fails.txt
@@ -169,7 +169,6 @@ spec at arb_texture_view@sampling-2d-array-as-cubemap,Crash
 spec at arb_transform_feedback_instanced@draw-auto instanced,Fail
 spec at arb_uniform_buffer_object@rendering-dsa-offset,Fail
 spec at arb_uniform_buffer_object@rendering-offset,Fail
-spec at arb_vertex_program@clip-plane-transformation arb,Fail
 spec at egl 1.4 at eglterminate then unbind context,Fail
 spec at egl_chromium_sync_control@conformance at eglGetSyncValuesCHROMIUM_msc_and_sbc_test,Fail
 spec at egl_chromium_sync_control@conformance,Fail
@@ -337,9 +336,6 @@ spec at ext_transform_feedback@tessellation triangle_strip flat_last,Fail
 spec at ext_transform_feedback@tessellation triangle_strip monochrome,Fail
 spec at ext_transform_feedback@tessellation triangle_strip smooth,Fail
 spec at ext_transform_feedback@tessellation triangle_strip wireframe,Fail
-spec at glsl-1.10@execution at clipping@clip-plane-transformation clipvert_pos,Fail
-spec at glsl-1.10@execution at clipping@clip-plane-transformation fixed,Fail
-spec at glsl-1.10@execution at clipping@clip-plane-transformation pos_clipvert,Fail
 spec at glsl-1.10@execution at varying-packing@simple float array,Fail
 spec at glsl-1.10@execution at varying-packing@simple float arrays_of_arrays,Fail
 spec at glsl-1.10@execution at varying-packing@simple int array,Fail
@@ -394,7 +390,6 @@ spec at glsl-1.10@execution at varying-packing@simple vec3 arrays_of_arrays,Fail
 spec at glsl-1.10@execution at varying-packing@simple vec3 separate,Fail
 spec at glsl-1.10@execution at varying-packing@simple vec4 array,Fail
 spec at glsl-1.10@execution at varying-packing@simple vec4 arrays_of_arrays,Fail
-spec at glsl-1.30@execution at clipping@clip-plane-transformation pos,Fail
 spec at glsl-1.30@execution at tex-miplevel-selection texture() 2drect,Crash
 spec at glsl-1.30@execution at tex-miplevel-selection texture() 2drectshadow,Crash
 spec at glsl-1.30@execution at tex-miplevel-selection texturegrad 2drect,Crash
@@ -534,7 +529,6 @@ spec@!opengl 1.0 at gl-1.0-edgeflag,Fail
 spec@!opengl 1.0 at gl-1.0-edgeflag-quads,Fail
 spec@!opengl 1.0 at gl-1.0-no-op-paths,Fail
 spec@!opengl 1.0 at gl-1.0-spot-light,Fail
-spec@!opengl 1.0 at gl-1.0-user-clip-all-planes,Fail
 spec@!opengl 1.0 at rasterpos,Crash
 spec@!opengl 1.1 at dlist-fdo3129-01,Crash
 spec@!opengl 1.1 at getteximage-formats,Fail



More information about the mesa-commit mailing list