mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
	
	
		
			326 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			326 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef VULKAN_WIN32_H_
 | ||
|  | #define VULKAN_WIN32_H_ 1
 | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** Copyright (c) 2015-2020 The Khronos Group Inc. | ||
|  | ** | ||
|  | ** Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  | ** you may not use this file except in compliance with the License. | ||
|  | ** You may obtain a copy of the License at | ||
|  | ** | ||
|  | **     http://www.apache.org/licenses/LICENSE-2.0
 | ||
|  | ** | ||
|  | ** Unless required by applicable law or agreed to in writing, software | ||
|  | ** distributed under the License is distributed on an "AS IS" BASIS, | ||
|  | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  | ** See the License for the specific language governing permissions and | ||
|  | ** limitations under the License. | ||
|  | */ | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** This header is generated from the Khronos Vulkan XML API Registry. | ||
|  | ** | ||
|  | */ | ||
|  | 
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define VK_KHR_win32_surface 1
 | ||
|  | #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
 | ||
|  | #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
 | ||
|  | typedef VkFlags VkWin32SurfaceCreateFlagsKHR; | ||
|  | typedef struct VkWin32SurfaceCreateInfoKHR { | ||
|  |     VkStructureType                 sType; | ||
|  |     const void*                     pNext; | ||
|  |     VkWin32SurfaceCreateFlagsKHR    flags; | ||
|  |     HINSTANCE                       hinstance; | ||
|  |     HWND                            hwnd; | ||
|  | } VkWin32SurfaceCreateInfoKHR; | ||
|  | 
 | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); | ||
|  | typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex); | ||
|  | 
 | ||
|  | #ifndef VK_NO_PROTOTYPES
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR( | ||
|  |     VkInstance                                  instance, | ||
|  |     const VkWin32SurfaceCreateInfoKHR*          pCreateInfo, | ||
|  |     const VkAllocationCallbacks*                pAllocator, | ||
|  |     VkSurfaceKHR*                               pSurface); | ||
|  | 
 | ||
|  | VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR( | ||
|  |     VkPhysicalDevice                            physicalDevice, | ||
|  |     uint32_t                                    queueFamilyIndex); | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define VK_KHR_external_memory_win32 1
 | ||
|  | #define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
 | ||
|  | #define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
 | ||
|  | typedef struct VkImportMemoryWin32HandleInfoKHR { | ||
|  |     VkStructureType                       sType; | ||
|  |     const void*                           pNext; | ||
|  |     VkExternalMemoryHandleTypeFlagBits    handleType; | ||
|  |     HANDLE                                handle; | ||
|  |     LPCWSTR                               name; | ||
|  | } VkImportMemoryWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef struct VkExportMemoryWin32HandleInfoKHR { | ||
|  |     VkStructureType               sType; | ||
|  |     const void*                   pNext; | ||
|  |     const SECURITY_ATTRIBUTES*    pAttributes; | ||
|  |     DWORD                         dwAccess; | ||
|  |     LPCWSTR                       name; | ||
|  | } VkExportMemoryWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef struct VkMemoryWin32HandlePropertiesKHR { | ||
|  |     VkStructureType    sType; | ||
|  |     void*              pNext; | ||
|  |     uint32_t           memoryTypeBits; | ||
|  | } VkMemoryWin32HandlePropertiesKHR; | ||
|  | 
 | ||
|  | typedef struct VkMemoryGetWin32HandleInfoKHR { | ||
|  |     VkStructureType                       sType; | ||
|  |     const void*                           pNext; | ||
|  |     VkDeviceMemory                        memory; | ||
|  |     VkExternalMemoryHandleTypeFlagBits    handleType; | ||
|  | } VkMemoryGetWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); | ||
|  | 
 | ||
|  | #ifndef VK_NO_PROTOTYPES
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR( | ||
|  |     VkDevice                                    device, | ||
|  |     const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo, | ||
|  |     HANDLE*                                     pHandle); | ||
|  | 
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR( | ||
|  |     VkDevice                                    device, | ||
|  |     VkExternalMemoryHandleTypeFlagBits          handleType, | ||
|  |     HANDLE                                      handle, | ||
|  |     VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties); | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define VK_KHR_win32_keyed_mutex 1
 | ||
|  | #define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
 | ||
|  | #define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
 | ||
|  | typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR { | ||
|  |     VkStructureType          sType; | ||
|  |     const void*              pNext; | ||
|  |     uint32_t                 acquireCount; | ||
|  |     const VkDeviceMemory*    pAcquireSyncs; | ||
|  |     const uint64_t*          pAcquireKeys; | ||
|  |     const uint32_t*          pAcquireTimeouts; | ||
|  |     uint32_t                 releaseCount; | ||
|  |     const VkDeviceMemory*    pReleaseSyncs; | ||
|  |     const uint64_t*          pReleaseKeys; | ||
|  | } VkWin32KeyedMutexAcquireReleaseInfoKHR; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define VK_KHR_external_semaphore_win32 1
 | ||
|  | #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
 | ||
|  | #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
 | ||
|  | typedef struct VkImportSemaphoreWin32HandleInfoKHR { | ||
|  |     VkStructureType                          sType; | ||
|  |     const void*                              pNext; | ||
|  |     VkSemaphore                              semaphore; | ||
|  |     VkSemaphoreImportFlags                   flags; | ||
|  |     VkExternalSemaphoreHandleTypeFlagBits    handleType; | ||
|  |     HANDLE                                   handle; | ||
|  |     LPCWSTR                                  name; | ||
|  | } VkImportSemaphoreWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef struct VkExportSemaphoreWin32HandleInfoKHR { | ||
|  |     VkStructureType               sType; | ||
|  |     const void*                   pNext; | ||
|  |     const SECURITY_ATTRIBUTES*    pAttributes; | ||
|  |     DWORD                         dwAccess; | ||
|  |     LPCWSTR                       name; | ||
|  | } VkExportSemaphoreWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef struct VkD3D12FenceSubmitInfoKHR { | ||
|  |     VkStructureType    sType; | ||
|  |     const void*        pNext; | ||
|  |     uint32_t           waitSemaphoreValuesCount; | ||
|  |     const uint64_t*    pWaitSemaphoreValues; | ||
|  |     uint32_t           signalSemaphoreValuesCount; | ||
|  |     const uint64_t*    pSignalSemaphoreValues; | ||
|  | } VkD3D12FenceSubmitInfoKHR; | ||
|  | 
 | ||
|  | typedef struct VkSemaphoreGetWin32HandleInfoKHR { | ||
|  |     VkStructureType                          sType; | ||
|  |     const void*                              pNext; | ||
|  |     VkSemaphore                              semaphore; | ||
|  |     VkExternalSemaphoreHandleTypeFlagBits    handleType; | ||
|  | } VkSemaphoreGetWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); | ||
|  | 
 | ||
|  | #ifndef VK_NO_PROTOTYPES
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR( | ||
|  |     VkDevice                                    device, | ||
|  |     const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo); | ||
|  | 
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR( | ||
|  |     VkDevice                                    device, | ||
|  |     const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo, | ||
|  |     HANDLE*                                     pHandle); | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define VK_KHR_external_fence_win32 1
 | ||
|  | #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
 | ||
|  | #define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
 | ||
|  | typedef struct VkImportFenceWin32HandleInfoKHR { | ||
|  |     VkStructureType                      sType; | ||
|  |     const void*                          pNext; | ||
|  |     VkFence                              fence; | ||
|  |     VkFenceImportFlags                   flags; | ||
|  |     VkExternalFenceHandleTypeFlagBits    handleType; | ||
|  |     HANDLE                               handle; | ||
|  |     LPCWSTR                              name; | ||
|  | } VkImportFenceWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef struct VkExportFenceWin32HandleInfoKHR { | ||
|  |     VkStructureType               sType; | ||
|  |     const void*                   pNext; | ||
|  |     const SECURITY_ATTRIBUTES*    pAttributes; | ||
|  |     DWORD                         dwAccess; | ||
|  |     LPCWSTR                       name; | ||
|  | } VkExportFenceWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef struct VkFenceGetWin32HandleInfoKHR { | ||
|  |     VkStructureType                      sType; | ||
|  |     const void*                          pNext; | ||
|  |     VkFence                              fence; | ||
|  |     VkExternalFenceHandleTypeFlagBits    handleType; | ||
|  | } VkFenceGetWin32HandleInfoKHR; | ||
|  | 
 | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); | ||
|  | 
 | ||
|  | #ifndef VK_NO_PROTOTYPES
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR( | ||
|  |     VkDevice                                    device, | ||
|  |     const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo); | ||
|  | 
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR( | ||
|  |     VkDevice                                    device, | ||
|  |     const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo, | ||
|  |     HANDLE*                                     pHandle); | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define VK_NV_external_memory_win32 1
 | ||
|  | #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
 | ||
|  | #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
 | ||
|  | typedef struct VkImportMemoryWin32HandleInfoNV { | ||
|  |     VkStructureType                      sType; | ||
|  |     const void*                          pNext; | ||
|  |     VkExternalMemoryHandleTypeFlagsNV    handleType; | ||
|  |     HANDLE                               handle; | ||
|  | } VkImportMemoryWin32HandleInfoNV; | ||
|  | 
 | ||
|  | typedef struct VkExportMemoryWin32HandleInfoNV { | ||
|  |     VkStructureType               sType; | ||
|  |     const void*                   pNext; | ||
|  |     const SECURITY_ATTRIBUTES*    pAttributes; | ||
|  |     DWORD                         dwAccess; | ||
|  | } VkExportMemoryWin32HandleInfoNV; | ||
|  | 
 | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle); | ||
|  | 
 | ||
|  | #ifndef VK_NO_PROTOTYPES
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( | ||
|  |     VkDevice                                    device, | ||
|  |     VkDeviceMemory                              memory, | ||
|  |     VkExternalMemoryHandleTypeFlagsNV           handleType, | ||
|  |     HANDLE*                                     pHandle); | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define VK_NV_win32_keyed_mutex 1
 | ||
|  | #define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
 | ||
|  | #define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
 | ||
|  | typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV { | ||
|  |     VkStructureType          sType; | ||
|  |     const void*              pNext; | ||
|  |     uint32_t                 acquireCount; | ||
|  |     const VkDeviceMemory*    pAcquireSyncs; | ||
|  |     const uint64_t*          pAcquireKeys; | ||
|  |     const uint32_t*          pAcquireTimeoutMilliseconds; | ||
|  |     uint32_t                 releaseCount; | ||
|  |     const VkDeviceMemory*    pReleaseSyncs; | ||
|  |     const uint64_t*          pReleaseKeys; | ||
|  | } VkWin32KeyedMutexAcquireReleaseInfoNV; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define VK_EXT_full_screen_exclusive 1
 | ||
|  | #define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
 | ||
|  | #define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
 | ||
|  | 
 | ||
|  | typedef enum VkFullScreenExclusiveEXT { | ||
|  |     VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0, | ||
|  |     VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1, | ||
|  |     VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2, | ||
|  |     VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3, | ||
|  |     VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF | ||
|  | } VkFullScreenExclusiveEXT; | ||
|  | typedef struct VkSurfaceFullScreenExclusiveInfoEXT { | ||
|  |     VkStructureType             sType; | ||
|  |     void*                       pNext; | ||
|  |     VkFullScreenExclusiveEXT    fullScreenExclusive; | ||
|  | } VkSurfaceFullScreenExclusiveInfoEXT; | ||
|  | 
 | ||
|  | typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT { | ||
|  |     VkStructureType    sType; | ||
|  |     void*              pNext; | ||
|  |     VkBool32           fullScreenExclusiveSupported; | ||
|  | } VkSurfaceCapabilitiesFullScreenExclusiveEXT; | ||
|  | 
 | ||
|  | typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT { | ||
|  |     VkStructureType    sType; | ||
|  |     const void*        pNext; | ||
|  |     HMONITOR           hmonitor; | ||
|  | } VkSurfaceFullScreenExclusiveWin32InfoEXT; | ||
|  | 
 | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); | ||
|  | typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes); | ||
|  | 
 | ||
|  | #ifndef VK_NO_PROTOTYPES
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT( | ||
|  |     VkPhysicalDevice                            physicalDevice, | ||
|  |     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo, | ||
|  |     uint32_t*                                   pPresentModeCount, | ||
|  |     VkPresentModeKHR*                           pPresentModes); | ||
|  | 
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT( | ||
|  |     VkDevice                                    device, | ||
|  |     VkSwapchainKHR                              swapchain); | ||
|  | 
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT( | ||
|  |     VkDevice                                    device, | ||
|  |     VkSwapchainKHR                              swapchain); | ||
|  | 
 | ||
|  | VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT( | ||
|  |     VkDevice                                    device, | ||
|  |     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo, | ||
|  |     VkDeviceGroupPresentModeFlagsKHR*           pModes); | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif
 |