v3d: Stop clearing the OQ state at the end of the job.
authorEric Anholt <eric@anholt.net>
Thu, 13 Sep 2018 19:59:13 +0000 (12:59 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 17 Sep 2018 23:35:45 +0000 (16:35 -0700)
Ever since we added OQ support, we've been clearing OQ state at the start
of the job anyway.  We're intentionally breaking old-and-new-driver-mix
systems, because we need to stop using the unvalidated FLUSH_ALL_STATE.

src/gallium/drivers/v3d/v3d_context.h
src/gallium/drivers/v3d/v3dx_emit.c
src/gallium/drivers/v3d/v3dx_job.c

index 20f357ae4a8cc569eaf86059e8715f4705a8e255..70643e000b087e867d7ca5aed0d11ad1f78f8dcd 100644 (file)
@@ -300,13 +300,6 @@ struct v3d_job {
          */
         bool needs_flush;
 
-        /**
-         * Set if there is a nonzero address for OCCLUSION_QUERY_COUNTER.  If
-         * so, we need to disable it and flush before ending the CL, to keep
-         * the next tile from starting with it enabled.
-         */
-        bool oq_enabled;
-
         /**
          * Set if a packet enabling TF has been emitted in the job (V3D 4.x).
          */
index 50f9f60477dc2f64bb184d42ce58900804bee78d..0d14bcf4ddedd7e807e7e16a8ae53f780eb2c51b 100644 (file)
@@ -776,8 +776,7 @@ v3dX(emit_state)(struct pipe_context *pctx)
 
         if (v3d->dirty & VC5_DIRTY_OQ) {
                 cl_emit(&job->bcl, OCCLUSION_QUERY_COUNTER, counter) {
-                        job->oq_enabled = v3d->active_queries && v3d->current_oq;
-                        if (job->oq_enabled) {
+                        if (v3d->active_queries && v3d->current_oq) {
                                 counter.address = cl_address(v3d->current_oq, 0);
                         }
                 }
index e0bd71fcf7791bfc3ef6b623d5acc7a9fdd209ea..997c1b12d3ba49b2a94ffb53e418ca04590810e9 100644 (file)
 void v3dX(bcl_epilogue)(struct v3d_context *v3d, struct v3d_job *job)
 {
                 v3d_cl_ensure_space_with_branch(&job->bcl,
-                                                cl_packet_length(OCCLUSION_QUERY_COUNTER) +
 #if V3D_VERSION >= 41
                                                 cl_packet_length(TRANSFORM_FEEDBACK_SPECS) +
 #endif
                                                 cl_packet_length(FLUSH_ALL_STATE));
 
-                if (job->oq_enabled) {
-                        /* Disable the OQ at the end of the CL, so that the
-                         * draw calls at the start of the CL don't inherit the
-                         * OQ counter.
-                         */
-                        cl_emit(&job->bcl, OCCLUSION_QUERY_COUNTER, counter);
-                }
-
                 /* Disable TF at the end of the CL, so that the TF block
                  * cleans up and finishes before it gets reset by the next
                  * frame's tile binning mode cfg packet. (SWVC5-718).