summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>2019-10-18 14:50:02 +0300
committerDylan Baker <dylan@pnwbakers.com>2019-10-21 08:59:11 -0700
commit425fbe2902ba25df3e969d9410ae0c002f015235 (patch)
tree8ed34a01a24042995c38d856238e11bbd2878178
parent62f9ba1bf2eaad056104ffa63128bf1face4b60d (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 <lionel.g.landwerlin@intel.com> Fixes: 43f40dc7cb ("anv: Implement VK_EXT_inline_uniform_block") Gitlab: https://gitlab.freedesktop.org/mesa/mesa/issues/1195 Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (cherry picked from commit 3f8f52b241e3f8bf31344f52c2c8faa32b05e804)
-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));