• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // *** THIS FILE IS GENERATED - DO NOT EDIT ***
2 // See loader_extension_generator.py for modifications
3 
4 /*
5  * Copyright (c) 2015-2022 The Khronos Group Inc.
6  * Copyright (c) 2015-2022 Valve Corporation
7  * Copyright (c) 2015-2022 LunarG, Inc.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *     http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * Author: Mark Lobodzinski <mark@lunarg.com>
22  * Author: Mark Young <marky@lunarg.com>
23  */
24 
25 #pragma once
26 
27 // Structures defined externally, but used here
28 struct loader_instance;
29 struct loader_device;
30 struct loader_icd_term;
31 struct loader_dev_dispatch_table;
32 
33 // Device extension error function
34 VKAPI_ATTR VkResult VKAPI_CALL vkDevExtError(VkDevice dev);
35 
36 // Extension interception for vkGetInstanceProcAddr function, so we can return
37 // the appropriate information for any instance extensions we know about.
38 bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr);
39 
40 // Extension interception for vkCreateInstance function, so we can properly
41 // detect and enable any instance extension information for extensions we know
42 // about.
43 void extensions_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo);
44 
45 // Extension interception for vkGetDeviceProcAddr function, so we can return
46 // an appropriate terminator if this is one of those few device commands requiring
47 // a terminator.
48 PFN_vkVoidFunction get_extension_device_proc_terminator(struct loader_device *dev, const char *pName);
49 
50 // Dispatch table properly filled in with appropriate terminators for the
51 // supported extensions.
52 extern const VkLayerInstanceDispatchTable instance_disp;
53 
54 // Array of extension strings for instance extensions we support.
55 extern const char *const LOADER_INSTANCE_EXTENSIONS[];
56 
57 VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_term, VkInstance inst,
58                                                    const PFN_vkGetInstanceProcAddr fp_gipa);
59 
60 // Init Device function pointer dispatch table with core commands
61 VKAPI_ATTR void VKAPI_CALL loader_init_device_dispatch_table(struct loader_dev_dispatch_table *dev_table, PFN_vkGetDeviceProcAddr gpa,
62                                                              VkDevice dev);
63 
64 // Init Device function pointer dispatch table with extension commands
65 VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct loader_dev_dispatch_table *dev_table,
66                                                                        PFN_vkGetInstanceProcAddr gipa,
67                                                                        PFN_vkGetDeviceProcAddr gdpa,
68                                                                        VkInstance inst,
69                                                                        VkDevice dev);
70 
71 // Init Instance function pointer dispatch table with core commands
72 VKAPI_ATTR void VKAPI_CALL loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
73                                                                     VkInstance inst);
74 
75 // Init Instance function pointer dispatch table with core commands
76 VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
77                                                                          VkInstance inst);
78 
79 // Device command lookup function
80 VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table, const char *name);
81 
82 // Instance command lookup function
83 VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table, const char *name,
84                                                                   bool *found_name);
85 
86 // Loader core instance terminators
87 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(
88     const VkInstanceCreateInfo*                 pCreateInfo,
89     const VkAllocationCallbacks*                pAllocator,
90     VkInstance*                                 pInstance);
91 VKAPI_ATTR void VKAPI_CALL terminator_DestroyInstance(
92     VkInstance                                  instance,
93     const VkAllocationCallbacks*                pAllocator);
94 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDevices(
95     VkInstance                                  instance,
96     uint32_t*                                   pPhysicalDeviceCount,
97     VkPhysicalDevice*                           pPhysicalDevices);
98 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures(
99     VkPhysicalDevice                            physicalDevice,
100     VkPhysicalDeviceFeatures*                   pFeatures);
101 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties(
102     VkPhysicalDevice                            physicalDevice,
103     VkFormat                                    format,
104     VkFormatProperties*                         pFormatProperties);
105 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties(
106     VkPhysicalDevice                            physicalDevice,
107     VkFormat                                    format,
108     VkImageType                                 type,
109     VkImageTiling                               tiling,
110     VkImageUsageFlags                           usage,
111     VkImageCreateFlags                          flags,
112     VkImageFormatProperties*                    pImageFormatProperties);
113 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties(
114     VkPhysicalDevice                            physicalDevice,
115     VkPhysicalDeviceProperties*                 pProperties);
116 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties(
117     VkPhysicalDevice                            physicalDevice,
118     uint32_t*                                   pQueueFamilyPropertyCount,
119     VkQueueFamilyProperties*                    pQueueFamilyProperties);
120 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties(
121     VkPhysicalDevice                            physicalDevice,
122     VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
123 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL terminator_GetInstanceProcAddr(
124     VkInstance                                  instance,
125     const char*                                 pName);
126 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice(
127     VkPhysicalDevice                            physicalDevice,
128     const VkDeviceCreateInfo*                   pCreateInfo,
129     const VkAllocationCallbacks*                pAllocator,
130     VkDevice*                                   pDevice);
131 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceExtensionProperties(
132     const VkEnumerateInstanceExtensionPropertiesChain* chain,
133     const char*                                 pLayerName,
134     uint32_t*                                   pPropertyCount,
135     VkExtensionProperties*                      pProperties);
136 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceExtensionProperties(
137     VkPhysicalDevice                            physicalDevice,
138     const char*                                 pLayerName,
139     uint32_t*                                   pPropertyCount,
140     VkExtensionProperties*                      pProperties);
141 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceLayerProperties(
142     const VkEnumerateInstanceLayerPropertiesChain* chain,
143     uint32_t*                                   pPropertyCount,
144     VkLayerProperties*                          pProperties);
145 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceLayerProperties(
146     VkPhysicalDevice                            physicalDevice,
147     uint32_t*                                   pPropertyCount,
148     VkLayerProperties*                          pProperties);
149 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties(
150     VkPhysicalDevice                            physicalDevice,
151     VkFormat                                    format,
152     VkImageType                                 type,
153     VkSampleCountFlagBits                       samples,
154     VkImageUsageFlags                           usage,
155     VkImageTiling                               tiling,
156     uint32_t*                                   pPropertyCount,
157     VkSparseImageFormatProperties*              pProperties);
158 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceVersion(
159     const VkEnumerateInstanceVersionChain* chain,
160     uint32_t*                                   pApiVersion);
161 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceGroups(
162     VkInstance                                  instance,
163     uint32_t*                                   pPhysicalDeviceGroupCount,
164     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
165 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures2(
166     VkPhysicalDevice                            physicalDevice,
167     VkPhysicalDeviceFeatures2*                  pFeatures);
168 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties2(
169     VkPhysicalDevice                            physicalDevice,
170     VkPhysicalDeviceProperties2*                pProperties);
171 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties2(
172     VkPhysicalDevice                            physicalDevice,
173     VkFormat                                    format,
174     VkFormatProperties2*                        pFormatProperties);
175 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties2(
176     VkPhysicalDevice                            physicalDevice,
177     const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
178     VkImageFormatProperties2*                   pImageFormatProperties);
179 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties2(
180     VkPhysicalDevice                            physicalDevice,
181     uint32_t*                                   pQueueFamilyPropertyCount,
182     VkQueueFamilyProperties2*                   pQueueFamilyProperties);
183 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties2(
184     VkPhysicalDevice                            physicalDevice,
185     VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
186 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties2(
187     VkPhysicalDevice                            physicalDevice,
188     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
189     uint32_t*                                   pPropertyCount,
190     VkSparseImageFormatProperties2*             pProperties);
191 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalBufferProperties(
192     VkPhysicalDevice                            physicalDevice,
193     const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
194     VkExternalBufferProperties*                 pExternalBufferProperties);
195 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalFenceProperties(
196     VkPhysicalDevice                            physicalDevice,
197     const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
198     VkExternalFenceProperties*                  pExternalFenceProperties);
199 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalSemaphoreProperties(
200     VkPhysicalDevice                            physicalDevice,
201     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
202     VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
203 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolProperties(
204     VkPhysicalDevice                            physicalDevice,
205     uint32_t*                                   pToolCount,
206     VkPhysicalDeviceToolProperties*             pToolProperties);
207 
208 // ICD function pointer dispatch table
209 struct loader_icd_term_dispatch {
210 
211     // ---- Core 1_0 commands
212     PFN_vkCreateInstance CreateInstance;
213     PFN_vkDestroyInstance DestroyInstance;
214     PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
215     PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
216     PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
217     PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties;
218     PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
219     PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
220     PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
221     PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
222     PFN_vkCreateDevice CreateDevice;
223     PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties;
224     PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
225     PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties;
226     PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
227 
228     // ---- Core 1_1 commands
229     PFN_vkEnumerateInstanceVersion EnumerateInstanceVersion;
230     PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
231     PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2;
232     PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
233     PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2;
234     PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2;
235     PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2;
236     PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2;
237     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2;
238     PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties;
239     PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties;
240     PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties;
241 
242     // ---- Core 1_3 commands
243     PFN_vkGetPhysicalDeviceToolProperties GetPhysicalDeviceToolProperties;
244 
245     // ---- VK_KHR_surface extension commands
246     PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
247     PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
248     PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
249     PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
250     PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
251 
252     // ---- VK_KHR_swapchain extension commands
253     PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
254     PFN_vkGetDeviceGroupSurfacePresentModesKHR GetDeviceGroupSurfacePresentModesKHR;
255     PFN_vkGetPhysicalDevicePresentRectanglesKHR GetPhysicalDevicePresentRectanglesKHR;
256 
257     // ---- VK_KHR_display extension commands
258     PFN_vkGetPhysicalDeviceDisplayPropertiesKHR GetPhysicalDeviceDisplayPropertiesKHR;
259     PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR GetPhysicalDeviceDisplayPlanePropertiesKHR;
260     PFN_vkGetDisplayPlaneSupportedDisplaysKHR GetDisplayPlaneSupportedDisplaysKHR;
261     PFN_vkGetDisplayModePropertiesKHR GetDisplayModePropertiesKHR;
262     PFN_vkCreateDisplayModeKHR CreateDisplayModeKHR;
263     PFN_vkGetDisplayPlaneCapabilitiesKHR GetDisplayPlaneCapabilitiesKHR;
264     PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR;
265 
266     // ---- VK_KHR_display_swapchain extension commands
267     PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
268 
269     // ---- VK_KHR_xlib_surface extension commands
270 #ifdef VK_USE_PLATFORM_XLIB_KHR
271     PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR;
272 #endif // VK_USE_PLATFORM_XLIB_KHR
273 #ifdef VK_USE_PLATFORM_XLIB_KHR
274     PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR;
275 #endif // VK_USE_PLATFORM_XLIB_KHR
276 
277     // ---- VK_KHR_xcb_surface extension commands
278 #ifdef VK_USE_PLATFORM_XCB_KHR
279     PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR;
280 #endif // VK_USE_PLATFORM_XCB_KHR
281 #ifdef VK_USE_PLATFORM_XCB_KHR
282     PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR;
283 #endif // VK_USE_PLATFORM_XCB_KHR
284 
285     // ---- VK_KHR_wayland_surface extension commands
286 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
287     PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR;
288 #endif // VK_USE_PLATFORM_WAYLAND_KHR
289 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
290     PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR;
291 #endif // VK_USE_PLATFORM_WAYLAND_KHR
292 
293     // ---- VK_KHR_android_surface extension commands
294 #ifdef VK_USE_PLATFORM_ANDROID_KHR
295     PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
296 #endif // VK_USE_PLATFORM_ANDROID_KHR
297 
298     // ---- VK_KHR_win32_surface extension commands
299 #ifdef VK_USE_PLATFORM_WIN32_KHR
300     PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR;
301 #endif // VK_USE_PLATFORM_WIN32_KHR
302 #ifdef VK_USE_PLATFORM_WIN32_KHR
303     PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR;
304 #endif // VK_USE_PLATFORM_WIN32_KHR
305 
306     // ---- VK_KHR_video_queue extension commands
307 #ifdef VK_ENABLE_BETA_EXTENSIONS
308     PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR;
309 #endif // VK_ENABLE_BETA_EXTENSIONS
310 #ifdef VK_ENABLE_BETA_EXTENSIONS
311     PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR;
312 #endif // VK_ENABLE_BETA_EXTENSIONS
313 
314     // ---- VK_KHR_get_physical_device_properties2 extension commands
315     PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR;
316     PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
317     PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR;
318     PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR;
319     PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR;
320     PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR;
321     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR;
322 
323     // ---- VK_KHR_device_group_creation extension commands
324     PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR;
325 
326     // ---- VK_KHR_external_memory_capabilities extension commands
327     PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR;
328 
329     // ---- VK_KHR_external_semaphore_capabilities extension commands
330     PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR;
331 
332     // ---- VK_KHR_external_fence_capabilities extension commands
333     PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
334 
335     // ---- VK_KHR_performance_query extension commands
336     PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
337     PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
338 
339     // ---- VK_KHR_get_surface_capabilities2 extension commands
340     PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR;
341     PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR;
342 
343     // ---- VK_KHR_get_display_properties2 extension commands
344     PFN_vkGetPhysicalDeviceDisplayProperties2KHR GetPhysicalDeviceDisplayProperties2KHR;
345     PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR GetPhysicalDeviceDisplayPlaneProperties2KHR;
346     PFN_vkGetDisplayModeProperties2KHR GetDisplayModeProperties2KHR;
347     PFN_vkGetDisplayPlaneCapabilities2KHR GetDisplayPlaneCapabilities2KHR;
348 
349     // ---- VK_KHR_fragment_shading_rate extension commands
350     PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR GetPhysicalDeviceFragmentShadingRatesKHR;
351 
352     // ---- VK_EXT_debug_report extension commands
353     PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
354     PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
355     PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
356 
357     // ---- VK_EXT_debug_marker extension commands
358     PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
359     PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
360 
361     // ---- VK_GGP_stream_descriptor_surface extension commands
362 #ifdef VK_USE_PLATFORM_GGP
363     PFN_vkCreateStreamDescriptorSurfaceGGP CreateStreamDescriptorSurfaceGGP;
364 #endif // VK_USE_PLATFORM_GGP
365 
366     // ---- VK_NV_external_memory_capabilities extension commands
367     PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV;
368 
369     // ---- VK_NN_vi_surface extension commands
370 #ifdef VK_USE_PLATFORM_VI_NN
371     PFN_vkCreateViSurfaceNN CreateViSurfaceNN;
372 #endif // VK_USE_PLATFORM_VI_NN
373 
374     // ---- VK_EXT_direct_mode_display extension commands
375     PFN_vkReleaseDisplayEXT ReleaseDisplayEXT;
376 
377     // ---- VK_EXT_acquire_xlib_display extension commands
378 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
379     PFN_vkAcquireXlibDisplayEXT AcquireXlibDisplayEXT;
380 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
381 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
382     PFN_vkGetRandROutputDisplayEXT GetRandROutputDisplayEXT;
383 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
384 
385     // ---- VK_EXT_display_surface_counter extension commands
386     PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT GetPhysicalDeviceSurfaceCapabilities2EXT;
387 
388     // ---- VK_MVK_ios_surface extension commands
389 #ifdef VK_USE_PLATFORM_IOS_MVK
390     PFN_vkCreateIOSSurfaceMVK CreateIOSSurfaceMVK;
391 #endif // VK_USE_PLATFORM_IOS_MVK
392 
393     // ---- VK_MVK_macos_surface extension commands
394 #ifdef VK_USE_PLATFORM_MACOS_MVK
395     PFN_vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK;
396 #endif // VK_USE_PLATFORM_MACOS_MVK
397 
398     // ---- VK_EXT_debug_utils extension commands
399     PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT;
400     PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT;
401     PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT;
402     PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT;
403     PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT;
404     PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT;
405     PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT;
406     PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT;
407     PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT;
408     PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT;
409     PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT;
410 
411     // ---- VK_EXT_sample_locations extension commands
412     PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT;
413 
414     // ---- VK_EXT_calibrated_timestamps extension commands
415     PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT GetPhysicalDeviceCalibrateableTimeDomainsEXT;
416 
417     // ---- VK_FUCHSIA_imagepipe_surface extension commands
418 #ifdef VK_USE_PLATFORM_FUCHSIA
419     PFN_vkCreateImagePipeSurfaceFUCHSIA CreateImagePipeSurfaceFUCHSIA;
420 #endif // VK_USE_PLATFORM_FUCHSIA
421 
422     // ---- VK_EXT_metal_surface extension commands
423 #ifdef VK_USE_PLATFORM_METAL_EXT
424     PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT;
425 #endif // VK_USE_PLATFORM_METAL_EXT
426 
427     // ---- VK_EXT_tooling_info extension commands
428     PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT;
429 
430     // ---- VK_NV_cooperative_matrix extension commands
431     PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV;
432 
433     // ---- VK_NV_coverage_reduction_mode extension commands
434     PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
435 
436     // ---- VK_EXT_full_screen_exclusive extension commands
437 #ifdef VK_USE_PLATFORM_WIN32_KHR
438     PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT GetPhysicalDeviceSurfacePresentModes2EXT;
439 #endif // VK_USE_PLATFORM_WIN32_KHR
440 #ifdef VK_USE_PLATFORM_WIN32_KHR
441     PFN_vkGetDeviceGroupSurfacePresentModes2EXT GetDeviceGroupSurfacePresentModes2EXT;
442 #endif // VK_USE_PLATFORM_WIN32_KHR
443 
444     // ---- VK_EXT_headless_surface extension commands
445     PFN_vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT;
446 
447     // ---- VK_EXT_acquire_drm_display extension commands
448     PFN_vkAcquireDrmDisplayEXT AcquireDrmDisplayEXT;
449     PFN_vkGetDrmDisplayEXT GetDrmDisplayEXT;
450 
451     // ---- VK_NV_acquire_winrt_display extension commands
452 #ifdef VK_USE_PLATFORM_WIN32_KHR
453     PFN_vkAcquireWinrtDisplayNV AcquireWinrtDisplayNV;
454 #endif // VK_USE_PLATFORM_WIN32_KHR
455 #ifdef VK_USE_PLATFORM_WIN32_KHR
456     PFN_vkGetWinrtDisplayNV GetWinrtDisplayNV;
457 #endif // VK_USE_PLATFORM_WIN32_KHR
458 
459     // ---- VK_EXT_directfb_surface extension commands
460 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
461     PFN_vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT;
462 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
463 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
464     PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT GetPhysicalDeviceDirectFBPresentationSupportEXT;
465 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
466 
467     // ---- VK_QNX_screen_surface extension commands
468 #ifdef VK_USE_PLATFORM_SCREEN_QNX
469     PFN_vkCreateScreenSurfaceQNX CreateScreenSurfaceQNX;
470 #endif // VK_USE_PLATFORM_SCREEN_QNX
471 #ifdef VK_USE_PLATFORM_SCREEN_QNX
472     PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX GetPhysicalDeviceScreenPresentationSupportQNX;
473 #endif // VK_USE_PLATFORM_SCREEN_QNX
474 
475     // ---- VK_NV_optical_flow extension commands
476     PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV GetPhysicalDeviceOpticalFlowImageFormatsNV;
477 
478     // ---- VK_OHOS_surface extension commands
479 #ifdef VK_USE_PLATFORM_OHOS
480     PFN_vkCreateSurfaceOHOS CreateSurfaceOHOS;
481 #endif // VK_USE_PLATFORM_OHOS
482 };
483 
484 struct loader_instance_extension_enables {
485     uint8_t khr_get_physical_device_properties2;
486     uint8_t khr_device_group_creation;
487     uint8_t khr_external_memory_capabilities;
488     uint8_t khr_external_semaphore_capabilities;
489     uint8_t khr_external_fence_capabilities;
490     uint8_t ext_debug_report;
491     uint8_t nv_external_memory_capabilities;
492     uint8_t ext_direct_mode_display;
493     uint8_t ext_acquire_xlib_display;
494     uint8_t ext_display_surface_counter;
495     uint8_t ext_debug_utils;
496     uint8_t ext_acquire_drm_display;
497 };
498 
499 
500