diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2015-10-27 09:53:00 -0600 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2015-10-28 14:39:58 -0600 |
| commit | 7a96837560458f28f09b0e7097ff62882bec26d5 (patch) | |
| tree | d3ff1624405d186ca8cb9dc52d4f55d6604a7e7c | |
| parent | 9f9d8f148ba1fcb7d8cbf6127a3c058665c3e36a (diff) | |
| download | usermoji-7a96837560458f28f09b0e7097ff62882bec26d5.tar.xz | |
layers: Validate buffer view usage flags
| -rw-r--r-- | layers/mem_tracker.cpp | 21 |
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")) |
