zink: only reset zink_resource::so_valid on buffer rebind
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fri, 22 Oct 2021 18:32:40 +0000 (14:32 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 26 Oct 2021 15:07:22 +0000 (15:07 +0000)
otherwise this is going to randomly modify some image properties

cc: mesa-stable

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13490>

src/gallium/drivers/zink/zink_context.c

index 0ecfd85..b2ecb04 100644 (file)
@@ -3919,12 +3919,13 @@ rebind_image(struct zink_context *ctx, struct zink_resource *res)
 bool
 zink_resource_rebind(struct zink_context *ctx, struct zink_resource *res)
 {
-   /* force counter buffer reset */
-   res->so_valid = false;
    if (!zink_resource_has_binds(res))
-      return true;
-   if (res->base.b.target == PIPE_BUFFER)
+      return 0;
+   if (res->base.b.target == PIPE_BUFFER) {
+      /* force counter buffer reset */
+      res->so_valid = false;
       return rebind_buffer(ctx, res, 0, 0) == res->bind_count[0] + res->bind_count[1];
+   }
    rebind_image(ctx, res);
    return false;
 }