From cf92aa46e0caf0ecf5f6ae0d5b88f55cfbc9bdc4 Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Wed, 16 Sep 2015 16:12:45 -0600 Subject: Bug 14644 - add poolUsage/maxSets to VkDescriptorPoolCreateInfo Bug 14644 - vkCreateDescriptorPool should have poolUsage/maxSets as part of VkDescriptorPoolCreateInfo merge request #342 --- demos/cube.c | 3 ++- demos/tri.c | 3 ++- icd/nulldrv/nulldrv.c | 12 ++++-------- include/vulkan.h | 8 ++++---- layers/draw_state.cpp | 8 ++++---- layers/param_checker.cpp | 7 +++---- loader/trampoline.c | 4 ++-- vulkan.py | 2 -- 8 files changed, 21 insertions(+), 26 deletions(-) diff --git a/demos/cube.c b/demos/cube.c index aa743355..49eb5835 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -1775,13 +1775,14 @@ static void demo_prepare_descriptor_pool(struct demo *demo) const VkDescriptorPoolCreateInfo descriptor_pool = { .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, .pNext = NULL, + .poolUsage = VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT, + .maxSets = 1, .count = 2, .pTypeCount = type_counts, }; VkResult U_ASSERT_ONLY err; err = vkCreateDescriptorPool(demo->device, - VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT, 1, &descriptor_pool, &demo->desc_pool); assert(!err); } diff --git a/demos/tri.c b/demos/tri.c index 57661395..2f6b81e8 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -1415,13 +1415,14 @@ static void demo_prepare_descriptor_pool(struct demo *demo) const VkDescriptorPoolCreateInfo descriptor_pool = { .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, .pNext = NULL, + .poolUsage = VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT, + .maxSets = 1, .count = 1, .pTypeCount = &type_count, }; VkResult U_ASSERT_ONLY err; err = vkCreateDescriptorPool(demo->device, - VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT, 1, &descriptor_pool, &demo->desc_pool); assert(!err); } diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c index bb67967b..12015e39 100644 --- a/icd/nulldrv/nulldrv.c +++ b/icd/nulldrv/nulldrv.c @@ -610,8 +610,6 @@ static VkResult nulldrv_cmd_create(struct nulldrv_dev *dev, } static VkResult nulldrv_desc_pool_create(struct nulldrv_dev *dev, - VkDescriptorPoolUsage usage, - uint32_t max_sets, const VkDescriptorPoolCreateInfo *info, struct nulldrv_desc_pool **pool_ret) { @@ -2273,16 +2271,14 @@ ICD_EXPORT void VKAPI vkDestroyPipelineLayout( } ICD_EXPORT VkResult VKAPI vkCreateDescriptorPool( - VkDevice device, - VkDescriptorPoolUsage poolUsage, - uint32_t maxSets, - const VkDescriptorPoolCreateInfo* pCreateInfo, - VkDescriptorPool* pDescriptorPool) + VkDevice device, + const VkDescriptorPoolCreateInfo* pCreateInfo, + VkDescriptorPool* pDescriptorPool) { NULLDRV_LOG_FUNC; struct nulldrv_dev *dev = nulldrv_dev(device); - return nulldrv_desc_pool_create(dev, poolUsage, maxSets, pCreateInfo, + return nulldrv_desc_pool_create(dev, pCreateInfo, (struct nulldrv_desc_pool **) pDescriptorPool); } diff --git a/include/vulkan.h b/include/vulkan.h index 25d25eec..e63841fd 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -41,7 +41,7 @@ extern "C" { ((major << 22) | (minor << 12) | patch) // Vulkan API version supported by this file -#define VK_API_VERSION VK_MAKE_VERSION(0, 168, 0) +#define VK_API_VERSION VK_MAKE_VERSION(0, 169, 0) #if defined(__cplusplus) && (_MSC_VER >= 1800 || __cplusplus >= 201103L) @@ -1763,6 +1763,8 @@ typedef struct { typedef struct { VkStructureType sType; const void* pNext; + VkDescriptorPoolUsage poolUsage; + uint32_t maxSets; uint32_t count; const VkDescriptorTypeCount* pTypeCount; } VkDescriptorPoolCreateInfo; @@ -2175,7 +2177,7 @@ typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCr typedef void (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler); typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout); typedef void (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout); -typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); +typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool); typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool); typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets); @@ -2651,8 +2653,6 @@ void VKAPI vkDestroyDescriptorSetLayout( VkResult VKAPI vkCreateDescriptorPool( VkDevice device, - VkDescriptorPoolUsage poolUsage, - uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index 172260eb..78304fb4 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -1840,9 +1840,9 @@ VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCre return result; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) +VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) { - VkResult result = get_dispatch_table(draw_state_device_table_map, device)->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool); + VkResult result = get_dispatch_table(draw_state_device_table_map, device)->CreateDescriptorPool(device, pCreateInfo, pDescriptorPool); if (VK_SUCCESS == result) { // Insert this pool into Global Pool LL at head if (log_msg(mdd(device), VK_DBG_REPORT_INFO_BIT, VK_OBJECT_TYPE_DESCRIPTOR_POOL, (*pDescriptorPool).handle, 0, DRAWSTATE_OUT_OF_MEMORY, "DS", @@ -1863,8 +1863,8 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescrip pNewNode->createInfo.pTypeCount = new VkDescriptorTypeCount[typeCountSize]; memcpy((void*)pNewNode->createInfo.pTypeCount, pCreateInfo->pTypeCount, typeCountSize); } - pNewNode->poolUsage = poolUsage; - pNewNode->maxSets = maxSets; + pNewNode->poolUsage = pCreateInfo->poolUsage; + pNewNode->maxSets = pCreateInfo->maxSets; pNewNode->pool = *pDescriptorPool; poolMap[pDescriptorPool->handle] = pNewNode; } diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 583363ae..3b3cc068 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -4741,6 +4741,7 @@ bool PostCreateDescriptorPool( return false; } + /* TODOVV: How do we validate maxSets? Probably belongs in the limits layer? */ if(pDescriptorPool != nullptr) { @@ -4758,16 +4759,14 @@ bool PostCreateDescriptorPool( VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorPool( VkDevice device, - VkDescriptorPoolUsage poolUsage, - uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) { PreCreateDescriptorPool(device, pCreateInfo); - VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool); + VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDescriptorPool(device, pCreateInfo, pDescriptorPool); - PostCreateDescriptorPool(device, poolUsage, maxSets, pDescriptorPool, result); + PostCreateDescriptorPool(device, pCreateInfo->poolUsage, pCreateInfo->maxSets, pDescriptorPool, result); return result; } diff --git a/loader/trampoline.c b/loader/trampoline.c index b24e8225..ee0a4695 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -925,13 +925,13 @@ LOADER_EXPORT void VKAPI vkDestroyDescriptorSetLayout(VkDevice device, VkDescrip disp->DestroyDescriptorSetLayout(device, descriptorSetLayout); } -LOADER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) +LOADER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(device); - return disp->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool); + return disp->CreateDescriptorPool(device, pCreateInfo, pDescriptorPool); } LOADER_EXPORT void VKAPI vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) diff --git a/vulkan.py b/vulkan.py index d6479892..0e5292e2 100755 --- a/vulkan.py +++ b/vulkan.py @@ -618,8 +618,6 @@ core = Extension( Proto("VkResult", "CreateDescriptorPool", [Param("VkDevice", "device"), - Param("VkDescriptorPoolUsage", "poolUsage"), - Param("uint32_t", "maxSets"), Param("const VkDescriptorPoolCreateInfo*", "pCreateInfo"), Param("VkDescriptorPool*", "pDescriptorPool")]), -- cgit v1.2.3