zink: track current queue for resources
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Mon, 19 Sep 2022 19:16:39 +0000 (15:16 -0400)
committerMarge Bot <emma+marge@anholt.net>
Fri, 17 Mar 2023 07:25:04 +0000 (07:25 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21733>

src/gallium/drivers/zink/zink_resource.c
src/gallium/drivers/zink/zink_types.h

index bf58405..5faf37f 100644 (file)
@@ -1202,6 +1202,7 @@ resource_create(struct pipe_screen *pscreen,
       return NULL;
    }
 
+   res->queue = VK_QUEUE_FAMILY_IGNORED;
    res->internal_format = templ->format;
    if (templ->target == PIPE_BUFFER) {
       util_range_init(&res->valid_buffer_range);
@@ -1267,6 +1268,7 @@ resource_create(struct pipe_screen *pscreen,
       res->linear = false;
       res->swapchain = true;
    }
+
    if (!res->obj->host_visible)
       res->base.b.flags |= PIPE_RESOURCE_FLAG_DONT_MAP_DIRECTLY;
    if (res->obj->is_buffer) {
@@ -1327,6 +1329,7 @@ add_resource_bind(struct zink_context *ctx, struct zink_resource *res, unsigned
    staging.all_binds = 0;
    res->layout = VK_IMAGE_LAYOUT_UNDEFINED;
    res->obj = new_obj;
+   res->queue = VK_QUEUE_FAMILY_IGNORED;
    for (unsigned i = 0; i <= res->base.b.last_level; i++) {
       struct pipe_box box = {0, 0, 0,
                              u_minify(res->base.b.width0, i),
@@ -1677,6 +1680,7 @@ invalidate_buffer(struct zink_context *ctx, struct zink_resource *res)
    /* this ref must be transferred before rebind or else BOOM */
    zink_batch_reference_resource_move(&ctx->batch, res);
    res->obj = new_obj;
+   res->queue = VK_QUEUE_FAMILY_IGNORED;
    zink_resource_rebind(ctx, res);
    return true;
 }
index c99ca1d..2eee620 100644 (file)
@@ -1182,6 +1182,7 @@ struct zink_resource {
    enum pipe_format internal_format:16;
 
    struct zink_resource_object *obj;
+   uint32_t queue;
    union {
       struct {
          struct util_range valid_buffer_range;