freedreno/a6xx: Flush depth at the end of bypass rendering, too.
authorEric Anholt <eric@anholt.net>
Thu, 17 Dec 2020 20:30:16 +0000 (12:30 -0800)
committerMarge Bot <eric+marge@anholt.net>
Fri, 18 Dec 2020 02:22:45 +0000 (02:22 +0000)
We apparently don't have anything else making sure that it's flushed in
between use as a render target and use as a texture source, so bypass-mode
depth texture sampling could get stale data.

Fixes consistent (as far as I could see) failures in FD_MESA_DEBUG=nogmem
on:

dEQP-GLES31.functional.texture.multisample.samples_*.use_texture_depth_2d
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8146>

.gitlab-ci/deqp-freedreno-a630-flakes.txt
src/gallium/drivers/freedreno/a6xx/fd6_gmem.c

index 58c77cb..88ab1c1 100644 (file)
@@ -25,11 +25,6 @@ dEQP-GLES31.functional.ssbo.atomic.compswap.mediump_uint
 # Non-sysmem flakes
 dEQP-VK.pipeline.spec_constant.compute.composite.matrix.mat3x2
 
-# Sysmem flakes
-dEQP-GLES31.functional.texture.multisample.samples_3.use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_4.use_texture_depth_2d_array
-dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw
-
 # Fails NIR_VALIDATE so probably flaky
 dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_nonlocal.workgroup.guard_local.buffer.comp
 
index c7105b0..ed1d3c4 100644 (file)
@@ -1435,6 +1435,7 @@ fd6_emit_sysmem_fini(struct fd_batch *batch)
        fd6_emit_lrz_flush(ring);
 
        fd6_event_write(batch, ring, PC_CCU_FLUSH_COLOR_TS, true);
+       fd6_event_write(batch, ring, PC_CCU_FLUSH_DEPTH_TS, true);
 }
 
 void