Module: Mesa Branch: main Commit: 892eae9af0443ded1f42250bd1b01c30a1642edb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=892eae9af0443ded1f42250bd1b01c30a1642edb
Author: Mike Blumenkrantz <[email protected]> Date: Thu Feb 9 15:20:27 2023 -0500 zink: rename some variables in zink_set_shader_images() this is more consistent with set_sampler_views Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21229> --- src/gallium/drivers/zink/zink_context.c | 87 +++++++++++++++++---------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index e9d3898560c..d43bfbc10a4 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -1755,7 +1755,7 @@ create_image_surface(struct zink_context *ctx, const struct pipe_image_view *vie static void zink_set_shader_images(struct pipe_context *pctx, - gl_shader_stage p_stage, + gl_shader_stage shader_type, unsigned start_slot, unsigned count, unsigned unbind_num_trailing_slots, const struct pipe_image_view *images) @@ -1763,91 +1763,92 @@ zink_set_shader_images(struct pipe_context *pctx, struct zink_context *ctx = zink_context(pctx); bool update = false; for (unsigned i = 0; i < count; i++) { - struct zink_image_view *image_view = &ctx->image_views[p_stage][start_slot + i]; - if (images && images[i].resource) { - struct zink_resource *res = zink_resource(images[i].resource); + struct zink_image_view *a = &ctx->image_views[shader_type][start_slot + i]; + const struct pipe_image_view *b = images ? &images[i] : NULL; + if (b && b->resource) { + struct zink_resource *res = zink_resource(b->resource); if (!zink_resource_object_init_storage(ctx, res)) { debug_printf("couldn't create storage image!"); continue; } /* no refs */ VkAccessFlags access = 0; - if (images[i].access & PIPE_IMAGE_ACCESS_WRITE) { - res->write_bind_count[p_stage == MESA_SHADER_COMPUTE]++; + if (b->access & PIPE_IMAGE_ACCESS_WRITE) { + res->write_bind_count[shader_type == MESA_SHADER_COMPUTE]++; access |= VK_ACCESS_SHADER_WRITE_BIT; } - if (images[i].access & PIPE_IMAGE_ACCESS_READ) { + if (b->access & PIPE_IMAGE_ACCESS_READ) { access |= VK_ACCESS_SHADER_READ_BIT; } - res->gfx_barrier |= zink_pipeline_flags_from_pipe_stage(p_stage); - res->barrier_access[p_stage == MESA_SHADER_COMPUTE] |= access; - if (images[i].resource->target == PIPE_BUFFER) { + res->gfx_barrier |= zink_pipeline_flags_from_pipe_stage(shader_type); + res->barrier_access[shader_type == MESA_SHADER_COMPUTE] |= access; + if (b->resource->target == PIPE_BUFFER) { if (zink_descriptor_mode == ZINK_DESCRIPTOR_MODE_DB) { if (zink_resource_access_is_write(access)) util_range_add(&res->base.b, &res->valid_buffer_range, - images[i].u.buf.offset, images[i].u.buf.offset + images[i].u.buf.size); - if (image_view->base.format != images[i].format || - memcmp(&image_view->base.u.buf, &images[i].u.buf, sizeof(images[i].u.buf)) || - image_view->base.resource != &res->base.b || - zink_resource(image_view->base.resource)->obj != res->obj) { - update_res_bind_count(ctx, res, p_stage == MESA_SHADER_COMPUTE, false); - res->image_bind_count[p_stage == MESA_SHADER_COMPUTE]++; - unbind_shader_image(ctx, p_stage, start_slot + i); + b->u.buf.offset, b->u.buf.offset + b->u.buf.size); + if (a->base.format != b->format || + memcmp(&a->base.u.buf, &b->u.buf, sizeof(b->u.buf)) || + a->base.resource != &res->base.b || + zink_resource(a->base.resource)->obj != res->obj) { + update_res_bind_count(ctx, res, shader_type == MESA_SHADER_COMPUTE, false); + res->image_bind_count[shader_type == MESA_SHADER_COMPUTE]++; + unbind_shader_image(ctx, shader_type, start_slot + i); } - pipe_resource_reference(&image_view->base.resource, images[i].resource); + pipe_resource_reference(&a->base.resource, b->resource); } else { - struct zink_buffer_view *bv = create_image_bufferview(ctx, &images[i]); + struct zink_buffer_view *bv = create_image_bufferview(ctx, b); assert(bv); - if (image_view->buffer_view != bv) { - update_res_bind_count(ctx, res, p_stage == MESA_SHADER_COMPUTE, false); - res->image_bind_count[p_stage == MESA_SHADER_COMPUTE]++; - unbind_shader_image(ctx, p_stage, start_slot + i); + if (a->buffer_view != bv) { + update_res_bind_count(ctx, res, shader_type == MESA_SHADER_COMPUTE, false); + res->image_bind_count[shader_type == MESA_SHADER_COMPUTE]++; + unbind_shader_image(ctx, shader_type, start_slot + i); } - image_view->buffer_view = bv; + a->buffer_view = bv; } zink_screen(ctx->base.screen)->buffer_barrier(ctx, res, access, res->gfx_barrier); zink_batch_resource_usage_set(&ctx->batch, res, zink_resource_access_is_write(access), true); } else { - struct zink_surface *surface = create_image_surface(ctx, &images[i], p_stage == MESA_SHADER_COMPUTE); + struct zink_surface *surface = create_image_surface(ctx, b, shader_type == MESA_SHADER_COMPUTE); assert(surface); - if (image_view->surface != surface) { - res->image_bind_count[p_stage == MESA_SHADER_COMPUTE]++; - update_res_bind_count(ctx, res, p_stage == MESA_SHADER_COMPUTE, false); - unbind_shader_image(ctx, p_stage, start_slot + i); - image_view->surface = surface; + if (a->surface != surface) { + res->image_bind_count[shader_type == MESA_SHADER_COMPUTE]++; + update_res_bind_count(ctx, res, shader_type == MESA_SHADER_COMPUTE, false); + unbind_shader_image(ctx, shader_type, start_slot + i); + a->surface = surface; } else { /* create_image_surface will always increment ref */ zink_surface_reference(zink_screen(ctx->base.screen), &surface, NULL); } - finalize_image_bind(ctx, res, p_stage == MESA_SHADER_COMPUTE); + finalize_image_bind(ctx, res, shader_type == MESA_SHADER_COMPUTE); zink_batch_resource_usage_set(&ctx->batch, res, zink_resource_access_is_write(access), false); } - memcpy(&image_view->base, images + i, sizeof(struct pipe_image_view)); + memcpy(&a->base, images + i, sizeof(struct pipe_image_view)); update = true; - update_descriptor_state_image(ctx, p_stage, start_slot + i, res); + update_descriptor_state_image(ctx, shader_type, start_slot + i, res); if (zink_resource_access_is_write(access) || !res->obj->is_buffer) res->obj->unordered_read = res->obj->unordered_write = false; else res->obj->unordered_read = false; - res->image_binds[p_stage] |= BITFIELD_BIT(start_slot + i); - } else if (image_view->base.resource) { + res->image_binds[shader_type] |= BITFIELD_BIT(start_slot + i); + } else if (a->base.resource) { update = true; - unbind_shader_image(ctx, p_stage, start_slot + i); - update_descriptor_state_image(ctx, p_stage, start_slot + i, NULL); + unbind_shader_image(ctx, shader_type, start_slot + i); + update_descriptor_state_image(ctx, shader_type, start_slot + i, NULL); } } for (unsigned i = 0; i < unbind_num_trailing_slots; i++) { - update |= !!ctx->image_views[p_stage][start_slot + count + i].base.resource; - unbind_shader_image(ctx, p_stage, start_slot + count + i); - update_descriptor_state_image(ctx, p_stage, start_slot + count + i, NULL); + update |= !!ctx->image_views[shader_type][start_slot + count + i].base.resource; + unbind_shader_image(ctx, shader_type, start_slot + count + i); + update_descriptor_state_image(ctx, shader_type, start_slot + count + i, NULL); } - ctx->di.num_images[p_stage] = start_slot + count; + ctx->di.num_images[shader_type] = start_slot + count; if (update) - zink_context_invalidate_descriptor_state(ctx, p_stage, ZINK_DESCRIPTOR_TYPE_IMAGE, start_slot, count); + zink_context_invalidate_descriptor_state(ctx, shader_type, ZINK_DESCRIPTOR_TYPE_IMAGE, start_slot, count); } ALWAYS_INLINE static void
