From a71dfb7eab11c7bb8d5308b2f9b607a4e043e763 Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Mon, 29 Aug 2016 15:36:23 -0600 Subject: loader: Add support for NV device extension Added vkGetMemoryWin32HandleNV from the VK_NV_external_memory_win32 extension to the loader. Change-Id: If6a959f126cc48ebf2608ed6e113e2883deae871 --- loader/extensions.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'loader/extensions.c') diff --git a/loader/extensions.c b/loader/extensions.c index 3ba4b77b..17190a4b 100644 --- a/loader/extensions.c +++ b/loader/extensions.c @@ -105,6 +105,28 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( maxDrawCount, stride); } +#ifdef VK_USE_PLATFORM_WIN32_KHR + +// Definitions for the VK_NV_external_memory_win32 extension + +static const VkExtensionProperties nv_external_memory_win32_extension_info = { + .extensionName = VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, + .specVersion = VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION, +}; + +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( + VkDevice device, VkDeviceMemory memory, + VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE *pHandle) { + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + return disp->GetMemoryWin32HandleNV(device, memory, handleType, pHandle); +} + +#endif // VK_USE_PLATFORM_WIN32_KHR + +// GPA helpers for non-KHR extensions + bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr) { *addr = NULL; @@ -128,6 +150,17 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, return true; } +#ifdef VK_USE_PLATFORM_WIN32_KHR + + // Functions for the VK_NV_external_memory_win32 extension + + if (!strcmp("vkGetMemoryWin32HandleNV", name)) { + *addr = (void *)vkGetMemoryWin32HandleNV; + return true; + } + +#endif // VK_USE_PLATFORM_WIN32_KHR + return false; } @@ -146,5 +179,13 @@ void extensions_create_instance(struct loader_instance *ptr_instance, // Nothing to do; return; } + +#ifdef VK_USE_PLATFORM_WIN32_KHR + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], + VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME) == 0) { + // Nothing to do; + return; + } +#endif // VK_USE_PLATFORM_WIN32_KHR } } -- cgit v1.2.3