diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2016-08-29 15:36:23 -0600 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2016-08-31 13:27:14 -0600 |
| commit | a71dfb7eab11c7bb8d5308b2f9b607a4e043e763 (patch) | |
| tree | f3ad4b8e87ae921fb994a7cd3560ddb8cac58cf4 /loader/extensions.c | |
| parent | 0ec7f3d96390a6a68debec142b1bdac106b6529f (diff) | |
| download | usermoji-a71dfb7eab11c7bb8d5308b2f9b607a4e043e763.tar.xz | |
loader: Add support for NV device extension
Added vkGetMemoryWin32HandleNV from the VK_NV_external_memory_win32
extension to the loader.
Change-Id: If6a959f126cc48ebf2608ed6e113e2883deae871
Diffstat (limited to 'loader/extensions.c')
| -rw-r--r-- | loader/extensions.c | 41 |
1 files changed, 41 insertions, 0 deletions
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 } } |
