Mesa (main): zink: use new resource batch usage utils for is_resource_busy
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jul 27 00:05:29 UTC 2021
Module: Mesa
Branch: main
Commit: 12417c030b24a88c9b1c7931dc35ab5142458b42
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=12417c030b24a88c9b1c7931dc35ab5142458b42
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Wed Jul 7 09:39:50 2021 -0400
zink: use new resource batch usage utils for is_resource_busy
Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12008>
---
src/gallium/drivers/zink/zink_context.c | 33 ++++++---------------------------
1 file changed, 6 insertions(+), 27 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c
index 3097edd9f87..9df354f9fe4 100644
--- a/src/gallium/drivers/zink/zink_context.c
+++ b/src/gallium/drivers/zink/zink_context.c
@@ -3349,38 +3349,17 @@ zink_context_replace_buffer_storage(struct pipe_context *pctx, struct pipe_resou
zink_resource_rebind(zink_context(pctx), d);
}
-ALWAYS_INLINE static bool
-is_usage_completed(struct zink_screen *screen, const struct zink_batch_usage *u)
-{
- if (!zink_batch_usage_exists(u))
- return true;
- if (zink_batch_usage_is_unflushed(u))
- return false;
- /* check fastpath first */
- if (zink_screen_check_last_finished(screen, u->usage))
- return true;
- /* if we have timelines, do a quick check */
- if (screen->info.have_KHR_timeline_semaphore)
- return zink_screen_timeline_wait(screen, u->usage, 0);
-
- /* otherwise assume busy */
- return false;
-}
-
static bool
zink_context_is_resource_busy(struct pipe_screen *pscreen, struct pipe_resource *pres, unsigned usage)
{
struct zink_screen *screen = zink_screen(pscreen);
struct zink_resource *res = zink_resource(pres);
- const struct zink_batch_usage *reads = NULL, *writes = NULL;
- if (((usage & (PIPE_MAP_READ | PIPE_MAP_WRITE)) == (PIPE_MAP_READ | PIPE_MAP_WRITE)) ||
- usage & PIPE_MAP_WRITE) {
- reads = res->obj->reads;
- writes = res->obj->writes;
- } else if (usage & PIPE_MAP_READ)
- writes = res->obj->writes;
-
- return !is_usage_completed(screen, reads) || !is_usage_completed(screen, writes);
+ uint32_t check_usage = 0;
+ if (usage & PIPE_MAP_READ)
+ check_usage |= ZINK_RESOURCE_ACCESS_WRITE;
+ if (usage & PIPE_MAP_WRITE)
+ check_usage |= ZINK_RESOURCE_ACCESS_RW;
+ return !zink_resource_usage_check_completion(screen, res, check_usage);
}
static void
More information about the mesa-commit
mailing list