use dummy descriptor in descriptor pool instead of empty one when there are no unifor...
authorbpkowali <boguslaw.p.kowalik@intel.com>
Tue, 12 Jan 2016 15:44:17 +0000 (16:44 +0100)
committerscygan <slawomir.cygan@intel.com>
Wed, 13 Jan 2016 17:32:58 +0000 (18:32 +0100)
external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp

index 0466d7d..482cdc3 100644 (file)
@@ -977,7 +977,23 @@ void FragmentOutExecutor::execute (const Context& ctx, int numValues, const void
                addUniforms(vkDevice, vk, queueFamilyIndex, memAlloc);
 
                descriptorSetLayout = m_descriptorSetLayoutBuilder.build(vk, vkDevice);
-               descriptorPool = m_descriptorPoolBuilder.build(vk, vkDevice, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
+               if (!m_uniformInfos.empty())
+                       descriptorPool = m_descriptorPoolBuilder.build(vk, vkDevice, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
+               else 
+               {
+                       const VkDescriptorPoolSize                      poolSizeCount   = { vk::VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1 };
+                       const VkDescriptorPoolCreateInfo        createInfo              =
+                       {
+                               VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
+                               DE_NULL,
+                               VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,
+                               1u,
+                               1u,
+                               &poolSizeCount,
+                       };
+
+                       descriptorPool = createDescriptorPool(vk, vkDevice, &createInfo);
+               }
 
                const VkDescriptorSetAllocateInfo allocInfo =
                {