radv: Only look at pImmutableSamples if the descriptor has a sampler.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tue, 22 Jan 2019 21:29:26 +0000 (22:29 +0100)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Wed, 6 Feb 2019 21:35:32 +0000 (22:35 +0100)
Equivalent of ANV patch c7f4a2867ce492d78c1f8e2870c0a593d280572d

CC: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_descriptor_set.c

index cebe06aa07898d9e788e566bdab440bd36d1b89d..e47ae6ad67a9311bfd7689dd820b01728c75c557 100644 (file)
@@ -84,7 +84,9 @@ VkResult radv_CreateDescriptorSetLayout(
        uint32_t immutable_sampler_count = 0;
        for (uint32_t j = 0; j < pCreateInfo->bindingCount; j++) {
                max_binding = MAX2(max_binding, pCreateInfo->pBindings[j].binding);
-               if (pCreateInfo->pBindings[j].pImmutableSamplers)
+               if ((pCreateInfo->pBindings[j].descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER ||
+                    pCreateInfo->pBindings[j].descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER) &&
+                    pCreateInfo->pBindings[j].pImmutableSamplers)
                        immutable_sampler_count += pCreateInfo->pBindings[j].descriptorCount;
        }
 
@@ -182,7 +184,9 @@ VkResult radv_CreateDescriptorSetLayout(
                        set_layout->has_variable_descriptors = true;
                }
 
-               if (binding->pImmutableSamplers) {
+               if ((binding->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER ||
+                    binding->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER) &&
+                   binding->pImmutableSamplers) {
                        set_layout->binding[b].immutable_samplers_offset = samplers_offset;
                        set_layout->binding[b].immutable_samplers_equal =
                                has_equal_immutable_samplers(binding->pImmutableSamplers, binding->descriptorCount);