iris: add the workaround_bo directly to the batch
authorPaulo Zanoni <paulo.r.zanoni@intel.com>
Mon, 2 Aug 2021 20:32:20 +0000 (13:32 -0700)
committerPaulo Zanoni <paulo.r.zanoni@intel.com>
Wed, 11 Aug 2021 22:04:52 +0000 (15:04 -0700)
Don't use iris_use_pinned_bo(), go directly with add_bo_to_batch(),
skipping every check. This allows us to early return from
iris_use_pinned_bo when the workaround bo is used, saving us the call
to find_validation_entry() which ends up doing nothing except
iterating over every bo in the batch. Also don't bother with
ensure_exec_obj_space() since we just reset the batch and this is the
second BO we're adding to it.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12194>

src/gallium/drivers/iris/iris_batch.c

index 34a40a8..a2ff24b 100644 (file)
@@ -300,11 +300,13 @@ iris_use_pinned_bo(struct iris_batch *batch,
    /* Never mark the workaround BO with EXEC_OBJECT_WRITE.  We don't care
     * about the order of any writes to that buffer, and marking it writable
     * would introduce data dependencies between multiple batches which share
-    * the buffer.
+    * the buffer. It is added directly to the batch using add_bo_to_batch()
+    * during batch reset time.
     */
-   if (bo == batch->screen->workaround_bo) {
-      writable = false;
-   } else if (access < NUM_IRIS_DOMAINS) {
+   if (bo == batch->screen->workaround_bo)
+      return;
+
+   if (access < NUM_IRIS_DOMAINS) {
       assert(batch->sync_region_depth);
       iris_bo_bump_seqno(bo, batch->next_seqno, access);
    }
@@ -417,7 +419,7 @@ iris_batch_reset(struct iris_batch *batch)
    /* Always add the workaround BO, it contains a driver identifier at the
     * beginning quite helpful to debug error states.
     */
-   iris_use_pinned_bo(batch, screen->workaround_bo, false, IRIS_DOMAIN_NONE);
+   add_bo_to_batch(batch, screen->workaround_bo, false);
 
    iris_batch_maybe_noop(batch);
 }