zink: adds refs to user index buffers when tc is not active
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 7 Apr 2022 21:01:00 +0000 (17:01 -0400)
committerMarge Bot <emma+marge@anholt.net>
Thu, 7 Apr 2022 22:10:35 +0000 (22:10 +0000)
there are no ref tricks to abuse in this case, so add our own ref

fixes #6273

cc: mesa-stable

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

src/gallium/drivers/zink/zink_draw.cpp

index 7467220..7dde95a 100644 (file)
@@ -531,7 +531,11 @@ zink_draw(struct pipe_context *pctx,
             debug_printf("util_upload_index_buffer() failed\n");
             return;
          }
-         zink_batch_reference_resource_move(batch, zink_resource(index_buffer));
+         /* this will have extra refs from tc */
+         if (screen->threaded)
+            zink_batch_reference_resource_move(batch, zink_resource(index_buffer));
+         else
+            zink_batch_reference_resource(batch, zink_resource(index_buffer));
       } else {
          index_buffer = dinfo->index.resource;
          zink_batch_reference_resource_rw(batch, zink_resource(index_buffer), false);