diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2016-09-28 12:53:27 -0600 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2016-10-03 15:03:35 -0600 |
| commit | 7ddb08eba1d531f685cdaaeff147a98750fa9d75 (patch) | |
| tree | 73e7894fa895476c14be871f890e2779b2a36ebe | |
| parent | 16efa405273a2f1270de0d18655031bda7fe1ced (diff) | |
| download | usermoji-7ddb08eba1d531f685cdaaeff147a98750fa9d75.tar.xz | |
layers: Add VK_NV_external_memory_win32 ext to OT
Added GetMemoryWin32HandleNV API for this extension to object_tracker.
Change-Id: I94cc6a3928f90c6ff964f7a2e5cba9aa2548d653
| -rw-r--r-- | layers/object_tracker.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/layers/object_tracker.cpp b/layers/object_tracker.cpp index 65a6a6ba..250eacad 100644 --- a/layers/object_tracker.cpp +++ b/layers/object_tracker.cpp @@ -3662,6 +3662,23 @@ VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceExternalImageFormatPropertiesNV( return result; } +#ifdef VK_USE_PLATFORM_WIN32_KHR +// VK_NV_external_memory_win32 Extension +VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV(VkDevice device, VkDeviceMemory memory, + VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE *pHandle) { + bool skip_call = VK_FALSE; + std::unique_lock<std::mutex> lock(global_lock); + skip_call |= ValidateObject(device, device, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, false); + skip_call |= ValidateObject(device, memory, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, false); + lock.unlock(); + if (skip_call) { + return VK_ERROR_VALIDATION_FAILED_EXT; + } + VkResult result = get_dispatch_table(ot_device_table_map, device)->GetMemoryWin32HandleNV(device, memory, handleType, pHandle); + return result; +} +#endif // VK_USE_PLATFORM_WIN32_KHR + static inline PFN_vkVoidFunction InterceptCoreDeviceCommand(const char *name) { if (!name || name[0] != 'v' || name[1] != 'k') return NULL; @@ -3919,6 +3936,10 @@ static inline PFN_vkVoidFunction InterceptCoreDeviceCommand(const char *name) { return (PFN_vkVoidFunction)CmdDebugMarkerEndEXT; if (!strcmp(name, "CmdDebugMarkerInsertEXT")) return (PFN_vkVoidFunction)CmdDebugMarkerInsertEXT; +#ifdef VK_USE_PLATFORM_WIN32_KHR + if (!strcmp(name, "GetMemoryWin32HandleNV")) + return (PFN_vkVoidFunction)GetMemoryWin32HandleNV; +#endif // VK_USE_PLATFORM_WIN32_KHR return NULL; } |
