diff options
author | Emma Anholt <emma@anholt.net> | 2023-02-13 13:20:22 -0800 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-02-14 00:16:50 +0000 |
commit | 5c246e21b71a1676705440bce767535dc502d748 (patch) | |
tree | da5f04cc7abfa6c0450d3280c5daf6c5acaa56b4 | |
parent | 509c1f9feac07aca039fdc82e3f216622b2085e1 (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.txt | 28 | ||||
-rw-r--r-- | src/gallium/drivers/freedreno/a5xx/fd5_emit.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/freedreno/a5xx/fd5_program.c | 8 | ||||
-rw-r--r-- | src/gallium/drivers/freedreno/a5xx/fd5_program.h | 2 |
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); |