summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/iris/iris_resource.c
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2019-04-16 13:23:06 -0700
committerKenneth Graunke <[email protected]>2019-04-23 00:24:08 -0700
commit768b17a7ad12fa59de5e4be89029b579a5832baf (patch)
treec1b7b6c99397864020f6869128ed3cf59521db53 /src/gallium/drivers/iris/iris_resource.c
parent5ad0c88dbe3e5805a10d8f1fef9d0cf1bbecdd46 (diff)
iris: Make a resource_is_busy() helper
This checks both "is it busy" and "do we have work queued up for it"?
Diffstat (limited to 'src/gallium/drivers/iris/iris_resource.c')
-rw-r--r--src/gallium/drivers/iris/iris_resource.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index 293f71aa1f9..ddff9296c60 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -878,6 +878,18 @@ iris_resource_get_handle(struct pipe_screen *pscreen,
return false;
}
+static bool
+resource_is_busy(struct iris_context *ice,
+ struct iris_resource *res)
+{
+ bool busy = iris_bo_busy(res->bo);
+
+ for (int i = 0; i < IRIS_BATCH_COUNT; i++)
+ busy |= iris_batch_references(&ice->batches[i], res->bo);
+
+ return busy;
+}
+
static void
iris_invalidate_resource(struct pipe_context *ctx,
struct pipe_resource *resource)
@@ -1331,10 +1343,7 @@ iris_transfer_map(struct pipe_context *ctx,
}
if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
- map_would_stall = iris_bo_busy(res->bo);
-
- for (int i = 0; i < IRIS_BATCH_COUNT; i++)
- map_would_stall |= iris_batch_references(&ice->batches[i], res->bo);
+ map_would_stall = resource_is_busy(ice, res);
if (map_would_stall && (usage & PIPE_TRANSFER_DONTBLOCK) &&
(usage & PIPE_TRANSFER_MAP_DIRECTLY))