v98: remove vk{Begin,End}DescriptorPoolUpdate()
Assume VK_DESCRIPTOR_UPDATE_MODE_FASTEST.
Conflicts:
icd/intel/desc.c
include/vulkan.h
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 2895132..d90b1ee 100755
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -562,20 +562,6 @@
return setMap[set];
}
-// Return VK_TRUE if DS Exists and is within an vkBeginDescriptorPoolUpdate() call sequence, otherwise VK_FALSE
-static bool32_t dsUpdateActive(VkDescriptorSet ds)
-{
- // Note, both "get" functions use global mutex so this guy does not
- SET_NODE* pTrav = getSetNode(ds);
- if (pTrav) {
- POOL_NODE* pPool = getPoolNode(pTrav->pool);
- if (pPool) {
- return pPool->updateActive;
- }
- }
- return VK_FALSE;
-}
-
static LAYOUT_NODE* getLayoutNode(const VkDescriptorSetLayout layout) {
loader_platform_thread_lock_mutex(&globalLock);
if (layoutMap.find(layout) == layoutMap.end()) {
@@ -1616,14 +1602,6 @@
return VK_ERROR_UNKNOWN;
}
loader_platform_thread_unlock_mutex(&globalLock);
- for (auto ii=pCB->boundDescriptorSets.begin(); ii != pCB->boundDescriptorSets.end(); ++ii) {
- if (dsUpdateActive(*ii)) {
- char str[1024];
- sprintf(str, "You must call vkEndDescriptorPoolUpdate() before this call to vkQueueSubmit()!");
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, *ii, 0, DRAWSTATE_BINDING_DS_NO_END_UPDATE, "DS", str);
- return VK_ERROR_UNKNOWN;
- }
- }
}
VkResult result = nextTable.QueueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
return result;
@@ -1776,56 +1754,6 @@
return result;
}
-VK_LAYER_EXPORT VkResult VKAPI vkBeginDescriptorPoolUpdate(VkDevice device, VkDescriptorUpdateMode updateMode)
-{
- VkResult result = nextTable.BeginDescriptorPoolUpdate(device, updateMode);
- if (VK_SUCCESS == result) {
- loader_platform_thread_lock_mutex(&globalLock);
- POOL_NODE* pPoolNode = poolMap.begin()->second;
- if (!pPoolNode) {
- char str[1024];
- sprintf(str, "Unable to find pool node");
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, NULL, 0, DRAWSTATE_INTERNAL_ERROR, "DS", str);
- }
- else {
- pPoolNode->updateActive = 1;
- }
- loader_platform_thread_unlock_mutex(&globalLock);
- }
- return result;
-}
-
-VK_LAYER_EXPORT VkResult VKAPI vkEndDescriptorPoolUpdate(VkDevice device, VkCmdBuffer cmd)
-{
- // Perform some initial validation checks
- POOL_NODE* pPoolNode = NULL;
- loader_platform_thread_lock_mutex(&globalLock);
- auto poolEntry = poolMap.begin();
- if (poolEntry == poolMap.end()) {
- char str[1024];
- sprintf(str, "Unable to find pool node");
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, NULL, 0, DRAWSTATE_INTERNAL_ERROR, "DS", str);
- loader_platform_thread_unlock_mutex(&globalLock);
- return VK_ERROR_UNKNOWN;
- }
- else {
- pPoolNode = poolEntry->second;
- if (!pPoolNode->updateActive) {
- char str[1024];
- sprintf(str, "You must call vkBeginDescriptorPoolUpdate() before this call to vkEndDescriptorPoolUpdate()!");
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, NULL, 0, DRAWSTATE_DS_END_WITHOUT_BEGIN, "DS", str);
- loader_platform_thread_unlock_mutex(&globalLock);
- return VK_ERROR_UNKNOWN;
- }
- }
- loader_platform_thread_unlock_mutex(&globalLock);
- VkResult result = nextTable.EndDescriptorPoolUpdate(device, cmd);
- if (VK_SUCCESS == result) {
- pPoolNode->updateActive = 0;
- }
- return result;
-}
-
VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool)
{
VkResult result = nextTable.CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
@@ -1851,7 +1779,6 @@
memcpy((void*)pNewNode->createInfo.pTypeCount, pCreateInfo->pTypeCount, typeCountSize);
}
pNewNode->poolUsage = poolUsage;
- pNewNode->updateActive = 0;
pNewNode->maxSets = maxSets;
pNewNode->pool = *pDescriptorPool;
poolMap[*pDescriptorPool] = pNewNode;
@@ -1935,16 +1862,10 @@
VK_LAYER_EXPORT void VKAPI vkUpdateDescriptors(VkDevice device, VkDescriptorSet descriptorSet, uint32_t updateCount, const void** ppUpdateArray)
{
SET_NODE* pSet = getSetNode(descriptorSet);
- if (!dsUpdateActive(descriptorSet)) {
- char str[1024];
- sprintf(str, "You must call vkBeginDescriptorPoolUpdate() before this call to vkUpdateDescriptors()!");
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, descriptorSet, 0, DRAWSTATE_UPDATE_WITHOUT_BEGIN, "DS", str);
- }
- else {
- // pUpdateChain is an array of VK_UPDATE_* struct ptrs defining the mappings for the descriptors
- if (dsUpdate(descriptorSet, updateCount, ppUpdateArray)) {
- nextTable.UpdateDescriptors(device, descriptorSet, updateCount, ppUpdateArray);
- }
+
+ // pUpdateChain is an array of VK_UPDATE_* struct ptrs defining the mappings for the descriptors
+ if (dsUpdate(descriptorSet, updateCount, ppUpdateArray)) {
+ nextTable.UpdateDescriptors(device, descriptorSet, updateCount, ppUpdateArray);
}
}
@@ -2832,10 +2753,6 @@
return (void*) vkCreateDescriptorSetLayout;
if (!strcmp(funcName, "vkCreatePipelineLayout"))
return (void*) vkCreatePipelineLayout;
- if (!strcmp(funcName, "vkBeginDescriptorPoolUpdate"))
- return (void*) vkBeginDescriptorPoolUpdate;
- if (!strcmp(funcName, "vkEndDescriptorPoolUpdate"))
- return (void*) vkEndDescriptorPoolUpdate;
if (!strcmp(funcName, "vkCreateDescriptorPool"))
return (void*) vkCreateDescriptorPool;
if (!strcmp(funcName, "vkResetDescriptorPool"))