1 /* Automatically generated from Vulkan vk.xml; DO NOT EDIT!
3 * This file is generated from Vulkan vk.xml file covered
4 * by the following copyright and permission notice:
6 * Copyright (c) 2015-2020 The Khronos Group Inc.
8 * SPDX-License-Identifier: Apache-2.0 OR MIT
12 #ifndef __WINE_VULKAN_DRIVER_H
13 #define __WINE_VULKAN_DRIVER_H
15 /* Wine internal vulkan driver version, needs to be bumped upon vulkan_funcs changes. */
16 #define WINE_VULKAN_DRIVER_VERSION 8
20 /* Vulkan global functions. These are the only calls at this point a graphics driver
21 * needs to provide. Other function calls will be provided indirectly by dispatch
22 * tables part of dispatchable Vulkan objects such as VkInstance or vkDevice.
24 VkResult (*p_vkCreateInstance
)(const VkInstanceCreateInfo
*, const VkAllocationCallbacks
*, VkInstance
*);
25 VkResult (*p_vkCreateSwapchainKHR
)(VkDevice
, const VkSwapchainCreateInfoKHR
*, const VkAllocationCallbacks
*, VkSwapchainKHR
*);
26 VkResult (*p_vkCreateWin32SurfaceKHR
)(VkInstance
, const VkWin32SurfaceCreateInfoKHR
*, const VkAllocationCallbacks
*, VkSurfaceKHR
*);
27 void (*p_vkDestroyInstance
)(VkInstance
, const VkAllocationCallbacks
*);
28 void (*p_vkDestroySurfaceKHR
)(VkInstance
, VkSurfaceKHR
, const VkAllocationCallbacks
*);
29 void (*p_vkDestroySwapchainKHR
)(VkDevice
, VkSwapchainKHR
, const VkAllocationCallbacks
*);
30 VkResult (*p_vkEnumerateInstanceExtensionProperties
)(const char *, uint32_t *, VkExtensionProperties
*);
31 VkResult (*p_vkGetDeviceGroupSurfacePresentModesKHR
)(VkDevice
, VkSurfaceKHR
, VkDeviceGroupPresentModeFlagsKHR
*);
32 void * (*p_vkGetDeviceProcAddr
)(VkDevice
, const char *);
33 void * (*p_vkGetInstanceProcAddr
)(VkInstance
, const char *);
34 VkResult (*p_vkGetPhysicalDevicePresentRectanglesKHR
)(VkPhysicalDevice
, VkSurfaceKHR
, uint32_t *, VkRect2D
*);
35 VkResult (*p_vkGetPhysicalDeviceSurfaceCapabilities2KHR
)(VkPhysicalDevice
, const VkPhysicalDeviceSurfaceInfo2KHR
*, VkSurfaceCapabilities2KHR
*);
36 VkResult (*p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
)(VkPhysicalDevice
, VkSurfaceKHR
, VkSurfaceCapabilitiesKHR
*);
37 VkResult (*p_vkGetPhysicalDeviceSurfaceFormats2KHR
)(VkPhysicalDevice
, const VkPhysicalDeviceSurfaceInfo2KHR
*, uint32_t *, VkSurfaceFormat2KHR
*);
38 VkResult (*p_vkGetPhysicalDeviceSurfaceFormatsKHR
)(VkPhysicalDevice
, VkSurfaceKHR
, uint32_t *, VkSurfaceFormatKHR
*);
39 VkResult (*p_vkGetPhysicalDeviceSurfacePresentModesKHR
)(VkPhysicalDevice
, VkSurfaceKHR
, uint32_t *, VkPresentModeKHR
*);
40 VkResult (*p_vkGetPhysicalDeviceSurfaceSupportKHR
)(VkPhysicalDevice
, uint32_t, VkSurfaceKHR
, VkBool32
*);
41 VkBool32 (*p_vkGetPhysicalDeviceWin32PresentationSupportKHR
)(VkPhysicalDevice
, uint32_t);
42 VkResult (*p_vkGetSwapchainImagesKHR
)(VkDevice
, VkSwapchainKHR
, uint32_t *, VkImage
*);
43 VkResult (*p_vkQueuePresentKHR
)(VkQueue
, const VkPresentInfoKHR
*);
46 extern const struct vulkan_funcs
* CDECL
__wine_get_vulkan_driver(HDC hdc
, UINT version
);
48 static inline void *get_vulkan_driver_device_proc_addr(
49 const struct vulkan_funcs
*vulkan_funcs
, const char *name
)
51 if (!name
|| name
[0] != 'v' || name
[1] != 'k') return NULL
;
55 if (!strcmp(name
, "CreateSwapchainKHR"))
56 return vulkan_funcs
->p_vkCreateSwapchainKHR
;
57 if (!strcmp(name
, "DestroySwapchainKHR"))
58 return vulkan_funcs
->p_vkDestroySwapchainKHR
;
59 if (!strcmp(name
, "GetDeviceGroupSurfacePresentModesKHR"))
60 return vulkan_funcs
->p_vkGetDeviceGroupSurfacePresentModesKHR
;
61 if (!strcmp(name
, "GetDeviceProcAddr"))
62 return vulkan_funcs
->p_vkGetDeviceProcAddr
;
63 if (!strcmp(name
, "GetSwapchainImagesKHR"))
64 return vulkan_funcs
->p_vkGetSwapchainImagesKHR
;
65 if (!strcmp(name
, "QueuePresentKHR"))
66 return vulkan_funcs
->p_vkQueuePresentKHR
;
71 static inline void *get_vulkan_driver_instance_proc_addr(
72 const struct vulkan_funcs
*vulkan_funcs
, VkInstance instance
, const char *name
)
74 if (!name
|| name
[0] != 'v' || name
[1] != 'k') return NULL
;
78 if (!strcmp(name
, "CreateInstance"))
79 return vulkan_funcs
->p_vkCreateInstance
;
80 if (!strcmp(name
, "EnumerateInstanceExtensionProperties"))
81 return vulkan_funcs
->p_vkEnumerateInstanceExtensionProperties
;
83 if (!instance
) return NULL
;
85 if (!strcmp(name
, "CreateWin32SurfaceKHR"))
86 return vulkan_funcs
->p_vkCreateWin32SurfaceKHR
;
87 if (!strcmp(name
, "DestroyInstance"))
88 return vulkan_funcs
->p_vkDestroyInstance
;
89 if (!strcmp(name
, "DestroySurfaceKHR"))
90 return vulkan_funcs
->p_vkDestroySurfaceKHR
;
91 if (!strcmp(name
, "GetInstanceProcAddr"))
92 return vulkan_funcs
->p_vkGetInstanceProcAddr
;
93 if (!strcmp(name
, "GetPhysicalDevicePresentRectanglesKHR"))
94 return vulkan_funcs
->p_vkGetPhysicalDevicePresentRectanglesKHR
;
95 if (!strcmp(name
, "GetPhysicalDeviceSurfaceCapabilities2KHR"))
96 return vulkan_funcs
->p_vkGetPhysicalDeviceSurfaceCapabilities2KHR
;
97 if (!strcmp(name
, "GetPhysicalDeviceSurfaceCapabilitiesKHR"))
98 return vulkan_funcs
->p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
;
99 if (!strcmp(name
, "GetPhysicalDeviceSurfaceFormats2KHR"))
100 return vulkan_funcs
->p_vkGetPhysicalDeviceSurfaceFormats2KHR
;
101 if (!strcmp(name
, "GetPhysicalDeviceSurfaceFormatsKHR"))
102 return vulkan_funcs
->p_vkGetPhysicalDeviceSurfaceFormatsKHR
;
103 if (!strcmp(name
, "GetPhysicalDeviceSurfacePresentModesKHR"))
104 return vulkan_funcs
->p_vkGetPhysicalDeviceSurfacePresentModesKHR
;
105 if (!strcmp(name
, "GetPhysicalDeviceSurfaceSupportKHR"))
106 return vulkan_funcs
->p_vkGetPhysicalDeviceSurfaceSupportKHR
;
107 if (!strcmp(name
, "GetPhysicalDeviceWin32PresentationSupportKHR"))
108 return vulkan_funcs
->p_vkGetPhysicalDeviceWin32PresentationSupportKHR
;
112 return get_vulkan_driver_device_proc_addr(vulkan_funcs
, name
);
115 #endif /* __WINE_VULKAN_DRIVER_H */