From 15954693fd35d905b650bef4ec01c2dd216bde90 Mon Sep 17 00:00:00 2001 From: Cody Northrop Date: Mon, 3 Aug 2015 12:47:29 -0600 Subject: [PATCH] v139: Bug 14257 - Remove pCount parameter from vkAllocDescriptorSets --- demos/cube.c | 5 ++--- demos/tri.c | 5 ++--- icd/nulldrv/nulldrv.c | 6 +----- include/vulkan.h | 7 +++---- layers/draw_state.cpp | 12 ++++++++---- layers/object_track.h | 7 +++---- layers/param_checker.cpp | 12 +++--------- loader/trampoline.c | 4 ++-- vk-layer-generate.py | 4 +--- vulkan.py | 3 +-- 10 files changed, 26 insertions(+), 39 deletions(-) diff --git a/demos/cube.c b/demos/cube.c index 6b41aff..5ec9683 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -1736,14 +1736,13 @@ static void demo_prepare_descriptor_set(struct demo *demo) VkDescriptorInfo tex_descs[DEMO_TEXTURE_COUNT]; VkWriteDescriptorSet writes[2]; VkResult U_ASSERT_ONLY err; - uint32_t count; uint32_t i; err = vkAllocDescriptorSets(demo->device, demo->desc_pool, VK_DESCRIPTOR_SET_USAGE_STATIC, 1, &demo->desc_layout, - &demo->desc_set, &count); - assert(!err && count == 1); + &demo->desc_set); + assert(!err); memset(&tex_descs, 0, sizeof(tex_descs)); for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { diff --git a/demos/tri.c b/demos/tri.c index 7b3dfb6..397febf 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -1366,14 +1366,13 @@ static void demo_prepare_descriptor_set(struct demo *demo) VkDescriptorInfo tex_descs[DEMO_TEXTURE_COUNT]; VkWriteDescriptorSet write; VkResult U_ASSERT_ONLY err; - uint32_t count; uint32_t i; err = vkAllocDescriptorSets(demo->device, demo->desc_pool, VK_DESCRIPTOR_SET_USAGE_STATIC, 1, &demo->desc_layout, - &demo->desc_set, &count); - assert(!err && count == 1); + &demo->desc_set); + assert(!err); memset(&tex_descs, 0, sizeof(tex_descs)); for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c index 7292af6..9111dcd 100644 --- a/icd/nulldrv/nulldrv.c +++ b/icd/nulldrv/nulldrv.c @@ -2264,8 +2264,7 @@ ICD_EXPORT VkResult VKAPI vkAllocDescriptorSets( VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, - VkDescriptorSet* pDescriptorSets, - uint32_t* pCount) + VkDescriptorSet* pDescriptorSets) { NULLDRV_LOG_FUNC; struct nulldrv_desc_pool *pool = nulldrv_desc_pool(descriptorPool); @@ -2283,9 +2282,6 @@ ICD_EXPORT VkResult VKAPI vkAllocDescriptorSets( break; } - if (pCount) - *pCount = i; - return ret; } diff --git a/include/vulkan.h b/include/vulkan.h index 9877233..9c5e1f7 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, 138, 2) +#define VK_API_VERSION VK_MAKE_VERSION(0, 139, 0) #define VK_DEFINE_HANDLE(obj) typedef struct obj##_T* obj; @@ -2167,7 +2167,7 @@ typedef VkResult (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDe typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); typedef VkResult (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, uint32_t* pCount); +typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets); typedef VkResult (VKAPI *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets); typedef VkResult (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies); typedef VkResult (VKAPI *PFN_vkCreateDynamicViewportState)(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState); @@ -2669,8 +2669,7 @@ VkResult VKAPI vkAllocDescriptorSets( VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, - VkDescriptorSet* pDescriptorSets, - uint32_t* pCount); + VkDescriptorSet* pDescriptorSets); VkResult VKAPI vkFreeDescriptorSets( VkDevice device, diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index a9affaf..e17a36e 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -1864,16 +1864,20 @@ VK_LAYER_EXPORT VkResult VKAPI vkResetDescriptorPool(VkDevice device, VkDescript return result; } -VK_LAYER_EXPORT VkResult VKAPI vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount) +VK_LAYER_EXPORT VkResult VKAPI vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets) { - VkResult result = get_dispatch_table(draw_state_device_table_map, device)->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount); - if ((VK_SUCCESS == result) || (*pCount > 0)) { + VkResult result = get_dispatch_table(draw_state_device_table_map, device)->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets); + if (VK_SUCCESS == result) { POOL_NODE *pPoolNode = getPoolNode(descriptorPool); if (!pPoolNode) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_DESCRIPTOR_POOL, descriptorPool.handle, 0, DRAWSTATE_INVALID_POOL, "DS", "Unable to find pool node for pool %#" PRIxLEAST64 " specified in vkAllocDescriptorSets() call", descriptorPool.handle); } else { - for (uint32_t i = 0; i < *pCount; i++) { + if (count == 0) { + log_msg(mdd(device), VK_DBG_REPORT_INFO_BIT, VK_OBJECT_TYPE_DESCRIPTOR_SET, count, 0, DRAWSTATE_NONE, "DS", + "AllocDescriptorSets called with 0 count"); + } + for (uint32_t i = 0; i < count; i++) { log_msg(mdd(device), VK_DBG_REPORT_INFO_BIT, VK_OBJECT_TYPE_DESCRIPTOR_SET, pDescriptorSets[i].handle, 0, DRAWSTATE_NONE, "DS", "Created Descriptor Set %#" PRIxLEAST64, pDescriptorSets[i].handle); // Create new set node and add to head of pool nodes diff --git a/layers/object_track.h b/layers/object_track.h index ac9c6c1..d9eba5a 100644 --- a/layers/object_track.h +++ b/layers/object_track.h @@ -663,8 +663,7 @@ explicit_AllocDescriptorSets( VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout *pSetLayouts, - VkDescriptorSet *pDescriptorSets, - uint32_t *pCount) + VkDescriptorSet *pDescriptorSets) { loader_platform_thread_lock_mutex(&objLock); validate_object(device, device); @@ -672,10 +671,10 @@ explicit_AllocDescriptorSets( loader_platform_thread_unlock_mutex(&objLock); VkResult result = get_dispatch_table(ObjectTracker_device_table_map, device)->AllocDescriptorSets( - device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount); + device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets); loader_platform_thread_lock_mutex(&objLock); - for (uint32_t i = 0; i < *pCount; i++) { + for (uint32_t i = 0; i < count; i++) { create_obj(device, pDescriptorSets[i], VK_OBJECT_TYPE_DESCRIPTOR_SET); } loader_platform_thread_unlock_mutex(&objLock); diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 8bb5287..3a7c1e6 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -5657,7 +5657,6 @@ bool PostAllocDescriptorSets( VkDescriptorSetUsage setUsage, uint32_t count, VkDescriptorSet* pDescriptorSets, - uint32_t* pCount, VkResult result) { @@ -5675,10 +5674,6 @@ bool PostAllocDescriptorSets( { } - if(pCount != nullptr) - { - } - if(result < VK_SUCCESS) { std::string reason = "vkAllocDescriptorSets parameter, VkResult result, is " + EnumeratorString(result); @@ -5695,14 +5690,13 @@ VK_LAYER_EXPORT VkResult VKAPI vkAllocDescriptorSets( VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, - VkDescriptorSet* pDescriptorSets, - uint32_t* pCount) + VkDescriptorSet* pDescriptorSets) { PreAllocDescriptorSets(device, pSetLayouts); - VkResult result = get_dispatch_table(pc_device_table_map, device)->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount); + VkResult result = get_dispatch_table(pc_device_table_map, device)->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets); - PostAllocDescriptorSets(device, descriptorPool, setUsage, count, pDescriptorSets, pCount, result); + PostAllocDescriptorSets(device, descriptorPool, setUsage, count, pDescriptorSets, result); return result; } diff --git a/loader/trampoline.c b/loader/trampoline.c index 2224ce2..2a236e4 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -960,13 +960,13 @@ LOADER_EXPORT VkResult VKAPI vkResetDescriptorPool(VkDevice device, VkDescriptor return disp->ResetDescriptorPool(device, descriptorPool); } -LOADER_EXPORT VkResult VKAPI vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount) +LOADER_EXPORT VkResult VKAPI vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(device); - return disp->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount); + return disp->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets); } LOADER_EXPORT VkResult VKAPI vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets) diff --git a/vk-layer-generate.py b/vk-layer-generate.py index 899cad9..042da7c 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -867,7 +867,7 @@ class APIDumpSubcommand(Subcommand): sp_param_dict = {} # Store 'index' for struct param to print, or an name of binding "Count" param for array to print create_params = 0 # Num of params at end of function that are created and returned as output values if 'AllocDescriptorSets' in proto.name: - create_params = -2 + create_params = -1 elif 'Create' in proto.name or 'Alloc' in proto.name or 'MapMemory' in proto.name: create_params = -1 if proto.ret != "void": @@ -902,8 +902,6 @@ class APIDumpSubcommand(Subcommand): if prev_count_name != '' and (prev_count_name.replace('Count', '')[1:] in p.name): sp_param_dict[pindex] = prev_count_name prev_count_name = '' - elif 'pDescriptorSets' == p.name and proto.params[-1].name == 'pCount': - sp_param_dict[pindex] = '*pCount' elif vk_helper.is_type(p.ty.strip('*').replace('const ', ''), 'struct'): sp_param_dict[pindex] = 'index' if p.name.endswith('Count'): diff --git a/vulkan.py b/vulkan.py index 71cbe84..ef1b66b 100755 --- a/vulkan.py +++ b/vulkan.py @@ -652,8 +652,7 @@ core = Extension( Param("VkDescriptorSetUsage", "setUsage"), Param("uint32_t", "count"), Param("const VkDescriptorSetLayout*", "pSetLayouts"), - Param("VkDescriptorSet*", "pDescriptorSets"), - Param("uint32_t*", "pCount")]), + Param("VkDescriptorSet*", "pDescriptorSets")]), Proto("VkResult", "FreeDescriptorSets", [Param("VkDevice", "device"), -- 2.7.4