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);