aboutsummaryrefslogtreecommitdiff
path: root/layers/mem_tracker.cpp
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2015-10-27 09:53:00 -0600
committerMark Lobodzinski <mark@lunarg.com>2015-10-28 14:39:58 -0600
commit7a96837560458f28f09b0e7097ff62882bec26d5 (patch)
treed3ff1624405d186ca8cb9dc52d4f55d6604a7e7c /layers/mem_tracker.cpp
parent9f9d8f148ba1fcb7d8cbf6127a3c058665c3e36a (diff)
downloadusermoji-7a96837560458f28f09b0e7097ff62882bec26d5.tar.xz
layers: Validate buffer view usage flags
Diffstat (limited to 'layers/mem_tracker.cpp')
-rw-r--r--layers/mem_tracker.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index c19819d9..08a9f5c2 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1571,6 +1571,25 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateImageView(
return result;
}
+VK_LAYER_EXPORT VkResult VKAPI vkCreateBufferView(
+ VkDevice device,
+ const VkBufferViewCreateInfo *pCreateInfo,
+ VkBufferView *pView)
+{
+ VkResult result = get_dispatch_table(mem_tracker_device_table_map, device)->CreateBufferView(device, pCreateInfo, pView);
+ if (result == VK_SUCCESS) {
+ loader_platform_thread_lock_mutex(&globalLock);
+ // In order to create a valid buffer view, the buffer must have been created with at least one of the
+ // following flags: UNIFORM_TEXEL_BUFFER_BIT or STORAGE_TEXEL_BUFFER_BIT
+ validate_buffer_usage_flags(
+ device, pCreateInfo->buffer,
+ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
+ false, "vkCreateBufferView()", "VK_BUFFER_USAGE_[STORAGE|UNIFORM]_TEXEL_BUFFER_BIT");
+ loader_platform_thread_unlock_mutex(&globalLock);
+ }
+ return result;
+}
+
VK_LAYER_EXPORT VkResult VKAPI vkAllocCommandBuffers(
VkDevice device,
const VkCmdBufferAllocInfo *pCreateInfo,
@@ -2461,6 +2480,8 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(
return (PFN_vkVoidFunction) vkCreateImage;
if (!strcmp(funcName, "vkCreateImageView"))
return (PFN_vkVoidFunction) vkCreateImageView;
+ if (!strcmp(funcName, "vkCreateBufferView"))
+ return (PFN_vkVoidFunction) vkCreateBufferView;
if (!strcmp(funcName, "vkAllocCommandBuffers"))
return (PFN_vkVoidFunction) vkAllocCommandBuffers;
if (!strcmp(funcName, "vkBeginCommandBuffer"))