summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLionel Landwerlin <[email protected]>2019-10-18 14:50:02 +0300
committerLionel Landwerlin <[email protected]>2019-10-19 13:16:40 +0300
commit3f8f52b241e3f8bf31344f52c2c8faa32b05e804 (patch)
treece4d17d64f4d10789bd933a20c464907cd27c84b
parent1cea76274e6dd4ed671a66d73b5d1eb3ea376b5a (diff)
anv: fix vkUpdateDescriptorSets with inline uniform blocks
With inline uniform blocks descriptor, the meaning of descriptorCount is a number of bytes to copy into the descriptor. Don't try to use that size as an index into the descriptor table. Signed-off-by: Lionel Landwerlin <[email protected]> Fixes: 43f40dc7cb ("anv: Implement VK_EXT_inline_uniform_block") Gitlab: https://gitlab.freedesktop.org/mesa/mesa/issues/1195 Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--src/intel/vulkan/anv_descriptor_set.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c
index 23d6ddede5b..80a34695e08 100644
--- a/src/intel/vulkan/anv_descriptor_set.c
+++ b/src/intel/vulkan/anv_descriptor_set.c
@@ -1470,9 +1470,6 @@ void anv_UpdateDescriptorSets(
&dst->descriptors[dst_layout->descriptor_index];
dst_desc += copy->dstArrayElement;
- for (uint32_t j = 0; j < copy->descriptorCount; j++)
- dst_desc[j] = src_desc[j];
-
if (src_layout->data & ANV_DESCRIPTOR_INLINE_UNIFORM) {
assert(src_layout->data == ANV_DESCRIPTOR_INLINE_UNIFORM);
memcpy(dst->desc_mem.map + dst_layout->descriptor_offset +
@@ -1481,6 +1478,9 @@ void anv_UpdateDescriptorSets(
copy->srcArrayElement,
copy->descriptorCount);
} else {
+ for (uint32_t j = 0; j < copy->descriptorCount; j++)
+ dst_desc[j] = src_desc[j];
+
unsigned desc_size = anv_descriptor_size(src_layout);
if (desc_size > 0) {
assert(desc_size == anv_descriptor_size(dst_layout));