Module: Mesa
Branch: master
Commit: ec60559f97dc13d85fb197e2dd99827e12fff371
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ec60559f97dc13d85fb197e2dd99827e12fff371

Author: Eric Anholt <e...@anholt.net>
Date:   Fri Mar 30 16:39:14 2018 -0700

broadcom/vc5: Emit missing TILE_COORDINATES_IMPLICIT in separate z/s stores.

Fixes a simulator assertion failure in
KHR-GLES3.packed_depth_stencil.blit.depth32f_stencil8

---

 src/gallium/drivers/vc5/vc5_rcl.c | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/vc5/vc5_rcl.c 
b/src/gallium/drivers/vc5/vc5_rcl.c
index 83593a86d2..5ffdfd9ca3 100644
--- a/src/gallium/drivers/vc5/vc5_rcl.c
+++ b/src/gallium/drivers/vc5/vc5_rcl.c
@@ -291,31 +291,42 @@ vc5_rcl_emit_stores(struct vc5_job *job, struct vc5_cl 
*cl)
 
         if (job->resolve & PIPE_CLEAR_DEPTHSTENCIL && job->zsbuf &&
             !(V3D_VERSION < 40 && job->zsbuf->texture->nr_samples <= 1)) {
-                stores_pending &= ~PIPE_CLEAR_DEPTHSTENCIL;
-
                 struct vc5_resource *rsc = vc5_resource(job->zsbuf->texture);
                 if (rsc->separate_stencil) {
                         if (job->resolve & PIPE_CLEAR_DEPTH) {
+                                stores_pending &= ~PIPE_CLEAR_DEPTH;
                                 store_general(job, cl, job->zsbuf, Z,
                                               PIPE_CLEAR_DEPTH,
                                               !stores_pending,
                                               general_color_clear);
+                                if (V3D_VERSION < 40 && stores_pending) {
+                                        cl_emit(cl, TILE_COORDINATES_IMPLICIT,
+                                                coords);
+                                }
                         }
+
                         if (job->resolve & PIPE_CLEAR_STENCIL) {
+                                stores_pending &= ~PIPE_CLEAR_STENCIL;
                                 store_general(job, cl, job->zsbuf, STENCIL,
                                               PIPE_CLEAR_STENCIL,
                                               !stores_pending,
                                               general_color_clear);
+                                if (V3D_VERSION < 40 && stores_pending) {
+                                        cl_emit(cl, TILE_COORDINATES_IMPLICIT,
+                                                coords);
+                                }
                         }
                 } else {
+                        stores_pending &= ~PIPE_CLEAR_DEPTHSTENCIL;
                         store_general(job, cl, job->zsbuf,
                                       zs_buffer_from_pipe_bits(job->resolve),
                                       job->resolve & PIPE_CLEAR_DEPTHSTENCIL,
                                       !stores_pending, general_color_clear);
+                        if (V3D_VERSION < 40 && stores_pending) {
+                                cl_emit(cl, TILE_COORDINATES_IMPLICIT,
+                                        coords);
+                        }
                 }
-
-                if (V3D_VERSION < 40 && stores_pending)
-                        cl_emit(cl, TILE_COORDINATES_IMPLICIT, coords);
         }
 
         if (stores_pending) {

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to