aboutsummaryrefslogtreecommitdiff
path: root/layers
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2015-07-03 15:58:09 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-07-08 17:17:40 -0600
commit19bf53be9621007568b90ea99b5aa828aa502b4f (patch)
tree457cba4f45c5f9ae362dd5ee546fe4e15533986e /layers
parentdd6169d82d5bc0e1518687c8d0b1374911cf1f1c (diff)
downloadusermoji-19bf53be9621007568b90ea99b5aa828aa502b4f.tar.xz
vulkan.h: V136 -- Vulkan Sparse Resource Issues
Totally reworked sparse resources. This commit also incorporates the changes for bug 14237.
Diffstat (limited to 'layers')
-rw-r--r--layers/mem_tracker.cpp16
-rw-r--r--layers/object_track.h37
-rw-r--r--layers/param_checker.cpp52
3 files changed, 46 insertions, 59 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index f873a822..e7a55000 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1191,20 +1191,18 @@ VK_LAYER_EXPORT VkResult VKAPI vkBindObjectMemory(
}
VK_LAYER_EXPORT VkResult VKAPI vkQueueBindSparseBufferMemory(
- VkQueue queue,
- VkBuffer buffer,
- VkDeviceSize rangeOffset,
- VkDeviceSize rangeSize,
- VkDeviceMemory mem,
- VkDeviceSize memOffset)
+ VkQueue queue,
+ VkBuffer buffer,
+ uint32_t numBindings,
+ const VkSparseMemoryBindInfo* pBindInfo)
{
VkResult result = get_dispatch_table(mem_tracker_device_table_map, queue)->QueueBindSparseBufferMemory(
- queue, buffer, rangeOffset, rangeSize, mem, memOffset);
+ queue, buffer, numBindings, pBindInfo);
loader_platform_thread_lock_mutex(&globalLock);
// Track objects tied to memory
- if (VK_FALSE == set_sparse_buffer_binding(buffer, mem)) {
+ if (VK_FALSE == set_sparse_buffer_binding(buffer, pBindInfo->mem)) {
log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_BUFFER, buffer, 0, MEMTRACK_MEMORY_BINDING_ERROR, "MEM",
- "Unable to set object %p binding to mem obj %p", (void*)buffer, (void*)mem);
+ "Unable to set object %p binding to mem obj %p", (void*)buffer, (void*)pBindInfo->mem);
}
print_object_list(queue);
print_mem_list(queue);
diff --git a/layers/object_track.h b/layers/object_track.h
index 8dcffcf0..cc751872 100644
--- a/layers/object_track.h
+++ b/layers/object_track.h
@@ -688,38 +688,49 @@ explicit_GetObjectMemoryRequirements(
VkResult
explicit_QueueBindSparseBufferMemory(
- VkQueue queue,
- VkBuffer buffer,
- VkDeviceSize rangeOffset,
- VkDeviceSize rangeSize,
- VkDeviceMemory mem,
- VkDeviceSize memOffset)
+ VkQueue queue,
+ VkBuffer buffer,
+ uint32_t numBindings,
+ const VkSparseMemoryBindInfo* pBindInfo)
{
loader_platform_thread_lock_mutex(&objLock);
validateQueueFlags(queue, "QueueBindSparseBufferMemory");
validate_object(queue, buffer);
loader_platform_thread_unlock_mutex(&objLock);
- VkResult result = get_dispatch_table(ObjectTracker_device_table_map, queue)->QueueBindSparseBufferMemory(queue, buffer, rangeOffset, rangeSize, mem, memOffset);
+ VkResult result = get_dispatch_table(ObjectTracker_device_table_map, queue)->QueueBindSparseBufferMemory(queue, buffer, numBindings, pBindInfo);
return result;
}
VkResult
explicit_QueueBindSparseImageMemory(
- VkQueue queue,
- VkImage image,
- const VkImageMemoryBindInfo *pBindInfo,
- VkDeviceMemory mem,
- VkDeviceSize memOffset)
+ VkQueue queue,
+ VkImage image,
+ uint32_t numBindings,
+ const VkSparseImageMemoryBindInfo* pBindInfo)
{
loader_platform_thread_lock_mutex(&objLock);
validateQueueFlags(queue, "QueueBindSparseImageMemory");
loader_platform_thread_unlock_mutex(&objLock);
- VkResult result = get_dispatch_table(ObjectTracker_device_table_map, queue)->QueueBindSparseImageMemory(queue, image, pBindInfo, mem, memOffset);
+ VkResult result = get_dispatch_table(ObjectTracker_device_table_map, queue)->QueueBindSparseImageMemory(queue, image, numBindings, pBindInfo);
return result;
}
+VkResult
+explicit_QueueBindSparseImageOpaqueMemory(
+ VkQueue queue,
+ VkImage image,
+ uint32_t numBindings,
+ const VkSparseMemoryBindInfo* pBindInfo)
+{
+ loader_platform_thread_lock_mutex(&objLock);
+ validateQueueFlags(queue, "QueueBindSparseImageOpaqueMemory");
+ loader_platform_thread_unlock_mutex(&objLock);
+
+ VkResult result = get_dispatch_table(ObjectTracker_device_table_map, queue)->QueueBindSparseImageOpaqueMemory(queue, image, numBindings, pBindInfo);
+ return result;
+}
VkResult
explicit_GetFenceStatus(
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 8d53751e..1f55e38f 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -2888,10 +2888,8 @@ void PreQueueBindSparseBufferMemory(
void PostQueueBindSparseBufferMemory(
VkQueue queue,
VkBuffer buffer,
- VkDeviceSize rangeOffset,
- VkDeviceSize rangeSize,
- VkDeviceMemory mem,
- VkDeviceSize memOffset,
+ uint32_t numBindings,
+ const VkSparseMemoryBindInfo* pBindInfo,
VkResult result)
{
if(queue == nullptr)
@@ -2908,16 +2906,6 @@ void PostQueueBindSparseBufferMemory(
return;
}
-
-
- if(mem == nullptr)
- {
- log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkQueueBindSparseBufferMemory parameter, VkDeviceMemory mem, is null pointer");
- return;
- }
-
-
if(result != VK_SUCCESS)
{
std::string reason = "vkQueueBindSparseBufferMemory parameter, VkResult result, is " + EnumeratorString(result);
@@ -2927,24 +2915,22 @@ void PostQueueBindSparseBufferMemory(
}
VK_LAYER_EXPORT VkResult VKAPI vkQueueBindSparseBufferMemory(
- VkQueue queue,
- VkBuffer buffer,
- VkDeviceSize rangeOffset,
- VkDeviceSize rangeSize,
- VkDeviceMemory mem,
- VkDeviceSize memOffset)
+ VkQueue queue,
+ VkBuffer buffer,
+ uint32_t numBindings,
+ const VkSparseMemoryBindInfo* pBindInfo)
{
PreQueueBindSparseBufferMemory(queue);
- VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueBindSparseBufferMemory(queue, buffer, rangeOffset, rangeSize, mem, memOffset);
+ VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueBindSparseBufferMemory(queue, buffer, numBindings, pBindInfo);
- PostQueueBindSparseBufferMemory(queue, buffer, rangeOffset, rangeSize, mem, memOffset, result);
+ PostQueueBindSparseBufferMemory(queue, buffer, numBindings, pBindInfo, result);
return result;
}
void PreQueueBindSparseImageMemory(
VkQueue queue,
- const VkImageMemoryBindInfo* pBindInfo)
+ const VkSparseImageMemoryBindInfo* pBindInfo)
{
if(queue == nullptr)
{
@@ -2959,13 +2945,6 @@ void PreQueueBindSparseImageMemory(
"vkQueueBindSparseImageMemory parameter, const VkImageMemoryBindInfo* pBindInfo, is null pointer");
return;
}
- if(pBindInfo->subresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
- pBindInfo->subresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
- {
- log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
- "vkQueueBindSparseImageMemory parameter, VkImageAspect pBindInfo->subresource.aspect, is unrecognized enumerator");
- return;
- }
}
void PostQueueBindSparseImageMemory(
@@ -3006,16 +2985,15 @@ void PostQueueBindSparseImageMemory(
}
VK_LAYER_EXPORT VkResult VKAPI vkQueueBindSparseImageMemory(
- VkQueue queue,
- VkImage image,
- const VkImageMemoryBindInfo* pBindInfo,
- VkDeviceMemory mem,
- VkDeviceSize memOffset)
+ VkQueue queue,
+ VkImage image,
+ uint32_t numBindings,
+ const VkSparseImageMemoryBindInfo* pBindInfo)
{
PreQueueBindSparseImageMemory(queue, pBindInfo);
- VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueBindSparseImageMemory(queue, image, pBindInfo, mem, memOffset);
+ VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueBindSparseImageMemory(queue, image, numBindings, pBindInfo);
- PostQueueBindSparseImageMemory(queue, image, mem, memOffset, result);
+ PostQueueBindSparseImageMemory(queue, image, pBindInfo->mem, pBindInfo->memOffset, result);
return result;
}