aboutsummaryrefslogtreecommitdiff
path: root/layers
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2016-09-28 12:53:27 -0600
committerMark Lobodzinski <mark@lunarg.com>2016-10-03 15:03:35 -0600
commit7ddb08eba1d531f685cdaaeff147a98750fa9d75 (patch)
tree73e7894fa895476c14be871f890e2779b2a36ebe /layers
parent16efa405273a2f1270de0d18655031bda7fe1ced (diff)
downloadusermoji-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
Diffstat (limited to 'layers')
-rw-r--r--layers/object_tracker.cpp21
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;
}