Module: Mesa
Branch: master
Commit: 8b6e7d00f0dbc9421e687fb8549fde5e608dbea0
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b6e7d00f0dbc9421e687fb8549fde5e608dbea0

Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Sep 29 15:06:07 2020 -0400

zink: add flag for no-oping fence finish

if a fence hasn't been activated then we don't need to wait on it

Reviewed-by: Dave Airlie <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9067>

---

 src/gallium/drivers/zink/zink_fence.c | 4 ++++
 src/gallium/drivers/zink/zink_fence.h | 1 +
 2 files changed, 5 insertions(+)

diff --git a/src/gallium/drivers/zink/zink_fence.c 
b/src/gallium/drivers/zink/zink_fence.c
index e6f07045cae..a45540201de 100644
--- a/src/gallium/drivers/zink/zink_fence.c
+++ b/src/gallium/drivers/zink/zink_fence.c
@@ -71,6 +71,7 @@ zink_create_fence(struct pipe_screen *pscreen, struct 
zink_batch *batch)
       pipe_resource_reference(&r, pres);
       util_dynarray_append(&ret->resources, struct pipe_resource*, pres);
    }
+   ret->submitted = true;
 
    pipe_reference_init(&ret->reference, 1);
    return ret;
@@ -110,6 +111,8 @@ bool
 zink_fence_finish(struct zink_screen *screen, struct zink_fence *fence,
                   uint64_t timeout_ns)
 {
+   if (!fence->submitted)
+      return true;
    bool success = vkWaitForFences(screen->dev, 1, &fence->fence, VK_TRUE,
                                   timeout_ns) == VK_SUCCESS;
    if (success) {
@@ -128,6 +131,7 @@ zink_fence_finish(struct zink_screen *screen, struct 
zink_fence *fence,
          pipe_resource_reference(pres, NULL);
       }
       util_dynarray_clear(&fence->resources);
+      fence->submitted = false;
    }
    return success;
 }
diff --git a/src/gallium/drivers/zink/zink_fence.h 
b/src/gallium/drivers/zink/zink_fence.h
index 535f5d21260..dddee1c4129 100644
--- a/src/gallium/drivers/zink/zink_fence.h
+++ b/src/gallium/drivers/zink/zink_fence.h
@@ -38,6 +38,7 @@ struct zink_fence {
    VkFence fence;
    struct set *active_queries; /* zink_query objects which were active at some 
point in this batch */
    struct util_dynarray resources;
+   bool submitted;
 };
 
 static inline struct zink_fence *

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to