diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2017-03-29 10:51:30 -0600 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2017-03-29 12:07:07 -0600 |
| commit | 01790fb052a5e9f767b8b46ae1289cd12b172534 (patch) | |
| tree | f53140a98c3bef5727875b12a5989cd4033da3ea /layers/object_tracker.cpp | |
| parent | b3675d8f0d6aaff327b5d6a97cf512bf33e580fd (diff) | |
| download | usermoji-01790fb052a5e9f767b8b46ae1289cd12b172534.tar.xz | |
layers: Add ios, mac and nintendo surface tracking
Three extensions have been added that get VkSurface objects for
various operating environments. Added functions to object_tracker
to catch the creation of these Vulkan objects to prevent spurious
validation errors. Extensions are VK_NN_vi_surface, VK_MVK_ios_surface
and VK_MVK_macos_surface.
Change-Id: I0357a3a012c5020a5ab44877fd9fef627e769121
Diffstat (limited to 'layers/object_tracker.cpp')
| -rw-r--r-- | layers/object_tracker.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/layers/object_tracker.cpp b/layers/object_tracker.cpp index aa947c0c..9fbc1add 100644 --- a/layers/object_tracker.cpp +++ b/layers/object_tracker.cpp @@ -3143,6 +3143,72 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateAndroidSurfaceKHR(VkInstance instance, cons } #endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_IOS_MVK +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK(VkInstance instance, const VkIOSSurfaceCreateInfoMVK *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) { + bool skip = false; + { + std::lock_guard<std::mutex> lock(global_lock); + skip |= ValidateObject(instance, instance, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, false, VALIDATION_ERROR_UNDEFINED, + VALIDATION_ERROR_UNDEFINED); + } + if (skip) { + return VK_ERROR_VALIDATION_FAILED_EXT; + } + VkResult result = + get_dispatch_table(ot_instance_table_map, instance)->CreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface); + if (result == VK_SUCCESS) { + std::lock_guard<std::mutex> lock(global_lock); + CreateObject(instance, *pSurface, VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, pAllocator); + } + return result; +} +#endif // VK_USE_PLATFORM_IOS_MVK + +#ifdef VK_USE_PLATFORM_MACOS_MVK +VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) { + bool skip = false; + { + std::lock_guard<std::mutex> lock(global_lock); + skip |= ValidateObject(instance, instance, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, false, VALIDATION_ERROR_UNDEFINED, + VALIDATION_ERROR_UNDEFINED); + } + if (skip) { + return VK_ERROR_VALIDATION_FAILED_EXT; + } + VkResult result = + get_dispatch_table(ot_instance_table_map, instance)->CreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface); + if (result == VK_SUCCESS) { + std::lock_guard<std::mutex> lock(global_lock); + CreateObject(instance, *pSurface, VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, pAllocator); + } + return result; +} +#endif // VK_USE_PLATFORM_MACOS_MVK + +#ifdef VK_USE_PLATFORM_VI_NN +VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(VkInstance instance, const VkViSurfaceCreateInfoNN *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) { + bool skip = false; + { + std::lock_guard<std::mutex> lock(global_lock); + skip |= ValidateObject(instance, instance, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, false, VALIDATION_ERROR_UNDEFINED, + VALIDATION_ERROR_UNDEFINED); + } + if (skip) { + return VK_ERROR_VALIDATION_FAILED_EXT; + } + VkResult result = + get_dispatch_table(ot_instance_table_map, instance)->CreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface); + if (result == VK_SUCCESS) { + std::lock_guard<std::mutex> lock(global_lock); + CreateObject(instance, *pSurface, VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, pAllocator); + } + return result; +} +#endif // VK_USE_PLATFORM_VI_NN + VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR *pCreateInfos, const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchains) { |
