aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCourtney Goeltzenleuchter <courtney@LunarG.com>2015-05-01 17:56:13 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-05-04 17:32:41 -0600
commit5446669fdb7655f5cf7c97b1d5e0de3ae2a9e2de (patch)
tree2628730bec26dc7c3dad0633d7ae84cd37eb4cb7
parent2bda8330c5bf332db9b0560ea358af6564116de7 (diff)
downloadusermoji-5446669fdb7655f5cf7c97b1d5e0de3ae2a9e2de.tar.xz
bug 13854: Remove memory references
header: 0.93.0 svn: 30980
-rw-r--r--demos/cube.c27
-rw-r--r--demos/tri.c27
-rw-r--r--demos/vulkaninfo.c2
-rw-r--r--icd/nulldrv/nulldrv.c19
-rw-r--r--include/vkLayer.h2
-rw-r--r--include/vulkan.h36
-rw-r--r--layers/mem_tracker.cpp150
-rw-r--r--layers/param_checker.cpp11
-rwxr-xr-xvk-layer-generate.py2
-rwxr-xr-xvulkan.py10
10 files changed, 12 insertions, 274 deletions
diff --git a/demos/cube.c b/demos/cube.c
index faa9fa17..e9ea5923 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -370,20 +370,6 @@ static void demo_flush_init_cmd(struct demo *demo)
demo->cmd = VK_NULL_HANDLE;
}
-static void demo_add_mem_refs(
- struct demo *demo,
- int num_refs, VkDeviceMemory *mem)
-{
- vkQueueAddMemReferences(demo->queue, num_refs, mem);
-}
-
-static void demo_remove_mem_refs(
- struct demo *demo,
- int num_refs, VkDeviceMemory *mem)
-{
- vkQueueRemoveMemReferences(demo->queue, num_refs, mem);
-}
-
static void demo_set_image_layout(
struct demo *demo,
VkImage image,
@@ -633,8 +619,6 @@ static void demo_prepare_buffers(struct demo *demo)
demo->buffers[i].image = images[i].image;
demo->buffers[i].mem = images[i].memory;
- demo_add_mem_refs(demo, 1, &demo->buffers[i].mem);
-
demo_set_image_layout(demo, demo->buffers[i].image,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
@@ -725,8 +709,6 @@ static void demo_prepare_depth(struct demo *demo)
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
- demo_add_mem_refs(demo, demo->depth.num_mem, demo->depth.mem);
-
/* create image view */
view.image = demo->depth.image;
err = vkCreateDepthStencilView(demo->device, &view,
@@ -1070,16 +1052,12 @@ static void demo_prepare_textures(struct demo *demo)
demo->textures[i].image, VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
1, &copy_region);
- demo_add_mem_refs(demo, staging_texture.num_mem, staging_texture.mem);
- demo_add_mem_refs(demo, demo->textures[i].num_mem, demo->textures[i].mem);
-
demo_set_image_layout(demo, demo->textures[i].image,
VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
demo->textures[i].imageLayout);
demo_flush_init_cmd(demo);
- demo_remove_mem_refs(demo, staging_texture.num_mem, staging_texture.mem);
demo_destroy_texture_image(demo, &staging_texture);
} else {
/* Can't support VK_FORMAT_B8G8R8A8_UNORM !? */
@@ -1206,7 +1184,6 @@ void demo_prepare_cube_data_buffer(struct demo *demo)
i, demo->uniform_data.mem[i], 0);
assert(!err);
}
- demo_add_mem_refs(demo, demo->uniform_data.num_mem, demo->uniform_data.mem);
memset(&view_info, 0, sizeof(view_info));
view_info.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
@@ -2076,7 +2053,6 @@ static void demo_cleanup(struct demo *demo)
vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE_VIEW, demo->textures[i].view);
vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_IMAGE, demo->textures[i].image, 0, VK_NULL_HANDLE, 0);
vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->textures[i].image);
- demo_remove_mem_refs(demo, demo->textures[i].num_mem, demo->textures[i].mem);
for (j = 0; j < demo->textures[i].num_mem; j++)
vkFreeMemory(demo->device, demo->textures[i].mem[j]);
free(demo->textures[i].mem);
@@ -2086,7 +2062,6 @@ static void demo_cleanup(struct demo *demo)
vkDestroyObject(demo->device, VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW, demo->depth.view);
vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_IMAGE, demo->depth.image, 0, VK_NULL_HANDLE, 0);
- demo_remove_mem_refs(demo, demo->depth.num_mem, demo->depth.mem);
vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->depth.image);
for (j = 0; j < demo->depth.num_mem; j++) {
vkFreeMemory(demo->device, demo->depth.mem[j]);
@@ -2095,14 +2070,12 @@ static void demo_cleanup(struct demo *demo)
vkDestroyObject(demo->device, VK_OBJECT_TYPE_BUFFER_VIEW, demo->uniform_data.view);
vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_BUFFER, demo->uniform_data.buf, 0, VK_NULL_HANDLE, 0);
vkDestroyObject(demo->device, VK_OBJECT_TYPE_BUFFER, demo->uniform_data.buf);
- demo_remove_mem_refs(demo, demo->uniform_data.num_mem, demo->uniform_data.mem);
for (j = 0; j < demo->uniform_data.num_mem; j++)
vkFreeMemory(demo->device, demo->uniform_data.mem[j]);
for (i = 0; i < DEMO_BUFFER_COUNT; i++) {
vkDestroyObject(demo->device, VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW, demo->buffers[i].view);
vkDestroyObject(demo->device, VK_OBJECT_TYPE_COMMAND_BUFFER, demo->buffers[i].cmd);
- demo_remove_mem_refs(demo, 1, &demo->buffers[i].mem);
}
vkDestroyDevice(demo->device);
diff --git a/demos/tri.c b/demos/tri.c
index 3990e696..58d19a24 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -187,20 +187,6 @@ static void demo_flush_init_cmd(struct demo *demo)
demo->setup_cmd = VK_NULL_HANDLE;
}
-static void demo_add_mem_refs(
- struct demo *demo,
- int num_refs, VkDeviceMemory *mem)
-{
- vkQueueAddMemReferences(demo->queue, num_refs, mem);
-}
-
-static void demo_remove_mem_refs(
- struct demo *demo,
- int num_refs, VkDeviceMemory *mem)
-{
- vkQueueRemoveMemReferences(demo->queue, num_refs, mem);
-}
-
static void demo_set_image_layout(
struct demo *demo,
VkImage image,
@@ -429,7 +415,6 @@ static void demo_prepare_buffers(struct demo *demo)
demo->buffers[i].image = images[i].image;
demo->buffers[i].mem = images[i].memory;
- demo_add_mem_refs(demo, 1, &demo->buffers[i].mem);
demo_set_image_layout(demo, demo->buffers[i].image,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
@@ -522,8 +507,6 @@ static void demo_prepare_depth(struct demo *demo)
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
- demo_add_mem_refs(demo, demo->depth.num_mem, demo->depth.mem);
-
/* create image view */
view.image = demo->depth.image;
err = vkCreateDepthStencilView(demo->device, &view,
@@ -712,16 +695,12 @@ static void demo_prepare_textures(struct demo *demo)
demo->textures[i].image, VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
1, &copy_region);
- demo_add_mem_refs(demo, staging_texture.num_mem, staging_texture.mem);
- demo_add_mem_refs(demo, demo->textures[i].num_mem, demo->textures[i].mem);
-
demo_set_image_layout(demo, demo->textures[i].image,
VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
demo->textures[i].imageLayout);
demo_flush_init_cmd(demo);
- demo_remove_mem_refs(demo, staging_texture.num_mem, staging_texture.mem);
demo_destroy_texture_image(demo, &staging_texture);
} else {
/* Can't support VK_FORMAT_B8G8R8A8_UNORM !? */
@@ -838,8 +817,6 @@ static void demo_prepare_vertices(struct demo *demo)
assert(!err);
}
- demo_add_mem_refs(demo, demo->vertices.num_mem, demo->vertices.mem);
-
demo->vertices.vi.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO;
demo->vertices.vi.pNext = NULL;
demo->vertices.vi.bindingCount = 1;
@@ -1574,7 +1551,6 @@ static void demo_cleanup(struct demo *demo)
vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_BUFFER, demo->vertices.buf, 0, VK_NULL_HANDLE, 0);
vkDestroyObject(demo->device, VK_OBJECT_TYPE_BUFFER, demo->vertices.buf);
- demo_remove_mem_refs(demo, demo->vertices.num_mem, demo->vertices.mem);
for (j = 0; j < demo->vertices.num_mem; j++)
vkFreeMemory(demo->device, demo->vertices.mem[j]);
@@ -1582,7 +1558,6 @@ static void demo_cleanup(struct demo *demo)
vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE_VIEW, demo->textures[i].view);
vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_IMAGE, demo->textures[i].image, 0, VK_NULL_HANDLE, 0);
vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->textures[i].image);
- demo_remove_mem_refs(demo, demo->textures[i].num_mem, demo->textures[i].mem);
for (j = 0; j < demo->textures[i].num_mem; j++)
vkFreeMemory(demo->device, demo->textures[i].mem[j]);
free(demo->textures[i].mem);
@@ -1591,7 +1566,6 @@ static void demo_cleanup(struct demo *demo)
vkDestroyObject(demo->device, VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW, demo->depth.view);
vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_IMAGE, demo->depth.image, 0, VK_NULL_HANDLE, 0);
- demo_remove_mem_refs(demo, demo->depth.num_mem, demo->depth.mem);
vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->depth.image);
for (j = 0; j < demo->depth.num_mem; j++) {
vkFreeMemory(demo->device, demo->depth.mem[j]);
@@ -1599,7 +1573,6 @@ static void demo_cleanup(struct demo *demo)
for (i = 0; i < DEMO_BUFFER_COUNT; i++) {
vkDestroyObject(demo->device, VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW, demo->buffers[i].view);
- demo_remove_mem_refs(demo, 1, &demo->buffers[i].mem);
}
vkDestroySwapChainWSI(demo->swap_chain);
diff --git a/demos/vulkaninfo.c b/demos/vulkaninfo.c
index 89dedadc..69a85f9d 100644
--- a/demos/vulkaninfo.c
+++ b/demos/vulkaninfo.c
@@ -136,7 +136,6 @@ static const char *vk_result_string(VkResult err)
STR(VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION);
STR(VK_ERROR_BAD_SHADER_CODE);
STR(VK_ERROR_BAD_PIPELINE_DATA);
- STR(VK_ERROR_TOO_MANY_MEMORY_REFERENCES);
STR(VK_ERROR_NOT_MAPPABLE);
STR(VK_ERROR_MEMORY_MAP_FAILED);
STR(VK_ERROR_MEMORY_UNMAP_FAILED);
@@ -652,7 +651,6 @@ static void app_gpu_dump_queue_props(const struct app_gpu *gpu, uint32_t id)
printf("\tqueueCount = %u\n", props->queueCount);
printf("\tmaxAtomicCounters = %u\n", props->maxAtomicCounters);
printf("\tsupportsTimestamps = %u\n", props->supportsTimestamps);
- printf("\tmaxMemReferences = %u\n", props->maxMemReferences);
}
static void app_gpu_dump_memory_props(const struct app_gpu *gpu)
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c
index 69c26c22..b7e42dd0 100644
--- a/icd/nulldrv/nulldrv.c
+++ b/icd/nulldrv/nulldrv.c
@@ -1531,7 +1531,6 @@ ICD_EXPORT VkResult VKAPI vkGetPhysicalDeviceInfo(
props->queueCount = 1;
props->maxAtomicCounters = 1;
props->supportsTimestamps = false;
- props->maxMemReferences = 1;
break;
}
default:
@@ -2014,24 +2013,6 @@ ICD_EXPORT VkResult VKAPI vkGetQueryPoolResults(
return VK_SUCCESS;
}
-ICD_EXPORT VkResult VKAPI vkQueueAddMemReferences(
- VkQueue queue,
- uint32_t count,
- const VkDeviceMemory* pMems)
-{
- NULLDRV_LOG_FUNC;
- return VK_SUCCESS;
-}
-
-ICD_EXPORT VkResult VKAPI vkQueueRemoveMemReferences(
- VkQueue queue,
- uint32_t count,
- const VkDeviceMemory* pMems)
-{
- NULLDRV_LOG_FUNC;
- return VK_SUCCESS;
-}
-
ICD_EXPORT VkResult VKAPI vkQueueWaitIdle(
VkQueue queue_)
{
diff --git a/include/vkLayer.h b/include/vkLayer.h
index 0b629b80..e95811b8 100644
--- a/include/vkLayer.h
+++ b/include/vkLayer.h
@@ -37,8 +37,6 @@ typedef struct VkLayerDispatchTable_
PFN_vkEnumerateLayers EnumerateLayers;
PFN_vkGetDeviceQueue GetDeviceQueue;
PFN_vkQueueSubmit QueueSubmit;
- PFN_vkQueueAddMemReferences QueueAddMemReferences;
- PFN_vkQueueRemoveMemReferences QueueRemoveMemReferences;
PFN_vkQueueWaitIdle QueueWaitIdle;
PFN_vkDeviceWaitIdle DeviceWaitIdle;
PFN_vkAllocMemory AllocMemory;
diff --git a/include/vulkan.h b/include/vulkan.h
index f4ac9357..00ebbf51 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -33,7 +33,7 @@
#include "vk_platform.h"
// Vulkan API version supported by this file
-#define VK_API_VERSION VK_MAKE_VERSION(0, 92, 0)
+#define VK_API_VERSION VK_MAKE_VERSION(0, 93, 0)
#ifdef __cplusplus
extern "C"
@@ -938,17 +938,16 @@ typedef enum VkResult_
VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION = -(0x00000015),
VK_ERROR_BAD_SHADER_CODE = -(0x00000016),
VK_ERROR_BAD_PIPELINE_DATA = -(0x00000017),
- VK_ERROR_TOO_MANY_MEMORY_REFERENCES = -(0x00000018),
- VK_ERROR_NOT_MAPPABLE = -(0x00000019),
- VK_ERROR_MEMORY_MAP_FAILED = -(0x0000001A),
- VK_ERROR_MEMORY_UNMAP_FAILED = -(0x0000001B),
- VK_ERROR_INCOMPATIBLE_DEVICE = -(0x0000001C),
- VK_ERROR_INCOMPATIBLE_DRIVER = -(0x0000001D),
- VK_ERROR_INCOMPLETE_COMMAND_BUFFER = -(0x0000001E),
- VK_ERROR_BUILDING_COMMAND_BUFFER = -(0x0000001F),
- VK_ERROR_MEMORY_NOT_BOUND = -(0x00000020),
- VK_ERROR_INCOMPATIBLE_QUEUE = -(0x00000021),
- VK_ERROR_NOT_SHAREABLE = -(0x00000022),
+ VK_ERROR_NOT_MAPPABLE = -(0x00000018),
+ VK_ERROR_MEMORY_MAP_FAILED = -(0x00000019),
+ VK_ERROR_MEMORY_UNMAP_FAILED = -(0x0000001A),
+ VK_ERROR_INCOMPATIBLE_DEVICE = -(0x0000001B),
+ VK_ERROR_INCOMPATIBLE_DRIVER = -(0x0000001C),
+ VK_ERROR_INCOMPLETE_COMMAND_BUFFER = -(0x0000001D),
+ VK_ERROR_BUILDING_COMMAND_BUFFER = -(0x0000001E),
+ VK_ERROR_MEMORY_NOT_BOUND = -(0x0000001F),
+ VK_ERROR_INCOMPATIBLE_QUEUE = -(0x00000020),
+ VK_ERROR_NOT_SHAREABLE = -(0x00000021),
VK_MAX_ENUM(RESULT)
} VkResult;
@@ -1368,7 +1367,6 @@ typedef struct VkPhysicalDeviceQueueProperties_
uint32_t queueCount;
uint32_t maxAtomicCounters;
bool32_t supportsTimestamps;
- uint32_t maxMemReferences; // Tells how many memory references can be active for the given queue
} VkPhysicalDeviceQueueProperties;
typedef struct VkPhysicalDeviceMemoryProperties_
@@ -2146,8 +2144,6 @@ typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceExtensionInfo)(VkPhysicalDevice
typedef VkResult (VKAPI *PFN_vkEnumerateLayers)(VkPhysicalDevice physicalDevice, size_t maxStringSize, size_t* pLayerCount, char* const* pOutLayers, void* pReserved);
typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue);
typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
-typedef VkResult (VKAPI *PFN_vkQueueAddMemReferences)(VkQueue queue, uint32_t count, const VkDeviceMemory* pMems);
-typedef VkResult (VKAPI *PFN_vkQueueRemoveMemReferences)(VkQueue queue, uint32_t count, const VkDeviceMemory* pMems);
typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem);
@@ -2327,16 +2323,6 @@ VkResult VKAPI vkQueueSubmit(
const VkCmdBuffer* pCmdBuffers,
VkFence fence);
-VkResult VKAPI vkQueueAddMemReferences(
- VkQueue queue,
- uint32_t count,
- const VkDeviceMemory* pMems);
-
-VkResult VKAPI vkQueueRemoveMemReferences(
- VkQueue queue,
- uint32_t count,
- const VkDeviceMemory* pMems);
-
VkResult VKAPI vkQueueWaitIdle(
VkQueue queue);
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 27f69245..d8a1df80 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -306,84 +306,6 @@ static void retireDeviceFences(
}
}
-// Returns True if a memory reference is present in a Queue's memory reference list
-// Queue is validated by caller
-static bool32_t checkMemRef(
- VkQueue queue,
- VkDeviceMemory mem)
-{
- bool32_t result = VK_FALSE;
- list<VkDeviceMemory>::iterator it;
- MT_QUEUE_INFO *pQueueInfo = queueMap[queue];
- if (pQueueInfo->pMemRefList.size() <= 0)
- return result;
- for (it = pQueueInfo->pMemRefList.begin(); it != pQueueInfo->pMemRefList.end(); ++it) {
- if ((*it) == mem) {
- result = VK_TRUE;
- break;
- }
- }
- return result;
-}
-
-static bool32_t validateQueueMemRefs(
- VkQueue queue,
- uint32_t cmdBufferCount,
- const VkCmdBuffer *pCmdBuffers)
-{
- bool32_t result = VK_TRUE;
-
- // Verify Queue
- MT_QUEUE_INFO *pQueueInfo = queueMap[queue];
- if (pQueueInfo == NULL) {
- char str[1024];
- sprintf(str, "Unknown Queue %p specified in vkQueueSubmit", queue);
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, queue, 0, MEMTRACK_INVALID_QUEUE, "MEM", str);
- }
- else {
- // Iterate through all CBs in pCmdBuffers
- for (uint32_t i = 0; i < cmdBufferCount; i++) {
- MT_CB_INFO* pCBInfo = getCBInfo(pCmdBuffers[i]);
- if (!pCBInfo) {
- char str[1024];
- sprintf(str, "Unable to find info for CB %p in order to check memory references in "
- "vkQueueSubmit for queue %p",
- (void*)pCmdBuffers[i], queue);
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, pCmdBuffers[i], 0, MEMTRACK_INVALID_CB, "MEM", str);
- result = VK_FALSE;
- } else {
- // Validate that all actual references are accounted for in pMemRefs
- if (pCBInfo->pMemObjList.size() > 0) {
- for (list<VkDeviceMemory>::iterator it = pCBInfo->pMemObjList.begin(); it != pCBInfo->pMemObjList.end(); ++it) {
- // Search for each memref in queues memreflist.
- if (checkMemRef(queue, *it)) {
- char str[1024];
- sprintf(str, "Found Mem Obj %p binding to CB %p for queue %p", (*it), pCmdBuffers[i], queue);
- layerCbMsg(VK_DBG_MSG_UNKNOWN, VK_VALIDATION_LEVEL_0, pCmdBuffers[i], 0, MEMTRACK_NONE, "MEM", str);
- }
- else {
- char str[1024];
- sprintf(str, "Queue %p Memory reference list for Command Buffer %p is missing ref to mem obj %p",
- queue, pCmdBuffers[i], (*it));
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, pCmdBuffers[i], 0, MEMTRACK_INVALID_MEM_REF, "MEM", str);
- result = VK_FALSE;
- }
- }
- }
- }
- }
- if (result == VK_TRUE) {
- char str[1024];
- sprintf(str, "Verified all memory dependencies for Queue %p are included in pMemRefs list", queue);
- layerCbMsg(VK_DBG_MSG_UNKNOWN, VK_VALIDATION_LEVEL_0, queue, 0, MEMTRACK_NONE, "MEM", str);
- // TODO : Could report mem refs in pMemRefs that AREN'T in mem list, that would be primarily informational
- // Currently just noting that there is a difference
- }
- }
-
- return result;
-}
-
// Return ptr to info in map container containing mem, or NULL if not found
// Calls to this function should be wrapped in mutex
static MT_MEM_OBJ_INFO* getMemObjInfo(
@@ -1087,72 +1009,6 @@ VK_LAYER_EXPORT VkResult VKAPI vkGetDeviceQueue(
return result;
}
-VK_LAYER_EXPORT VkResult VKAPI vkQueueAddMemReferences(
- VkQueue queue,
- uint32_t count,
- const VkDeviceMemory *pMems)
-{
- VkResult result = nextTable.QueueAddMemReferences(queue, count, pMems);
- if (result == VK_SUCCESS) {
- loader_platform_thread_lock_mutex(&globalLock);
-
- MT_QUEUE_INFO *pQueueInfo = queueMap[queue];
- if (pQueueInfo == NULL) {
- char str[1024];
- sprintf(str, "Unknown Queue %p", queue);
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, queue, 0, MEMTRACK_INVALID_QUEUE, "MEM", str);
- } else {
- for (uint32_t i = 0; i < count; i++) {
- if (checkMemRef(queue, pMems[i]) == VK_TRUE) {
- // Alread in list, just warn
- char str[1024];
- sprintf(str, "Request to add a memory reference (%p) to Queue %p -- ref is already "
- "present in the queue's reference list", pMems[i], queue);
- layerCbMsg(VK_DBG_MSG_WARNING, VK_VALIDATION_LEVEL_0, pMems[i], 0, MEMTRACK_INVALID_MEM_REF, "MEM", str);
- } else {
- // Add to queue's memory reference list
- pQueueInfo->pMemRefList.push_front(pMems[i]);
- }
- }
- }
- loader_platform_thread_unlock_mutex(&globalLock);
- }
- return result;
-}
-
-VK_LAYER_EXPORT VkResult VKAPI vkQueueRemoveMemReferences(
- VkQueue queue,
- uint32_t count,
- const VkDeviceMemory *pMems)
-{
- // TODO : Decrement ref count for this memory reference on this queue. Remove if ref count is zero.
- VkResult result = nextTable.QueueRemoveMemReferences(queue, count, pMems);
- if (result == VK_SUCCESS) {
- loader_platform_thread_lock_mutex(&globalLock);
-
- MT_QUEUE_INFO *pQueueInfo = queueMap[queue];
- if (pQueueInfo == NULL) {
- char str[1024];
- sprintf(str, "Unknown Queue %p", queue);
- layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, queue, 0, MEMTRACK_INVALID_QUEUE, "MEM", str);
- } else {
- for (uint32_t i = 0; i < count; i++) {
- if (pQueueInfo->pMemRefList.size() > 0) {
- for (list<VkDeviceMemory>::iterator it = pQueueInfo->pMemRefList.begin(); it != pQueueInfo->pMemRefList.end();) {
- if ((*it) == pMems[i]) {
- it = pQueueInfo->pMemRefList.erase(it);
- } else {
- ++it;
- }
- }
- }
- }
- }
- loader_platform_thread_unlock_mutex(&globalLock);
- }
- return result;
-}
-
VK_LAYER_EXPORT VkResult VKAPI vkQueueSubmit(
VkQueue queue,
uint32_t cmdBufferCount,
@@ -1171,8 +1027,6 @@ VK_LAYER_EXPORT VkResult VKAPI vkQueueSubmit(
pCBInfo->fenceId = fenceId;
}
- validateQueueMemRefs(queue, cmdBufferCount, pCmdBuffers);
-
loader_platform_thread_unlock_mutex(&globalLock);
VkResult result = nextTable.QueueSubmit(queue, cmdBufferCount, pCmdBuffers, getFenceFromId(fenceId));
return result;
@@ -2522,10 +2376,6 @@ VK_LAYER_EXPORT void* VKAPI vkGetProcAddr(
return (void*) vkDbgUnregisterMsgCallback;
if (!strcmp(funcName, "vkGetDeviceQueue"))
return (void*) vkGetDeviceQueue;
- if (!strcmp(funcName, "vkQueueAddMemReferences"))
- return (void*) vkQueueAddMemReferences;
- if (!strcmp(funcName, "vkQueueRemoveMemReferences"))
- return (void*) vkQueueRemoveMemReferences;
if (!strcmp(funcName, "vkCreateSwapChainWSI"))
return (void*) vkCreateSwapChainWSI;
if (!strcmp(funcName, "vkDestroySwapChainWSI"))
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 01328bf1..50f61571 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -342,17 +342,6 @@ VK_LAYER_EXPORT VkResult VKAPI vkQueueSubmit(VkQueue queue, uint32_t cmdBufferCo
return result;
}
-VK_LAYER_EXPORT VkResult VKAPI vkQueueAddMemReferences(VkQueue queue, uint32_t count, const VkDeviceMemory* pMems)
-{
- VkResult result = nextTable.QueueAddMemReferences(queue, count, pMems);
- return result;
-}
-
-VK_LAYER_EXPORT VkResult VKAPI vkQueueRemoveMemReferences(VkQueue queue, uint32_t count, const VkDeviceMemory* pMems)
-{
- VkResult result = nextTable.QueueRemoveMemReferences(queue, count, pMems);
- return result;
-}
VK_LAYER_EXPORT VkResult VKAPI vkQueueWaitIdle(VkQueue queue)
{
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index 326a47e5..0ab2ed8b 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -1157,7 +1157,7 @@ class ObjectTrackerSubcommand(Subcommand):
destroy_line = ''
funcs = []
# Special cases for API funcs that don't use an object as first arg
- if True in [no_use_proto in proto.name for no_use_proto in ['GlobalOption', 'GetPhysicalDeviceInfo', 'CreateInstance', 'QueueSubmit', 'QueueAddMemReferences', 'QueueRemoveMemReferences', 'QueueWaitIdle', 'QueueBindObjectMemory', 'QueueBindObjectMemoryRange', 'QueueBindImageMemoryRange', 'QueuePresentWSI', 'GetGlobalExtensionInfo', 'CreateDevice', 'GetGpuInfo', 'QueueSignalSemaphore', 'QueueWaitSemaphore']]:
+ if True in [no_use_proto in proto.name for no_use_proto in ['GlobalOption', 'GetPhysicalDeviceInfo', 'CreateInstance', 'QueueSubmit', 'QueueWaitIdle', 'QueueBindObjectMemory', 'QueueBindObjectMemoryRange', 'QueueBindImageMemoryRange', 'QueuePresentWSI', 'GetGlobalExtensionInfo', 'CreateDevice', 'GetGpuInfo', 'QueueSignalSemaphore', 'QueueWaitSemaphore']]:
using_line = ''
else:
using_line = ' loader_platform_thread_lock_mutex(&objLock);\n'
diff --git a/vulkan.py b/vulkan.py
index 96c46e1b..cb0b04f9 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -279,16 +279,6 @@ core = Extension(
Param("const VkCmdBuffer*", "pCmdBuffers"),
Param("VkFence", "fence")]),
- Proto("VkResult", "QueueAddMemReferences",
- [Param("VkQueue", "queue"),
- Param("uint32_t", "count"),
- Param("const VkDeviceMemory*", "pMems")]),
-
- Proto("VkResult", "QueueRemoveMemReferences",
- [Param("VkQueue", "queue"),
- Param("uint32_t", "count"),
- Param("const VkDeviceMemory*", "pMems")]),
-
Proto("VkResult", "QueueWaitIdle",
[Param("VkQueue", "queue")]),