1e8556ba3Sopenharmony_ci#ifndef VULKAN_WIN32_H_
2e8556ba3Sopenharmony_ci#define VULKAN_WIN32_H_ 1
3e8556ba3Sopenharmony_ci
4e8556ba3Sopenharmony_ci/*
5e8556ba3Sopenharmony_ci** Copyright 2015-2024 The Khronos Group Inc.
6e8556ba3Sopenharmony_ci**
7e8556ba3Sopenharmony_ci** SPDX-License-Identifier: Apache-2.0
8e8556ba3Sopenharmony_ci*/
9e8556ba3Sopenharmony_ci
10e8556ba3Sopenharmony_ci/*
11e8556ba3Sopenharmony_ci** This header is generated from the Khronos Vulkan XML API Registry.
12e8556ba3Sopenharmony_ci**
13e8556ba3Sopenharmony_ci*/
14e8556ba3Sopenharmony_ci
15e8556ba3Sopenharmony_ci
16e8556ba3Sopenharmony_ci#ifdef __cplusplus
17e8556ba3Sopenharmony_ciextern "C" {
18e8556ba3Sopenharmony_ci#endif
19e8556ba3Sopenharmony_ci
20e8556ba3Sopenharmony_ci
21e8556ba3Sopenharmony_ci
22e8556ba3Sopenharmony_ci// VK_KHR_win32_surface is a preprocessor guard. Do not pass it to API calls.
23e8556ba3Sopenharmony_ci#define VK_KHR_win32_surface 1
24e8556ba3Sopenharmony_ci#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
25e8556ba3Sopenharmony_ci#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
26e8556ba3Sopenharmony_citypedef VkFlags VkWin32SurfaceCreateFlagsKHR;
27e8556ba3Sopenharmony_citypedef struct VkWin32SurfaceCreateInfoKHR {
28e8556ba3Sopenharmony_ci    VkStructureType                 sType;
29e8556ba3Sopenharmony_ci    const void*                     pNext;
30e8556ba3Sopenharmony_ci    VkWin32SurfaceCreateFlagsKHR    flags;
31e8556ba3Sopenharmony_ci    HINSTANCE                       hinstance;
32e8556ba3Sopenharmony_ci    HWND                            hwnd;
33e8556ba3Sopenharmony_ci} VkWin32SurfaceCreateInfoKHR;
34e8556ba3Sopenharmony_ci
35e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
36e8556ba3Sopenharmony_citypedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
37e8556ba3Sopenharmony_ci
38e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES
39e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
40e8556ba3Sopenharmony_ci    VkInstance                                  instance,
41e8556ba3Sopenharmony_ci    const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
42e8556ba3Sopenharmony_ci    const VkAllocationCallbacks*                pAllocator,
43e8556ba3Sopenharmony_ci    VkSurfaceKHR*                               pSurface);
44e8556ba3Sopenharmony_ci
45e8556ba3Sopenharmony_ciVKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
46e8556ba3Sopenharmony_ci    VkPhysicalDevice                            physicalDevice,
47e8556ba3Sopenharmony_ci    uint32_t                                    queueFamilyIndex);
48e8556ba3Sopenharmony_ci#endif
49e8556ba3Sopenharmony_ci
50e8556ba3Sopenharmony_ci
51e8556ba3Sopenharmony_ci// VK_KHR_external_memory_win32 is a preprocessor guard. Do not pass it to API calls.
52e8556ba3Sopenharmony_ci#define VK_KHR_external_memory_win32 1
53e8556ba3Sopenharmony_ci#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
54e8556ba3Sopenharmony_ci#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
55e8556ba3Sopenharmony_citypedef struct VkImportMemoryWin32HandleInfoKHR {
56e8556ba3Sopenharmony_ci    VkStructureType                       sType;
57e8556ba3Sopenharmony_ci    const void*                           pNext;
58e8556ba3Sopenharmony_ci    VkExternalMemoryHandleTypeFlagBits    handleType;
59e8556ba3Sopenharmony_ci    HANDLE                                handle;
60e8556ba3Sopenharmony_ci    LPCWSTR                               name;
61e8556ba3Sopenharmony_ci} VkImportMemoryWin32HandleInfoKHR;
62e8556ba3Sopenharmony_ci
63e8556ba3Sopenharmony_citypedef struct VkExportMemoryWin32HandleInfoKHR {
64e8556ba3Sopenharmony_ci    VkStructureType               sType;
65e8556ba3Sopenharmony_ci    const void*                   pNext;
66e8556ba3Sopenharmony_ci    const SECURITY_ATTRIBUTES*    pAttributes;
67e8556ba3Sopenharmony_ci    DWORD                         dwAccess;
68e8556ba3Sopenharmony_ci    LPCWSTR                       name;
69e8556ba3Sopenharmony_ci} VkExportMemoryWin32HandleInfoKHR;
70e8556ba3Sopenharmony_ci
71e8556ba3Sopenharmony_citypedef struct VkMemoryWin32HandlePropertiesKHR {
72e8556ba3Sopenharmony_ci    VkStructureType    sType;
73e8556ba3Sopenharmony_ci    void*              pNext;
74e8556ba3Sopenharmony_ci    uint32_t           memoryTypeBits;
75e8556ba3Sopenharmony_ci} VkMemoryWin32HandlePropertiesKHR;
76e8556ba3Sopenharmony_ci
77e8556ba3Sopenharmony_citypedef struct VkMemoryGetWin32HandleInfoKHR {
78e8556ba3Sopenharmony_ci    VkStructureType                       sType;
79e8556ba3Sopenharmony_ci    const void*                           pNext;
80e8556ba3Sopenharmony_ci    VkDeviceMemory                        memory;
81e8556ba3Sopenharmony_ci    VkExternalMemoryHandleTypeFlagBits    handleType;
82e8556ba3Sopenharmony_ci} VkMemoryGetWin32HandleInfoKHR;
83e8556ba3Sopenharmony_ci
84e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
85e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
86e8556ba3Sopenharmony_ci
87e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES
88e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
89e8556ba3Sopenharmony_ci    VkDevice                                    device,
90e8556ba3Sopenharmony_ci    const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
91e8556ba3Sopenharmony_ci    HANDLE*                                     pHandle);
92e8556ba3Sopenharmony_ci
93e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
94e8556ba3Sopenharmony_ci    VkDevice                                    device,
95e8556ba3Sopenharmony_ci    VkExternalMemoryHandleTypeFlagBits          handleType,
96e8556ba3Sopenharmony_ci    HANDLE                                      handle,
97e8556ba3Sopenharmony_ci    VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties);
98e8556ba3Sopenharmony_ci#endif
99e8556ba3Sopenharmony_ci
100e8556ba3Sopenharmony_ci
101e8556ba3Sopenharmony_ci// VK_KHR_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls.
102e8556ba3Sopenharmony_ci#define VK_KHR_win32_keyed_mutex 1
103e8556ba3Sopenharmony_ci#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
104e8556ba3Sopenharmony_ci#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
105e8556ba3Sopenharmony_citypedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
106e8556ba3Sopenharmony_ci    VkStructureType          sType;
107e8556ba3Sopenharmony_ci    const void*              pNext;
108e8556ba3Sopenharmony_ci    uint32_t                 acquireCount;
109e8556ba3Sopenharmony_ci    const VkDeviceMemory*    pAcquireSyncs;
110e8556ba3Sopenharmony_ci    const uint64_t*          pAcquireKeys;
111e8556ba3Sopenharmony_ci    const uint32_t*          pAcquireTimeouts;
112e8556ba3Sopenharmony_ci    uint32_t                 releaseCount;
113e8556ba3Sopenharmony_ci    const VkDeviceMemory*    pReleaseSyncs;
114e8556ba3Sopenharmony_ci    const uint64_t*          pReleaseKeys;
115e8556ba3Sopenharmony_ci} VkWin32KeyedMutexAcquireReleaseInfoKHR;
116e8556ba3Sopenharmony_ci
117e8556ba3Sopenharmony_ci
118e8556ba3Sopenharmony_ci
119e8556ba3Sopenharmony_ci// VK_KHR_external_semaphore_win32 is a preprocessor guard. Do not pass it to API calls.
120e8556ba3Sopenharmony_ci#define VK_KHR_external_semaphore_win32 1
121e8556ba3Sopenharmony_ci#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
122e8556ba3Sopenharmony_ci#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
123e8556ba3Sopenharmony_citypedef struct VkImportSemaphoreWin32HandleInfoKHR {
124e8556ba3Sopenharmony_ci    VkStructureType                          sType;
125e8556ba3Sopenharmony_ci    const void*                              pNext;
126e8556ba3Sopenharmony_ci    VkSemaphore                              semaphore;
127e8556ba3Sopenharmony_ci    VkSemaphoreImportFlags                   flags;
128e8556ba3Sopenharmony_ci    VkExternalSemaphoreHandleTypeFlagBits    handleType;
129e8556ba3Sopenharmony_ci    HANDLE                                   handle;
130e8556ba3Sopenharmony_ci    LPCWSTR                                  name;
131e8556ba3Sopenharmony_ci} VkImportSemaphoreWin32HandleInfoKHR;
132e8556ba3Sopenharmony_ci
133e8556ba3Sopenharmony_citypedef struct VkExportSemaphoreWin32HandleInfoKHR {
134e8556ba3Sopenharmony_ci    VkStructureType               sType;
135e8556ba3Sopenharmony_ci    const void*                   pNext;
136e8556ba3Sopenharmony_ci    const SECURITY_ATTRIBUTES*    pAttributes;
137e8556ba3Sopenharmony_ci    DWORD                         dwAccess;
138e8556ba3Sopenharmony_ci    LPCWSTR                       name;
139e8556ba3Sopenharmony_ci} VkExportSemaphoreWin32HandleInfoKHR;
140e8556ba3Sopenharmony_ci
141e8556ba3Sopenharmony_citypedef struct VkD3D12FenceSubmitInfoKHR {
142e8556ba3Sopenharmony_ci    VkStructureType    sType;
143e8556ba3Sopenharmony_ci    const void*        pNext;
144e8556ba3Sopenharmony_ci    uint32_t           waitSemaphoreValuesCount;
145e8556ba3Sopenharmony_ci    const uint64_t*    pWaitSemaphoreValues;
146e8556ba3Sopenharmony_ci    uint32_t           signalSemaphoreValuesCount;
147e8556ba3Sopenharmony_ci    const uint64_t*    pSignalSemaphoreValues;
148e8556ba3Sopenharmony_ci} VkD3D12FenceSubmitInfoKHR;
149e8556ba3Sopenharmony_ci
150e8556ba3Sopenharmony_citypedef struct VkSemaphoreGetWin32HandleInfoKHR {
151e8556ba3Sopenharmony_ci    VkStructureType                          sType;
152e8556ba3Sopenharmony_ci    const void*                              pNext;
153e8556ba3Sopenharmony_ci    VkSemaphore                              semaphore;
154e8556ba3Sopenharmony_ci    VkExternalSemaphoreHandleTypeFlagBits    handleType;
155e8556ba3Sopenharmony_ci} VkSemaphoreGetWin32HandleInfoKHR;
156e8556ba3Sopenharmony_ci
157e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
158e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
159e8556ba3Sopenharmony_ci
160e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES
161e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
162e8556ba3Sopenharmony_ci    VkDevice                                    device,
163e8556ba3Sopenharmony_ci    const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo);
164e8556ba3Sopenharmony_ci
165e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
166e8556ba3Sopenharmony_ci    VkDevice                                    device,
167e8556ba3Sopenharmony_ci    const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo,
168e8556ba3Sopenharmony_ci    HANDLE*                                     pHandle);
169e8556ba3Sopenharmony_ci#endif
170e8556ba3Sopenharmony_ci
171e8556ba3Sopenharmony_ci
172e8556ba3Sopenharmony_ci// VK_KHR_external_fence_win32 is a preprocessor guard. Do not pass it to API calls.
173e8556ba3Sopenharmony_ci#define VK_KHR_external_fence_win32 1
174e8556ba3Sopenharmony_ci#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
175e8556ba3Sopenharmony_ci#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
176e8556ba3Sopenharmony_citypedef struct VkImportFenceWin32HandleInfoKHR {
177e8556ba3Sopenharmony_ci    VkStructureType                      sType;
178e8556ba3Sopenharmony_ci    const void*                          pNext;
179e8556ba3Sopenharmony_ci    VkFence                              fence;
180e8556ba3Sopenharmony_ci    VkFenceImportFlags                   flags;
181e8556ba3Sopenharmony_ci    VkExternalFenceHandleTypeFlagBits    handleType;
182e8556ba3Sopenharmony_ci    HANDLE                               handle;
183e8556ba3Sopenharmony_ci    LPCWSTR                              name;
184e8556ba3Sopenharmony_ci} VkImportFenceWin32HandleInfoKHR;
185e8556ba3Sopenharmony_ci
186e8556ba3Sopenharmony_citypedef struct VkExportFenceWin32HandleInfoKHR {
187e8556ba3Sopenharmony_ci    VkStructureType               sType;
188e8556ba3Sopenharmony_ci    const void*                   pNext;
189e8556ba3Sopenharmony_ci    const SECURITY_ATTRIBUTES*    pAttributes;
190e8556ba3Sopenharmony_ci    DWORD                         dwAccess;
191e8556ba3Sopenharmony_ci    LPCWSTR                       name;
192e8556ba3Sopenharmony_ci} VkExportFenceWin32HandleInfoKHR;
193e8556ba3Sopenharmony_ci
194e8556ba3Sopenharmony_citypedef struct VkFenceGetWin32HandleInfoKHR {
195e8556ba3Sopenharmony_ci    VkStructureType                      sType;
196e8556ba3Sopenharmony_ci    const void*                          pNext;
197e8556ba3Sopenharmony_ci    VkFence                              fence;
198e8556ba3Sopenharmony_ci    VkExternalFenceHandleTypeFlagBits    handleType;
199e8556ba3Sopenharmony_ci} VkFenceGetWin32HandleInfoKHR;
200e8556ba3Sopenharmony_ci
201e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
202e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
203e8556ba3Sopenharmony_ci
204e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES
205e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
206e8556ba3Sopenharmony_ci    VkDevice                                    device,
207e8556ba3Sopenharmony_ci    const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo);
208e8556ba3Sopenharmony_ci
209e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
210e8556ba3Sopenharmony_ci    VkDevice                                    device,
211e8556ba3Sopenharmony_ci    const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo,
212e8556ba3Sopenharmony_ci    HANDLE*                                     pHandle);
213e8556ba3Sopenharmony_ci#endif
214e8556ba3Sopenharmony_ci
215e8556ba3Sopenharmony_ci
216e8556ba3Sopenharmony_ci// VK_NV_external_memory_win32 is a preprocessor guard. Do not pass it to API calls.
217e8556ba3Sopenharmony_ci#define VK_NV_external_memory_win32 1
218e8556ba3Sopenharmony_ci#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
219e8556ba3Sopenharmony_ci#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
220e8556ba3Sopenharmony_citypedef struct VkImportMemoryWin32HandleInfoNV {
221e8556ba3Sopenharmony_ci    VkStructureType                      sType;
222e8556ba3Sopenharmony_ci    const void*                          pNext;
223e8556ba3Sopenharmony_ci    VkExternalMemoryHandleTypeFlagsNV    handleType;
224e8556ba3Sopenharmony_ci    HANDLE                               handle;
225e8556ba3Sopenharmony_ci} VkImportMemoryWin32HandleInfoNV;
226e8556ba3Sopenharmony_ci
227e8556ba3Sopenharmony_citypedef struct VkExportMemoryWin32HandleInfoNV {
228e8556ba3Sopenharmony_ci    VkStructureType               sType;
229e8556ba3Sopenharmony_ci    const void*                   pNext;
230e8556ba3Sopenharmony_ci    const SECURITY_ATTRIBUTES*    pAttributes;
231e8556ba3Sopenharmony_ci    DWORD                         dwAccess;
232e8556ba3Sopenharmony_ci} VkExportMemoryWin32HandleInfoNV;
233e8556ba3Sopenharmony_ci
234e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
235e8556ba3Sopenharmony_ci
236e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES
237e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
238e8556ba3Sopenharmony_ci    VkDevice                                    device,
239e8556ba3Sopenharmony_ci    VkDeviceMemory                              memory,
240e8556ba3Sopenharmony_ci    VkExternalMemoryHandleTypeFlagsNV           handleType,
241e8556ba3Sopenharmony_ci    HANDLE*                                     pHandle);
242e8556ba3Sopenharmony_ci#endif
243e8556ba3Sopenharmony_ci
244e8556ba3Sopenharmony_ci
245e8556ba3Sopenharmony_ci// VK_NV_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls.
246e8556ba3Sopenharmony_ci#define VK_NV_win32_keyed_mutex 1
247e8556ba3Sopenharmony_ci#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
248e8556ba3Sopenharmony_ci#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
249e8556ba3Sopenharmony_citypedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
250e8556ba3Sopenharmony_ci    VkStructureType          sType;
251e8556ba3Sopenharmony_ci    const void*              pNext;
252e8556ba3Sopenharmony_ci    uint32_t                 acquireCount;
253e8556ba3Sopenharmony_ci    const VkDeviceMemory*    pAcquireSyncs;
254e8556ba3Sopenharmony_ci    const uint64_t*          pAcquireKeys;
255e8556ba3Sopenharmony_ci    const uint32_t*          pAcquireTimeoutMilliseconds;
256e8556ba3Sopenharmony_ci    uint32_t                 releaseCount;
257e8556ba3Sopenharmony_ci    const VkDeviceMemory*    pReleaseSyncs;
258e8556ba3Sopenharmony_ci    const uint64_t*          pReleaseKeys;
259e8556ba3Sopenharmony_ci} VkWin32KeyedMutexAcquireReleaseInfoNV;
260e8556ba3Sopenharmony_ci
261e8556ba3Sopenharmony_ci
262e8556ba3Sopenharmony_ci
263e8556ba3Sopenharmony_ci// VK_EXT_full_screen_exclusive is a preprocessor guard. Do not pass it to API calls.
264e8556ba3Sopenharmony_ci#define VK_EXT_full_screen_exclusive 1
265e8556ba3Sopenharmony_ci#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
266e8556ba3Sopenharmony_ci#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
267e8556ba3Sopenharmony_ci
268e8556ba3Sopenharmony_citypedef enum VkFullScreenExclusiveEXT {
269e8556ba3Sopenharmony_ci    VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0,
270e8556ba3Sopenharmony_ci    VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1,
271e8556ba3Sopenharmony_ci    VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2,
272e8556ba3Sopenharmony_ci    VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3,
273e8556ba3Sopenharmony_ci    VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF
274e8556ba3Sopenharmony_ci} VkFullScreenExclusiveEXT;
275e8556ba3Sopenharmony_citypedef struct VkSurfaceFullScreenExclusiveInfoEXT {
276e8556ba3Sopenharmony_ci    VkStructureType             sType;
277e8556ba3Sopenharmony_ci    void*                       pNext;
278e8556ba3Sopenharmony_ci    VkFullScreenExclusiveEXT    fullScreenExclusive;
279e8556ba3Sopenharmony_ci} VkSurfaceFullScreenExclusiveInfoEXT;
280e8556ba3Sopenharmony_ci
281e8556ba3Sopenharmony_citypedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT {
282e8556ba3Sopenharmony_ci    VkStructureType    sType;
283e8556ba3Sopenharmony_ci    void*              pNext;
284e8556ba3Sopenharmony_ci    VkBool32           fullScreenExclusiveSupported;
285e8556ba3Sopenharmony_ci} VkSurfaceCapabilitiesFullScreenExclusiveEXT;
286e8556ba3Sopenharmony_ci
287e8556ba3Sopenharmony_citypedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT {
288e8556ba3Sopenharmony_ci    VkStructureType    sType;
289e8556ba3Sopenharmony_ci    const void*        pNext;
290e8556ba3Sopenharmony_ci    HMONITOR           hmonitor;
291e8556ba3Sopenharmony_ci} VkSurfaceFullScreenExclusiveWin32InfoEXT;
292e8556ba3Sopenharmony_ci
293e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
294e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
295e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
296e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);
297e8556ba3Sopenharmony_ci
298e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES
299e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT(
300e8556ba3Sopenharmony_ci    VkPhysicalDevice                            physicalDevice,
301e8556ba3Sopenharmony_ci    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
302e8556ba3Sopenharmony_ci    uint32_t*                                   pPresentModeCount,
303e8556ba3Sopenharmony_ci    VkPresentModeKHR*                           pPresentModes);
304e8556ba3Sopenharmony_ci
305e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT(
306e8556ba3Sopenharmony_ci    VkDevice                                    device,
307e8556ba3Sopenharmony_ci    VkSwapchainKHR                              swapchain);
308e8556ba3Sopenharmony_ci
309e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT(
310e8556ba3Sopenharmony_ci    VkDevice                                    device,
311e8556ba3Sopenharmony_ci    VkSwapchainKHR                              swapchain);
312e8556ba3Sopenharmony_ci
313e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT(
314e8556ba3Sopenharmony_ci    VkDevice                                    device,
315e8556ba3Sopenharmony_ci    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
316e8556ba3Sopenharmony_ci    VkDeviceGroupPresentModeFlagsKHR*           pModes);
317e8556ba3Sopenharmony_ci#endif
318e8556ba3Sopenharmony_ci
319e8556ba3Sopenharmony_ci
320e8556ba3Sopenharmony_ci// VK_NV_acquire_winrt_display is a preprocessor guard. Do not pass it to API calls.
321e8556ba3Sopenharmony_ci#define VK_NV_acquire_winrt_display 1
322e8556ba3Sopenharmony_ci#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1
323e8556ba3Sopenharmony_ci#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display"
324e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
325e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay);
326e8556ba3Sopenharmony_ci
327e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES
328e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV(
329e8556ba3Sopenharmony_ci    VkPhysicalDevice                            physicalDevice,
330e8556ba3Sopenharmony_ci    VkDisplayKHR                                display);
331e8556ba3Sopenharmony_ci
332e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV(
333e8556ba3Sopenharmony_ci    VkPhysicalDevice                            physicalDevice,
334e8556ba3Sopenharmony_ci    uint32_t                                    deviceRelativeId,
335e8556ba3Sopenharmony_ci    VkDisplayKHR*                               pDisplay);
336e8556ba3Sopenharmony_ci#endif
337e8556ba3Sopenharmony_ci
338e8556ba3Sopenharmony_ci#ifdef __cplusplus
339e8556ba3Sopenharmony_ci}
340e8556ba3Sopenharmony_ci#endif
341e8556ba3Sopenharmony_ci
342e8556ba3Sopenharmony_ci#endif
343