diff --git a/src/nouveau/vulkan/nvk_descriptor_set.c b/src/nouveau/vulkan/nvk_descriptor_set.c index bc62d640df1..c43fdfba147 100644 --- a/src/nouveau/vulkan/nvk_descriptor_set.c +++ b/src/nouveau/vulkan/nvk_descriptor_set.c @@ -226,8 +226,6 @@ nvk_UpdateDescriptorSets(VkDevice device, const struct nvk_descriptor_set_binding_layout *dst_binding_layout = &dst->layout->binding[copy->dstBinding]; - assert(dst_binding_layout->type == src_binding_layout->type); - if (dst_binding_layout->stride > 0 && src_binding_layout->stride > 0) { for (uint32_t j = 0; j < copy->descriptorCount; j++) { ASSERTED uint32_t dst_max_size, src_max_size; @@ -371,11 +369,9 @@ nvk_CreateDescriptorPool(VkDevice _device, uint32_t max_align = 0; for (unsigned i = 0; i < pCreateInfo->poolSizeCount; ++i) { const VkMutableDescriptorTypeListEXT *type_list = NULL; - if (pCreateInfo->pPoolSizes[i].type == VK_DESCRIPTOR_TYPE_MUTABLE_EXT) { - assert(mutable_info != NULL); - assert(i <= mutable_info->mutableDescriptorTypeListCount); - type_list = &mutable_info->pMutableDescriptorTypeLists[i]; - } + if (pCreateInfo->pPoolSizes[i].type == VK_DESCRIPTOR_TYPE_MUTABLE_EXT && + mutable_info && i < mutable_info->mutableDescriptorTypeListCount) + type_list = &mutable_info->pMutableDescriptorTypeLists[i]; uint32_t stride, align; nvk_descriptor_stride_align_for_type(pCreateInfo->pPoolSizes[i].type, @@ -385,11 +381,9 @@ nvk_CreateDescriptorPool(VkDevice _device, for (unsigned i = 0; i < pCreateInfo->poolSizeCount; ++i) { const VkMutableDescriptorTypeListEXT *type_list = NULL; - if (pCreateInfo->pPoolSizes[i].type == VK_DESCRIPTOR_TYPE_MUTABLE_EXT) { - assert(mutable_info != NULL); - assert(i <= mutable_info->mutableDescriptorTypeListCount); - type_list = &mutable_info->pMutableDescriptorTypeLists[i]; - } + if (pCreateInfo->pPoolSizes[i].type == VK_DESCRIPTOR_TYPE_MUTABLE_EXT && + mutable_info && i < mutable_info->mutableDescriptorTypeListCount) + type_list = &mutable_info->pMutableDescriptorTypeLists[i]; uint32_t stride, align; nvk_descriptor_stride_align_for_type(pCreateInfo->pPoolSizes[i].type, diff --git a/src/nouveau/vulkan/nvk_descriptor_set_layout.c b/src/nouveau/vulkan/nvk_descriptor_set_layout.c index 0b169243f88..f3f5cd0a219 100644 --- a/src/nouveau/vulkan/nvk_descriptor_set_layout.c +++ b/src/nouveau/vulkan/nvk_descriptor_set_layout.c @@ -53,7 +53,9 @@ nvk_descriptor_stride_align_for_type(VkDescriptorType type, case VK_DESCRIPTOR_TYPE_MUTABLE_EXT: *stride = *align = 0; - for (unsigned i = 0; i < type_list->descriptorTypeCount; i++) { + if (type_list == NULL) + *stride = *align = NVK_MAX_DESCRIPTOR_SIZE; + for (unsigned i = 0; type_list && i < type_list->descriptorTypeCount; i++) { /* This shouldn't recurse */ assert(type_list->pDescriptorTypes[i] != VK_DESCRIPTOR_TYPE_MUTABLE_EXT); @@ -172,7 +174,7 @@ nvk_CreateDescriptorSetLayout(VkDevice _device, const VkMutableDescriptorTypeListEXT *type_list = NULL; if (binding->descriptorType == VK_DESCRIPTOR_TYPE_MUTABLE_EXT) { assert(mutable_info != NULL); - assert(info_idx <= mutable_info->mutableDescriptorTypeListCount); + assert(info_idx < mutable_info->mutableDescriptorTypeListCount); type_list = &mutable_info->pMutableDescriptorTypeLists[info_idx]; }