intel/blorp: Add a NO_UPDATE_CLEAR_COLOR batch flag
authorNanley Chery <nanley.g.chery@intel.com>
Fri, 27 Apr 2018 00:09:29 +0000 (17:09 -0700)
committerNanley Chery <nanley.g.chery@intel.com>
Thu, 17 May 2018 14:06:42 +0000 (07:06 -0700)
Allow callers to handle updating the indirect clear color buffer
themselves. This can reduce the number of clear color updates in the
case where a caller performs multiple fast clears with the same clear
color.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/blorp/blorp.h
src/intel/blorp/blorp_genX_exec.h

index 4626f2f83c29e9ef3580574276d662e18bb34dd5..f22110bc8401b71915ea3f47f9425d92a8d91781 100644 (file)
@@ -72,6 +72,11 @@ enum blorp_batch_flags {
 
    /* This flag indicates that the blorp call should be predicated. */
    BLORP_BATCH_PREDICATE_ENABLE      = (1 << 1),
+
+   /* This flag indicates that blorp should *not* update the indirect clear
+    * color buffer.
+    */
+   BLORP_BATCH_NO_UPDATE_CLEAR_COLOR = (1 << 2),
 };
 
 struct blorp_batch {
index 593521b95cc35f105eb5301c11af3b42b9536f84..446743b5910e1e1aae60549546bda7ed14edd563 100644 (file)
@@ -1700,8 +1700,10 @@ blorp_update_clear_color(struct blorp_batch *batch,
 static void
 blorp_exec(struct blorp_batch *batch, const struct blorp_params *params)
 {
-   blorp_update_clear_color(batch, &params->dst, params->fast_clear_op);
-   blorp_update_clear_color(batch, &params->depth, params->hiz_op);
+   if (!(batch->flags & BLORP_BATCH_NO_UPDATE_CLEAR_COLOR)) {
+      blorp_update_clear_color(batch, &params->dst, params->fast_clear_op);
+      blorp_update_clear_color(batch, &params->depth, params->hiz_op);
+   }
 
 #if GEN_GEN >= 8
    if (params->hiz_op != ISL_AUX_OP_NONE) {