summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmma Anholt <emma@anholt.net>2023-02-13 13:20:22 -0800
committerMarge Bot <emma+marge@anholt.net>2023-02-14 00:16:50 +0000
commit5c246e21b71a1676705440bce767535dc502d748 (patch)
treeda5f04cc7abfa6c0450d3280c5daf6c5acaa56b4
parent509c1f9feac07aca039fdc82e3f216622b2085e1 (diff)
Revert "freedreno/a5xx: Fix clip_mask"
This reverts commit 2dfebf34874b5365156d254c2c1ba2ecc5262deb. It causes GPU hangs in piglit tests like spec@glsl-1.20@execution@clipping@vs-clip-vertex-enables, for reasons I'm totally unclear on. The commit was not necessary, because the frontend lowering already handles disabled clip planes by storing 0.0 to the corresponding clipdist array element in that shader variant. Add a note to that effect. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21298>
-rw-r--r--src/freedreno/ci/freedreno-a530-fails.txt28
-rw-r--r--src/gallium/drivers/freedreno/a5xx/fd5_emit.c2
-rw-r--r--src/gallium/drivers/freedreno/a5xx/fd5_program.c8
-rw-r--r--src/gallium/drivers/freedreno/a5xx/fd5_program.h2
4 files changed, 9 insertions, 31 deletions
diff --git a/src/freedreno/ci/freedreno-a530-fails.txt b/src/freedreno/ci/freedreno-a530-fails.txt
index 7ad79916095..e9346ea2a00 100644
--- a/src/freedreno/ci/freedreno-a530-fails.txt
+++ b/src/freedreno/ci/freedreno-a530-fails.txt
@@ -561,17 +561,6 @@ spec@ext_render_snorm@render@format 0x8f95 read fail,Fail
spec@ext_render_snorm@render@format 0x8f97 read fail,Fail
spec@ext_transform_feedback2@draw-auto,Fail
-# Probably regressed with !14643
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance,Fail
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance[1]-no-subscript,Fail
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance[2]-no-subscript,Fail
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance[3]-no-subscript,Fail
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance[4]-no-subscript,Fail
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance[5]-no-subscript,Fail
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance[6]-no-subscript,Fail
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance[7]-no-subscript,Fail
-spec@ext_transform_feedback@builtin-varyings gl_clipdistance[8]-no-subscript,Fail
-
spec@ext_transform_feedback@generatemipmap prims_generated,Fail
spec@ext_transform_feedback@immediate-reuse,Fail
spec@ext_transform_feedback@immediate-reuse-index-buffer,Fail
@@ -627,23 +616,6 @@ spec@ext_transform_feedback@tessellation triangles wireframe,Fail
spec@glsl-1.10@execution@temp-array-indexing@glsl-fs-giant-temp-array,Fail
spec@glsl-1.10@execution@temp-array-indexing@glsl-vs-giant-temp-array,Fail
-spec@glsl-1.20@execution@fs-outerproduct-const-mat3,Fail
-
-spec@glsl-1.30@execution@built-in-functions@fs-op-assign-rshift-uvec2-uint,Fail
-spec@glsl-1.30@execution@built-in-functions@vs-op-assign-div-uvec2-uint,Fail
-spec@glsl-1.30@execution@interpolation@interpolation-flat-other-flat-fixed,Fail
-
-spec@glsl-1.10@execution@vec4-vector-indexing@glsl-fs-vec4-indexing-2,Fail
-
-# Probably regressed with !14643
-# msm 900000.mdss: [drm:a5xx_irq] *ERROR* gpu fault ring 0 fence 13b4d status C10001C3 rb 1872/1872 ib1 000000000105F000/0000 ib2 000000000105E000/0000
-# msm 900000.mdss: [drm:recover_worker] *ERROR* A530: hangcheck recover!
-# msm 900000.mdss: [drm:recover_worker] *ERROR* A530: offending task: shader_run:sq0 (/piglit/bin/shader_runner tests/spec/glsl-1.20/execution/clipping/vs-clip-vertex-enables.shader_test -auto -fbo)"
-spec@glsl-1.20@execution@clipping@fixed-clip-enables,Fail
-spec@glsl-1.20@execution@clipping@vs-clip-vertex-enables,Fail
-spec@glsl-1.30@execution@clipping@vs-clip-distance-enables,Fail
-
-
spec@glsl-1.30@execution@texelfetch fs sampler3d 1x129x9-98x129x9,Fail
spec@glsl-1.30@execution@texelfetch fs sampler3d 98x129x1-98x129x9,Fail
spec@glsl-1.30@execution@texelfetch fs sampler3d 98x1x9-98x129x9,Fail
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_emit.c b/src/gallium/drivers/freedreno/a5xx/fd5_emit.c
index 7f237f5da01..5886645e497 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_emit.c
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_emit.c
@@ -641,7 +641,7 @@ fd5_emit_state(struct fd_context *ctx, struct fd_ringbuffer *ring,
OUT_RING(ring, A5XX_GRAS_CL_VPORT_ZSCALE_0(vp->scale[2]));
}
- if (dirty & (FD_DIRTY_PROG | FD_DIRTY_RASTERIZER_CLIP_PLANE_ENABLE))
+ if (dirty & FD_DIRTY_PROG)
fd5_program_emit(ctx, ring, emit);
if (dirty & FD_DIRTY_RASTERIZER) {
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_program.c b/src/gallium/drivers/freedreno/a5xx/fd5_program.c
index fda5eb25bf4..245e3e538dc 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_program.c
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_program.c
@@ -254,7 +254,13 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
cull_mask = s[VS].v->cull_mask;
uint8_t clip_cull_mask = clip_mask | cull_mask;
- clip_mask &= ctx->rasterizer->clip_plane_enable;
+ /* Unlike a6xx, we don't factor the rasterizer's clip enables in here. It's
+ * already handled by the frontend by storing 0.0 to the clipdist in the
+ * shader variant (using either nir_lower_clip_disable for clip distances
+ * from the source shader, or nir_lower_clip_vs for user clip planes).
+ * Masking the disabled clipdists off causes GPU hangs in tests like
+ * spec@glsl-1.20@execution@clipping@vs-clip-vertex-enables.
+ */
fssz = (s[FS].i->double_threadsize) ? FOUR_QUADS : TWO_QUADS;
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_program.h b/src/gallium/drivers/freedreno/a5xx/fd5_program.h
index bc31c74cfa3..59c499e6dfd 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_program.h
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_program.h
@@ -52,7 +52,7 @@ void fd5_emit_shader(struct fd_ringbuffer *ring,
const struct ir3_shader_variant *so);
void fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
- struct fd5_emit *emit) in_dt;
+ struct fd5_emit *emit);
void fd5_prog_init(struct pipe_context *pctx);