Skip to content
Snippets Groups Projects
Commit 83384760 authored by Dave Airlie's avatar Dave Airlie Committed by Marge Bot
Browse files

lavapipe: fix templated descriptor updates


The template path was buggy but CTS only tested it with Vulkan 1.1 enabled.

It was just missing the dstArrayElement offset.

Fixes: 41f7fa27 ("lavapipe: add support for VK_KHR_descriptor_update_template")
Reviewed-By: default avatarMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <mesa/mesa!9675>
parent a04921d6
No related branches found
No related tags found
No related merge requests found
......@@ -625,11 +625,12 @@ VKAPI_ATTR void VKAPI_CALL lvp_UpdateDescriptorSetWithTemplate(VkDevice _device,
struct lvp_descriptor *desc =
&set->descriptors[bind_layout->descriptor_index];
for (j = 0; j < entry->descriptorCount; ++j) {
unsigned idx = j + entry->dstArrayElement;
switch (entry->descriptorType) {
case VK_DESCRIPTOR_TYPE_SAMPLER: {
LVP_FROM_HANDLE(lvp_sampler, sampler,
*(VkSampler *)pSrc);
desc[j] = (struct lvp_descriptor) {
desc[idx] = (struct lvp_descriptor) {
.type = VK_DESCRIPTOR_TYPE_SAMPLER,
.info.sampler = sampler,
};
......@@ -637,7 +638,7 @@ VKAPI_ATTR void VKAPI_CALL lvp_UpdateDescriptorSetWithTemplate(VkDevice _device,
}
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: {
VkDescriptorImageInfo *info = (VkDescriptorImageInfo *)pSrc;
desc[j] = (struct lvp_descriptor) {
desc[idx] = (struct lvp_descriptor) {
.type = entry->descriptorType,
.info.iview = lvp_image_view_from_handle(info->imageView),
.info.sampler = lvp_sampler_from_handle(info->sampler),
......@@ -649,7 +650,7 @@ VKAPI_ATTR void VKAPI_CALL lvp_UpdateDescriptorSetWithTemplate(VkDevice _device,
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: {
LVP_FROM_HANDLE(lvp_image_view, iview,
((VkDescriptorImageInfo *)pSrc)->imageView);
desc[j] = (struct lvp_descriptor) {
desc[idx] = (struct lvp_descriptor) {
.type = entry->descriptorType,
.info.iview = iview,
};
......@@ -659,7 +660,7 @@ VKAPI_ATTR void VKAPI_CALL lvp_UpdateDescriptorSetWithTemplate(VkDevice _device,
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: {
LVP_FROM_HANDLE(lvp_buffer_view, bview,
*(VkBufferView *)pSrc);
desc[j] = (struct lvp_descriptor) {
desc[idx] = (struct lvp_descriptor) {
.type = entry->descriptorType,
.info.buffer_view = bview,
};
......@@ -671,7 +672,7 @@ VKAPI_ATTR void VKAPI_CALL lvp_UpdateDescriptorSetWithTemplate(VkDevice _device,
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: {
VkDescriptorBufferInfo *info = (VkDescriptorBufferInfo *)pSrc;
desc[j] = (struct lvp_descriptor) {
desc[idx] = (struct lvp_descriptor) {
.type = entry->descriptorType,
.info.offset = info->offset,
.info.buffer = lvp_buffer_from_handle(info->buffer),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment