Module: Mesa
Branch: main
Commit: 06816cccb9eb9276158b062ef9c3a64ec0962da5
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=06816cccb9eb9276158b062ef9c3a64ec0962da5

Author: Mike Blumenkrantz <[email protected]>
Date:   Thu Oct  5 12:56:10 2023 -0400

zink: don't check submit count for unflushed usage

unflushed usage is unflushed regardless of the submit count and is
critical for detecting multi-context synchronization

fixes Wolfenstein: The New Order load screen deadlock

Fixes: db12b881c7f ("zink: track/check submit info on resource batch usage")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25572>

---

 src/gallium/drivers/zink/zink_bo.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_bo.h 
b/src/gallium/drivers/zink/zink_bo.h
index 3ee2ebd7211..d017107f23a 100644
--- a/src/gallium/drivers/zink/zink_bo.h
+++ b/src/gallium/drivers/zink/zink_bo.h
@@ -145,14 +145,15 @@ zink_bo_commit(struct zink_screen *screen, struct 
zink_resource *res, unsigned l
 static ALWAYS_INLINE bool
 zink_bo_has_unflushed_usage(const struct zink_bo *bo)
 {
-   return (zink_batch_usage_is_unflushed(bo->reads.u) && 
bo->reads.submit_count == bo->reads.u->submit_count) ||
-          (zink_batch_usage_is_unflushed(bo->writes.u) && 
bo->writes.submit_count == bo->writes.u->submit_count);
+   return zink_batch_usage_is_unflushed(bo->reads.u) ||
+          zink_batch_usage_is_unflushed(bo->writes.u);
 }
 
 static ALWAYS_INLINE bool
 zink_bo_has_usage(const struct zink_bo *bo)
 {
-   return (zink_batch_usage_exists(bo->reads.u) && bo->reads.submit_count == 
bo->reads.u->submit_count) ||
+   return zink_bo_has_unflushed_usage(bo) ||
+          (zink_batch_usage_exists(bo->reads.u) && bo->reads.submit_count == 
bo->reads.u->submit_count) ||
           (zink_batch_usage_exists(bo->writes.u) && bo->writes.submit_count == 
bo->writes.u->submit_count);
 }
 

Reply via email to