From: Jarkko Pöyry Date: Tue, 28 Jul 2015 18:18:49 +0000 (-0700) Subject: Implement alloc/freeDescriptorSets in NullDriver. X-Git-Tag: upstream/0.1.0~812^2~609^2~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4ed019637dbe432fbf61210cf98a15e719e2c894;p=platform%2Fupstream%2FVK-GL-CTS.git Implement alloc/freeDescriptorSets in NullDriver. Change-Id: I0a5e0965268a07ba09b53d202c2db159eea0f88d --- diff --git a/external/vulkancts/framework/vulkan/vkNullDriver.cpp b/external/vulkancts/framework/vulkan/vkNullDriver.cpp index 5e09761..8844990 100644 --- a/external/vulkancts/framework/vulkan/vkNullDriver.cpp +++ b/external/vulkancts/framework/vulkan/vkNullDriver.cpp @@ -96,6 +96,12 @@ public: DescriptorPool (VkDevice, VkDescriptorPoolUsage, deUint32, const VkDescriptorPoolCreateInfo*) {} }; +class DescriptorSet +{ +public: + DescriptorSet (VkDevice, VkDescriptorPool, VkDescriptorSetUsage, VkDescriptorSetLayout) {} +}; + class Pipeline { public: @@ -283,6 +289,41 @@ VkResult mapMemory (VkDevice, VkDeviceMemory memHandle, VkDeviceSize offset, VkD return VK_SUCCESS; } +VkResult allocDescriptorSets (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, deUint32 count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, deUint32* pCount) +{ + for (deUint32 ndx = 0; ndx < count; ++ndx) + { + try + { + pDescriptorSets[ndx] = VkDescriptorSet((deUint64)(deUintptr)new DescriptorSet(device, descriptorPool, setUsage, pSetLayouts[ndx])); + } + catch (const std::bad_alloc&) + { + *pCount = ndx; + return VK_ERROR_OUT_OF_HOST_MEMORY; + } + catch (VkResult res) + { + *pCount = ndx; + return res; + } + } + + *pCount = count; + return VK_SUCCESS; +} + +VkResult freeDescriptorSets (VkDevice, VkDescriptorPool, deUint32 count, const VkDescriptorSet* pDescriptorSets) +{ + for (deUint32 ndx = 0; ndx < count; ++ndx) + { + // \note: delete cannot fail + delete reinterpret_cast((deUintptr)pDescriptorSets[ndx].getInternal()); + } + + return VK_SUCCESS; +} + #include "vkNullDriverImpl.inl" } // extern "C" diff --git a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl index 67d23b7..31521a3 100644 --- a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl +++ b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl @@ -607,27 +607,6 @@ VkResult resetDescriptorPool (VkDevice device, VkDescriptorPool descriptorPool) return VK_SUCCESS; } -VkResult allocDescriptorSets (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, deUint32 count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, deUint32* pCount) -{ - DE_UNREF(device); - DE_UNREF(descriptorPool); - DE_UNREF(setUsage); - DE_UNREF(count); - DE_UNREF(pSetLayouts); - DE_UNREF(pDescriptorSets); - DE_UNREF(pCount); - return VK_SUCCESS; -} - -VkResult freeDescriptorSets (VkDevice device, VkDescriptorPool descriptorPool, deUint32 count, const VkDescriptorSet* pDescriptorSets) -{ - DE_UNREF(device); - DE_UNREF(descriptorPool); - DE_UNREF(count); - DE_UNREF(pDescriptorSets); - return VK_SUCCESS; -} - VkResult updateDescriptorSets (VkDevice device, deUint32 writeCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 copyCount, const VkCopyDescriptorSet* pDescriptorCopies) { DE_UNREF(device); diff --git a/external/vulkancts/gen_framework.py b/external/vulkancts/gen_framework.py index adabe40..b80703c 100644 --- a/external/vulkancts/gen_framework.py +++ b/external/vulkancts/gen_framework.py @@ -576,7 +576,9 @@ def writeNullDriverImpl (api, filename): "vkGetPhysicalDeviceMemoryProperties", "vkGetBufferMemoryRequirements", "vkGetImageMemoryRequirements", - "vkMapMemory" + "vkMapMemory", + "vkAllocDescriptorSets", + "vkFreeDescriptorSets", ] specialFuncs = [f for f in api.functions if f.name in specialFuncNames] createFuncs = [f for f in api.functions if (f.name[:8] == "vkCreate" or f.name == "vkAllocMemory") and not f in specialFuncs]