v3d: Switch from FLUSH_ALL_STATE to FLUSH for ending our bin CLs.
authorEric Anholt <eric@anholt.net>
Thu, 13 Sep 2018 19:56:18 +0000 (12:56 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 17 Sep 2018 23:35:45 +0000 (16:35 -0700)
The HW for FLUSH_ALL_STATE isn't validated, since the closed driver only
uses FLUSH.  Now that we don't have any new state at the end of our bin
CLs, follow their lead.

src/gallium/drivers/v3d/v3dx_job.c

index 997c1b12d3ba49b2a94ffb53e418ca04590810e9..1dbd20b225162416acf1be78b1b5a050d3abd8b7 100644 (file)
@@ -36,7 +36,7 @@ void v3dX(bcl_epilogue)(struct v3d_context *v3d, struct v3d_job *job)
 #if V3D_VERSION >= 41
                                                 cl_packet_length(TRANSFORM_FEEDBACK_SPECS) +
 #endif
-                                                cl_packet_length(FLUSH_ALL_STATE));
+                                                cl_packet_length(FLUSH));
 
                 /* Disable TF at the end of the CL, so that the TF block
                  * cleans up and finishes before it gets reset by the next
@@ -50,10 +50,10 @@ void v3dX(bcl_epilogue)(struct v3d_context *v3d, struct v3d_job *job)
                 }
 #endif /* V3D_VERSION >= 41 */
 
-                /* The FLUSH_ALL emits any unwritten state changes in each
-                 * tile.  We can use this to reset any state that needs to be
-                 * present at the start of the next tile, as we do with
-                 * OCCLUSION_QUERY_COUNTER above.
+                /* We just FLUSH here to tell the HW to cap the bin CLs with a
+                 * return.  Any remaining state changes won't be flushed to
+                 * the bins first -- you would need FLUSH_ALL for that, but
+                 * the HW for hasn't been validated
                  */
-                cl_emit(&job->bcl, FLUSH_ALL_STATE, flush);
+                cl_emit(&job->bcl, FLUSH, flush);
 }