Module: Mesa Branch: main Commit: f46e5f2c0ce9882124dfb0913cd1fce8b140803f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f46e5f2c0ce9882124dfb0913cd1fce8b140803f
Author: Mike Blumenkrantz <[email protected]> Date: Fri Mar 31 17:08:32 2023 -0400 zink: use intermediate variable for separate shader descriptor update loop no functional changes Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22671> --- src/gallium/drivers/zink/zink_descriptors.c | 35 +++++++++++++++-------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/gallium/drivers/zink/zink_descriptors.c b/src/gallium/drivers/zink/zink_descriptors.c index a4814dc9f4e..9c9e8eac55d 100644 --- a/src/gallium/drivers/zink/zink_descriptors.c +++ b/src/gallium/drivers/zink/zink_descriptors.c @@ -1083,31 +1083,32 @@ update_separable(struct zink_context *ctx, struct zink_program *pg) zink_batch_bind_db(ctx); for (unsigned j = 0; j < pg->num_dsl; j++) { - if (!shaders[j]->precompile.dsl) + struct zink_shader *zs = shaders[j]; + if (!zs->precompile.dsl) continue; uint64_t offset = bs->dd.db_offset; - assert(bs->dd.db->base.b.width0 > bs->dd.db_offset + shaders[j]->precompile.db_size); - for (unsigned i = 0; i < shaders[j]->precompile.num_bindings; i++) { - info.type = shaders[j]->precompile.bindings[i].descriptorType; - uint64_t desc_offset = offset + shaders[j]->precompile.db_offset[i]; + assert(bs->dd.db->base.b.width0 > bs->dd.db_offset + zs->precompile.db_size); + for (unsigned i = 0; i < zs->precompile.num_bindings; i++) { + info.type = zs->precompile.bindings[i].descriptorType; + uint64_t desc_offset = offset + zs->precompile.db_offset[i]; if (screen->info.db_props.combinedImageSamplerDescriptorSingleArray || - shaders[j]->precompile.bindings[i].descriptorType != VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER || - shaders[j]->precompile.bindings[i].descriptorCount == 1) { - for (unsigned k = 0; k < shaders[j]->precompile.bindings[i].descriptorCount; k++) { + zs->precompile.bindings[i].descriptorType != VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER || + zs->precompile.bindings[i].descriptorCount == 1) { + for (unsigned k = 0; k < zs->precompile.bindings[i].descriptorCount; k++) { /* VkDescriptorDataEXT is a union of pointers; the member doesn't matter */ - info.data.pSampler = (void*)(((uint8_t*)ctx) + shaders[j]->precompile.db_template[i].offset + k * shaders[j]->precompile.db_template[i].stride); - VKSCR(GetDescriptorEXT)(screen->dev, &info, shaders[j]->precompile.db_template[i].db_size, bs->dd.db_map + desc_offset + k * shaders[j]->precompile.db_template[i].db_size); + info.data.pSampler = (void*)(((uint8_t*)ctx) + zs->precompile.db_template[i].offset + k * zs->precompile.db_template[i].stride); + VKSCR(GetDescriptorEXT)(screen->dev, &info, zs->precompile.db_template[i].db_size, bs->dd.db_map + desc_offset + k * zs->precompile.db_template[i].db_size); } } else { - assert(shaders[j]->precompile.bindings[i].descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER); + assert(zs->precompile.bindings[i].descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER); char buf[1024]; uint8_t *db = bs->dd.db_map + desc_offset; - uint8_t *samplers = db + shaders[j]->precompile.bindings[i].descriptorCount * screen->info.db_props.sampledImageDescriptorSize; - for (unsigned k = 0; k < shaders[j]->precompile.bindings[i].descriptorCount; k++) { + uint8_t *samplers = db + zs->precompile.bindings[i].descriptorCount * screen->info.db_props.sampledImageDescriptorSize; + for (unsigned k = 0; k < zs->precompile.bindings[i].descriptorCount; k++) { /* VkDescriptorDataEXT is a union of pointers; the member doesn't matter */ - info.data.pSampler = (void*)(((uint8_t*)ctx) + shaders[j]->precompile.db_template[i].offset + - k * shaders[j]->precompile.db_template[i].stride); - VKSCR(GetDescriptorEXT)(screen->dev, &info, shaders[j]->precompile.db_template[i].db_size, buf); + info.data.pSampler = (void*)(((uint8_t*)ctx) + zs->precompile.db_template[i].offset + + k * zs->precompile.db_template[i].stride); + VKSCR(GetDescriptorEXT)(screen->dev, &info, zs->precompile.db_template[i].db_size, buf); /* drivers that don't support combinedImageSamplerDescriptorSingleArray must have sampler arrays written in memory as * * | array_of_samplers[] | array_of_sampled_images[] | @@ -1122,7 +1123,7 @@ update_separable(struct zink_context *ctx, struct zink_program *pg) } } bs->dd.cur_db_offset[use_buffer] = bs->dd.db_offset; - bs->dd.db_offset += shaders[j]->precompile.db_size; + bs->dd.db_offset += zs->precompile.db_size; VKCTX(CmdSetDescriptorBufferOffsetsEXT)(bs->cmdbuf, VK_PIPELINE_BIND_POINT_GRAPHICS, pg->layout, j, 1, &use_buffer, &offset); } }
