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

Author: Mike Blumenkrantz <michael.blumenkra...@gmail.com>
Date:   Wed Jan 10 10:27:45 2024 -0500

zink: fix buffer rebind early-out check

this was accidentally inverted; the rebind attempt is over if the
number of enacted rebinds >= the expected rebinds

Fixes: c32bcb9a8c2 ("zink: improve handling of buffer rebinds using tc info")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26959>

---

 src/gallium/drivers/zink/zink_context.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_context.c 
b/src/gallium/drivers/zink/zink_context.c
index aa8291e935a..b7fe7224da1 100644
--- a/src/gallium/drivers/zink/zink_context.c
+++ b/src/gallium/drivers/zink/zink_context.c
@@ -4374,7 +4374,7 @@ rebind_buffer(struct zink_context *ctx, struct 
zink_resource *res, uint32_t rebi
       }
       rebind_mask &= ~BITFIELD_BIT(TC_BINDING_STREAMOUT_BUFFER);
    }
-   if (num_rebinds && expected_num_rebinds >= num_rebinds && !rebind_mask)
+   if (expected_num_rebinds && num_rebinds >= expected_num_rebinds && 
!rebind_mask)
       goto end;
 
    if ((rebind_mask & BITFIELD_BIT(TC_BINDING_VERTEX_BUFFER)) || (!rebind_mask 
&& res->vbo_bind_mask)) {
@@ -4389,7 +4389,7 @@ rebind_buffer(struct zink_context *ctx, struct 
zink_resource *res, uint32_t rebi
       rebind_mask &= ~BITFIELD_BIT(TC_BINDING_VERTEX_BUFFER);
       ctx->vertex_buffers_dirty = true;
    }
-   if (num_rebinds && expected_num_rebinds >= num_rebinds && !rebind_mask)
+   if (expected_num_rebinds && num_rebinds >= expected_num_rebinds && 
!rebind_mask)
       goto end;
 
    const uint32_t ubo_mask = rebind_mask ?
@@ -4405,7 +4405,7 @@ rebind_buffer(struct zink_context *ctx, struct 
zink_resource *res, uint32_t rebi
       }
    }
    rebind_mask &= ~BITFIELD_RANGE(TC_BINDING_UBO_VS, MESA_SHADER_STAGES);
-   if (num_rebinds && expected_num_rebinds >= num_rebinds && !rebind_mask)
+   if (expected_num_rebinds && num_rebinds >= expected_num_rebinds && 
!rebind_mask)
       goto end;
 
    const unsigned ssbo_mask = rebind_mask ?
@@ -4422,7 +4422,7 @@ rebind_buffer(struct zink_context *ctx, struct 
zink_resource *res, uint32_t rebi
       }
    }
    rebind_mask &= ~BITFIELD_RANGE(TC_BINDING_SSBO_VS, MESA_SHADER_STAGES);
-   if (num_rebinds && expected_num_rebinds >= num_rebinds && !rebind_mask)
+   if (expected_num_rebinds && num_rebinds >= expected_num_rebinds && 
!rebind_mask)
       goto end;
    const unsigned sampler_mask = rebind_mask ?
                                  rebind_mask & 
BITFIELD_RANGE(TC_BINDING_SAMPLERVIEW_VS, MESA_SHADER_STAGES) :
@@ -4437,7 +4437,7 @@ rebind_buffer(struct zink_context *ctx, struct 
zink_resource *res, uint32_t rebi
       }
    }
    rebind_mask &= ~BITFIELD_RANGE(TC_BINDING_SAMPLERVIEW_VS, 
MESA_SHADER_STAGES);
-   if (num_rebinds && expected_num_rebinds >= num_rebinds && !rebind_mask)
+   if (expected_num_rebinds && num_rebinds >= expected_num_rebinds && 
!rebind_mask)
       goto end;
 
    const unsigned image_mask = rebind_mask ?

Reply via email to