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