From 381e92e811876b9fed2ab42a225ae92ccdad1bad Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 14 Sep 2020 13:37:05 -0400 Subject: [PATCH] zink: move samplerview referencing around in update_descriptors() no functional changes Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_draw.c | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index a0b31338ef8..18114ce4c38 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -548,22 +548,6 @@ update_descriptors(struct zink_context *ctx, struct zink_screen *screen, bool is } assert(desc_set != VK_NULL_HANDLE); - for (int i = 0; i < num_stages; i++) { - struct zink_shader *shader = stages[i]; - if (!shader) - continue; - enum pipe_shader_type stage = pipe_shader_type_from_mesa(shader->nir->info.stage); - - for (int j = 0; j < shader->num_bindings; j++) { - int index = shader->bindings[j].index; - if (shader->bindings[j].type != VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER) { - struct zink_sampler_view *sampler_view = zink_sampler_view(ctx->sampler_views[stage][index]); - if (sampler_view) - zink_batch_reference_sampler_view(batch, sampler_view); - } - } - } - unsigned check_flush_id = is_compute ? 0 : ZINK_COMPUTE_BATCH_ID; bool need_flush = false; if (num_wds > 0) { @@ -587,6 +571,22 @@ update_descriptors(struct zink_context *ctx, struct zink_screen *screen, bool is else vkCmdBindDescriptorSets(batch->cmdbuf, VK_PIPELINE_BIND_POINT_GRAPHICS, ctx->curr_program->layout, 0, 1, &desc_set, 0, NULL); + + for (int i = 0; i < num_stages; i++) { + struct zink_shader *shader = stages[i]; + if (!shader) + continue; + enum pipe_shader_type stage = pipe_shader_type_from_mesa(shader->nir->info.stage); + + for (int j = 0; j < shader->num_bindings; j++) { + int index = shader->bindings[j].index; + if (shader->bindings[j].type != VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER) { + struct zink_sampler_view *sampler_view = zink_sampler_view(ctx->sampler_views[stage][index]); + if (sampler_view) + zink_batch_reference_sampler_view(batch, sampler_view); + } + } + } if (!need_flush) return;