In order to unwrap VkSurface.
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- dlls/vulkan-1/vulkan-1.spec | 4 ++-- dlls/winevulkan/make_vulkan | 8 +++++-- dlls/winevulkan/vulkan_thunks.c | 14 +++++++++++ dlls/winevulkan/vulkan_thunks.h | 4 ++++ dlls/winevulkan/winevulkan.spec | 4 ++-- dlls/winex11.drv/vulkan.c | 51 +++++++++++++++++++++++++++++++---------- include/wine/vulkan.h | 4 ++++ include/wine/vulkan_driver.h | 4 +++- 8 files changed, 74 insertions(+), 19 deletions(-)
diff --git a/dlls/vulkan-1/vulkan-1.spec b/dlls/vulkan-1/vulkan-1.spec index 8c32b011f251..57323a43d2b7 100644 --- a/dlls/vulkan-1/vulkan-1.spec +++ b/dlls/vulkan-1/vulkan-1.spec @@ -160,7 +160,7 @@ @ stdcall vkGetDescriptorSetLayoutSupport(ptr ptr ptr) winevulkan.wine_vkGetDescriptorSetLayoutSupport @ stub vkGetDeviceGroupPeerMemoryFeatures @ stub vkGetDeviceGroupPresentCapabilitiesKHR -@ stub vkGetDeviceGroupSurfacePresentModesKHR +@ stdcall vkGetDeviceGroupSurfacePresentModesKHR(ptr int64 long) winevulkan.wine_vkGetDeviceGroupSurfacePresentModesKHR @ stdcall vkGetDeviceMemoryCommitment(ptr int64 ptr) winevulkan.wine_vkGetDeviceMemoryCommitment @ stdcall vkGetDeviceProcAddr(ptr str) winevulkan.wine_vkGetDeviceProcAddr @ stdcall vkGetDeviceQueue(ptr long long ptr) winevulkan.wine_vkGetDeviceQueue @@ -189,7 +189,7 @@ @ stdcall vkGetPhysicalDeviceImageFormatProperties2(ptr ptr ptr) winevulkan.wine_vkGetPhysicalDeviceImageFormatProperties2 @ stdcall vkGetPhysicalDeviceMemoryProperties(ptr ptr) winevulkan.wine_vkGetPhysicalDeviceMemoryProperties @ stdcall vkGetPhysicalDeviceMemoryProperties2(ptr ptr) winevulkan.wine_vkGetPhysicalDeviceMemoryProperties2 -@ stub vkGetPhysicalDevicePresentRectanglesKHR +@ stdcall vkGetPhysicalDevicePresentRectanglesKHR(ptr int64 ptr ptr) winevulkan.wine_vkGetPhysicalDevicePresentRectanglesKHR @ stdcall vkGetPhysicalDeviceProperties(ptr ptr) winevulkan.wine_vkGetPhysicalDeviceProperties @ stdcall vkGetPhysicalDeviceProperties2(ptr ptr) winevulkan.wine_vkGetPhysicalDeviceProperties2 @ stdcall vkGetPhysicalDeviceQueueFamilyProperties(ptr ptr ptr) winevulkan.wine_vkGetPhysicalDeviceQueueFamilyProperties diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 8c00509a82de..0f2e8881e4fd 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -130,7 +130,7 @@ CORE_EXTENSIONS = [ # Functions part of our winevulkan graphics driver interface. # DRIVER_VERSION should be bumped on any change to driver interface # in FUNCTION_OVERRIDES -DRIVER_VERSION = 3 +DRIVER_VERSION = 4
# Table of functions for which we have a special implementation. # These are regular device / instance functions for which we need @@ -182,6 +182,10 @@ FUNCTION_OVERRIDES = {
# VK_KHR_device_group_creation "vkEnumeratePhysicalDeviceGroupsKHR" : {"dispatch" : True, "driver" : False, "thunk" : False}, + + # VK_KHR_device_group + "vkGetDeviceGroupSurfacePresentModesKHR" : {"dispatch" : True, "driver" : True, "thunk" : True}, + "vkGetPhysicalDevicePresentRectanglesKHR" : {"dispatch" : True, "driver" : True, "thunk" : True}, }
@@ -397,7 +401,7 @@ class VkFunction(object):
# Required is set while parsing which APIs and types are required # and is used by the code generation. - self.required = False + self.required = True if self.driver else False
@staticmethod def from_alias(command, alias): diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index 2a6300341015..f9bc4be6f90f 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -2174,6 +2174,12 @@ static void WINAPI wine_vkGetDescriptorSetLayoutSupportKHR(VkDevice device, cons device->funcs.p_vkGetDescriptorSetLayoutSupportKHR(device->device, pCreateInfo, pSupport); }
+VkResult WINAPI wine_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR *pModes) +{ + TRACE("%p, 0x%s, %p\n", device, wine_dbgstr_longlong(surface), pModes); + return device->funcs.p_vkGetDeviceGroupSurfacePresentModesKHR(device->device, surface, pModes); +} + void WINAPI wine_vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize *pCommittedMemoryInBytes) { TRACE("%p, 0x%s, %p\n", device, wine_dbgstr_longlong(memory), pCommittedMemoryInBytes); @@ -2436,6 +2442,12 @@ static void WINAPI wine_vkGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDe physicalDevice->instance->funcs.p_vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice->phys_dev, samples, pMultisampleProperties); }
+VkResult WINAPI wine_vkGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t *pRectCount, VkRect2D *pRects) +{ + TRACE("%p, 0x%s, %p, %p\n", physicalDevice, wine_dbgstr_longlong(surface), pRectCount, pRects); + return physicalDevice->instance->funcs.p_vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice->phys_dev, surface, pRectCount, pRects); +} + void WINAPI wine_vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties *pProperties) { #if defined(USE_STRUCT_CONVERSION) @@ -2870,6 +2882,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkGetBufferMemoryRequirements2KHR", &wine_vkGetBufferMemoryRequirements2KHR}, {"vkGetDescriptorSetLayoutSupport", &wine_vkGetDescriptorSetLayoutSupport}, {"vkGetDescriptorSetLayoutSupportKHR", &wine_vkGetDescriptorSetLayoutSupportKHR}, + {"vkGetDeviceGroupSurfacePresentModesKHR", &wine_vkGetDeviceGroupSurfacePresentModesKHR}, {"vkGetDeviceMemoryCommitment", &wine_vkGetDeviceMemoryCommitment}, {"vkGetDeviceProcAddr", &wine_vkGetDeviceProcAddr}, {"vkGetDeviceQueue", &wine_vkGetDeviceQueue}, @@ -2935,6 +2948,7 @@ static const struct vulkan_func vk_instance_dispatch_table[] = {"vkGetPhysicalDeviceMemoryProperties2", &wine_vkGetPhysicalDeviceMemoryProperties2}, {"vkGetPhysicalDeviceMemoryProperties2KHR", &wine_vkGetPhysicalDeviceMemoryProperties2KHR}, {"vkGetPhysicalDeviceMultisamplePropertiesEXT", &wine_vkGetPhysicalDeviceMultisamplePropertiesEXT}, + {"vkGetPhysicalDevicePresentRectanglesKHR", &wine_vkGetPhysicalDevicePresentRectanglesKHR}, {"vkGetPhysicalDeviceProperties", &wine_vkGetPhysicalDeviceProperties}, {"vkGetPhysicalDeviceProperties2", &wine_vkGetPhysicalDeviceProperties2}, {"vkGetPhysicalDeviceProperties2KHR", &wine_vkGetPhysicalDeviceProperties2KHR}, diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h index c9fe07898000..6357bfc1bfda 100644 --- a/dlls/winevulkan/vulkan_thunks.h +++ b/dlls/winevulkan/vulkan_thunks.h @@ -860,6 +860,7 @@ struct vulkan_device_funcs #endif void (*p_vkGetDescriptorSetLayoutSupport)(VkDevice, const VkDescriptorSetLayoutCreateInfo *, VkDescriptorSetLayoutSupport *); void (*p_vkGetDescriptorSetLayoutSupportKHR)(VkDevice, const VkDescriptorSetLayoutCreateInfo *, VkDescriptorSetLayoutSupport *); + VkResult (*p_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice, VkSurfaceKHR, VkDeviceGroupPresentModeFlagsKHR *); void (*p_vkGetDeviceMemoryCommitment)(VkDevice, VkDeviceMemory, VkDeviceSize *); void (*p_vkGetDeviceQueue)(VkDevice, uint32_t, uint32_t, VkQueue *); VkResult (*p_vkGetEventStatus)(VkDevice, VkEvent); @@ -984,6 +985,7 @@ struct vulkan_instance_funcs void (*p_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice, VkPhysicalDeviceMemoryProperties2 *); #endif void (*p_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice, VkSampleCountFlagBits, VkMultisamplePropertiesEXT *); + VkResult (*p_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkRect2D *); #if defined(USE_STRUCT_CONVERSION) void (*p_vkGetPhysicalDeviceProperties)(VkPhysicalDevice, VkPhysicalDeviceProperties_host *); #else @@ -1139,6 +1141,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkGetBufferMemoryRequirements2KHR) \ USE_VK_FUNC(vkGetDescriptorSetLayoutSupport) \ USE_VK_FUNC(vkGetDescriptorSetLayoutSupportKHR) \ + USE_VK_FUNC(vkGetDeviceGroupSurfacePresentModesKHR) \ USE_VK_FUNC(vkGetDeviceMemoryCommitment) \ USE_VK_FUNC(vkGetDeviceQueue) \ USE_VK_FUNC(vkGetEventStatus) \ @@ -1200,6 +1203,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkGetPhysicalDeviceMemoryProperties2) \ USE_VK_FUNC(vkGetPhysicalDeviceMemoryProperties2KHR) \ USE_VK_FUNC(vkGetPhysicalDeviceMultisamplePropertiesEXT) \ + USE_VK_FUNC(vkGetPhysicalDevicePresentRectanglesKHR) \ USE_VK_FUNC(vkGetPhysicalDeviceProperties) \ USE_VK_FUNC(vkGetPhysicalDeviceProperties2) \ USE_VK_FUNC(vkGetPhysicalDeviceProperties2KHR) \ diff --git a/dlls/winevulkan/winevulkan.spec b/dlls/winevulkan/winevulkan.spec index c196eb1324a4..2785f5caeadb 100644 --- a/dlls/winevulkan/winevulkan.spec +++ b/dlls/winevulkan/winevulkan.spec @@ -161,7 +161,7 @@ @ stdcall wine_vkGetDescriptorSetLayoutSupport(ptr ptr ptr) @ stub vkGetDeviceGroupPeerMemoryFeatures @ stub vkGetDeviceGroupPresentCapabilitiesKHR -@ stub vkGetDeviceGroupSurfacePresentModesKHR +@ stdcall wine_vkGetDeviceGroupSurfacePresentModesKHR(ptr int64 long) @ stdcall wine_vkGetDeviceMemoryCommitment(ptr int64 ptr) @ stdcall wine_vkGetDeviceProcAddr(ptr str) @ stdcall wine_vkGetDeviceQueue(ptr long long ptr) @@ -190,7 +190,7 @@ @ stdcall wine_vkGetPhysicalDeviceImageFormatProperties2(ptr ptr ptr) @ stdcall wine_vkGetPhysicalDeviceMemoryProperties(ptr ptr) @ stdcall wine_vkGetPhysicalDeviceMemoryProperties2(ptr ptr) -@ stub vkGetPhysicalDevicePresentRectanglesKHR +@ stdcall wine_vkGetPhysicalDevicePresentRectanglesKHR(ptr int64 ptr ptr) @ stdcall wine_vkGetPhysicalDeviceProperties(ptr ptr) @ stdcall wine_vkGetPhysicalDeviceProperties2(ptr ptr) @ stdcall wine_vkGetPhysicalDeviceQueueFamilyProperties(ptr ptr ptr) diff --git a/dlls/winex11.drv/vulkan.c b/dlls/winex11.drv/vulkan.c index fdb858d93f91..a6740a4d1cc0 100644 --- a/dlls/winex11.drv/vulkan.c +++ b/dlls/winex11.drv/vulkan.c @@ -79,8 +79,10 @@ static void (*pvkDestroyInstance)(VkInstance, const VkAllocationCallbacks *); static void (*pvkDestroySurfaceKHR)(VkInstance, VkSurfaceKHR, const VkAllocationCallbacks *); static void (*pvkDestroySwapchainKHR)(VkDevice, VkSwapchainKHR, const VkAllocationCallbacks *); static VkResult (*pvkEnumerateInstanceExtensionProperties)(const char *, uint32_t *, VkExtensionProperties *); +static VkResult (*pvkGetDeviceGroupSurfacePresentModesKHR)(VkDevice, VkSurfaceKHR, VkDeviceGroupPresentModeFlagsKHR *); static void * (*pvkGetDeviceProcAddr)(VkDevice, const char *); static void * (*pvkGetInstanceProcAddr)(VkInstance, const char *); +static VkResult (*pvkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkRect2D *); static VkResult (*pvkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice, VkSurfaceKHR, VkSurfaceCapabilitiesKHR *); static VkResult (*pvkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkSurfaceFormatKHR *); static VkResult (*pvkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkPresentModeKHR *); @@ -103,11 +105,12 @@ static BOOL WINAPI wine_vk_init(INIT_ONCE *once, void *param, void **context) { if (!(vulkan_handle = wine_dlopen(SONAME_LIBVULKAN, RTLD_NOW, NULL, 0))) { - ERR("Failed to load %s\n", SONAME_LIBVULKAN); + ERR("Failed to load %s.\n", SONAME_LIBVULKAN); return TRUE; }
-#define LOAD_FUNCPTR(f) if ((p##f = wine_dlsym(vulkan_handle, #f, NULL, 0)) == NULL) goto fail; +#define LOAD_FUNCPTR(f) if (!(p##f = wine_dlsym(vulkan_handle, #f, NULL, 0))) goto fail; +#define LOAD_OPTIONAL_FUNCPTR(f) p##f = wine_dlsym(vulkan_handle, #f, NULL, 0); LOAD_FUNCPTR(vkAcquireNextImageKHR) LOAD_FUNCPTR(vkCreateInstance) LOAD_FUNCPTR(vkCreateSwapchainKHR) @@ -125,7 +128,10 @@ static BOOL WINAPI wine_vk_init(INIT_ONCE *once, void *param, void **context) LOAD_FUNCPTR(vkGetPhysicalDeviceXlibPresentationSupportKHR) LOAD_FUNCPTR(vkGetSwapchainImagesKHR) LOAD_FUNCPTR(vkQueuePresentKHR) + LOAD_OPTIONAL_FUNCPTR(vkGetDeviceGroupSurfacePresentModesKHR) + LOAD_OPTIONAL_FUNCPTR(vkGetPhysicalDevicePresentRectanglesKHR) #undef LOAD_FUNCPTR +#undef LOAD_OPTIONAL_FUNCPTR
vulkan_hwnd_context = XUniqueContext();
@@ -264,8 +270,7 @@ static VkResult X11DRV_vkCreateSwapchainKHR(VkDevice device, create_info_host = *create_info; create_info_host.surface = surface_from_handle(create_info->surface)->surface;
- return pvkCreateSwapchainKHR(device, &create_info_host, NULL /* allocator */, - swapchain); + return pvkCreateSwapchainKHR(device, &create_info_host, NULL /* allocator */, swapchain); }
static VkResult X11DRV_vkCreateWin32SurfaceKHR(VkInstance instance, @@ -416,6 +421,16 @@ static VkResult X11DRV_vkEnumerateInstanceExtensionProperties(const char *layer_ return res; }
+static VkResult X11DRV_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device, + VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR *flags) +{ + struct wine_vk_surface *x11_surface = surface_from_handle(surface); + + TRACE("%p, 0x%s, %p\n", device, wine_dbgstr_longlong(surface), flags); + + return pvkGetDeviceGroupSurfacePresentModesKHR(device, x11_surface->surface, flags); +} + static void *X11DRV_vkGetDeviceProcAddr(VkDevice device, const char *name) { void *proc_addr; @@ -440,6 +455,16 @@ static void *X11DRV_vkGetInstanceProcAddr(VkInstance instance, const char *name) return pvkGetInstanceProcAddr(instance, name); }
+static VkResult X11DRV_vkGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice phys_dev, + VkSurfaceKHR surface, uint32_t *count, VkRect2D *rects) +{ + struct wine_vk_surface *x11_surface = surface_from_handle(surface); + + TRACE("%p, 0x%s, %p, %p\n", phys_dev, wine_dbgstr_longlong(surface), count, rects); + + return pvkGetPhysicalDevicePresentRectanglesKHR(phys_dev, x11_surface->surface, count, rects); +} + static VkResult X11DRV_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice phys_dev, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *capabilities) { @@ -447,8 +472,7 @@ static VkResult X11DRV_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevic
TRACE("%p, 0x%s, %p\n", phys_dev, wine_dbgstr_longlong(surface), capabilities);
- return pvkGetPhysicalDeviceSurfaceCapabilitiesKHR(phys_dev, x11_surface->surface, - capabilities); + return pvkGetPhysicalDeviceSurfaceCapabilitiesKHR(phys_dev, x11_surface->surface, capabilities); }
static VkResult X11DRV_vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice phys_dev, @@ -458,8 +482,7 @@ static VkResult X11DRV_vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice phy
TRACE("%p, 0x%s, %p, %p\n", phys_dev, wine_dbgstr_longlong(surface), count, formats);
- return pvkGetPhysicalDeviceSurfaceFormatsKHR(phys_dev, x11_surface->surface, - count, formats); + return pvkGetPhysicalDeviceSurfaceFormatsKHR(phys_dev, x11_surface->surface, count, formats); }
static VkResult X11DRV_vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice phys_dev, @@ -469,8 +492,7 @@ static VkResult X11DRV_vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevic
TRACE("%p, 0x%s, %p, %p\n", phys_dev, wine_dbgstr_longlong(surface), count, modes);
- return pvkGetPhysicalDeviceSurfacePresentModesKHR(phys_dev, x11_surface->surface, count, - modes); + return pvkGetPhysicalDeviceSurfacePresentModesKHR(phys_dev, x11_surface->surface, count, modes); }
static VkResult X11DRV_vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice phys_dev, @@ -480,8 +502,7 @@ static VkResult X11DRV_vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice phy
TRACE("%p, %u, 0x%s, %p\n", phys_dev, index, wine_dbgstr_longlong(surface), supported);
- return pvkGetPhysicalDeviceSurfaceSupportKHR(phys_dev, index, x11_surface->surface, - supported); + return pvkGetPhysicalDeviceSurfaceSupportKHR(phys_dev, index, x11_surface->surface, supported); }
static VkBool32 X11DRV_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice phys_dev, @@ -516,8 +537,10 @@ static const struct vulkan_funcs vulkan_funcs = X11DRV_vkDestroySurfaceKHR, X11DRV_vkDestroySwapchainKHR, X11DRV_vkEnumerateInstanceExtensionProperties, + X11DRV_vkGetDeviceGroupSurfacePresentModesKHR, X11DRV_vkGetDeviceProcAddr, X11DRV_vkGetInstanceProcAddr, + X11DRV_vkGetPhysicalDevicePresentRectanglesKHR, X11DRV_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, X11DRV_vkGetPhysicalDeviceSurfaceFormatsKHR, X11DRV_vkGetPhysicalDeviceSurfacePresentModesKHR, @@ -541,6 +564,8 @@ static void *get_vulkan_driver_device_proc_addr(const struct vulkan_funcs *vulka return vulkan_funcs->p_vkCreateSwapchainKHR; if (!strcmp(name, "DestroySwapchainKHR")) return vulkan_funcs->p_vkDestroySwapchainKHR; + if (!strcmp(name, "GetDeviceGroupSurfacePresentModesKHR")) + return vulkan_funcs->p_vkGetDeviceGroupSurfacePresentModesKHR; if (!strcmp(name, "GetDeviceProcAddr")) return vulkan_funcs->p_vkGetDeviceProcAddr; if (!strcmp(name, "GetSwapchainImagesKHR")) @@ -580,6 +605,8 @@ static void *get_vulkan_driver_instance_proc_addr(const struct vulkan_funcs *vul return vulkan_funcs->p_vkDestroySurfaceKHR; if (!strcmp(name, "GetInstanceProcAddr")) return vulkan_funcs->p_vkGetInstanceProcAddr; + if (!strcmp(name, "GetPhysicalDevicePresentRectanglesKHR")) + return vulkan_funcs->p_vkGetPhysicalDevicePresentRectanglesKHR; if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilitiesKHR")) return vulkan_funcs->p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR; if (!strcmp(name, "GetPhysicalDeviceSurfaceFormatsKHR")) diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 6eec0b8a7625..5f214d8548c7 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -4304,6 +4304,7 @@ typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice, const VkB typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice, const VkBufferMemoryRequirementsInfo2 *, VkMemoryRequirements2 *); typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice, const VkDescriptorSetLayoutCreateInfo *, VkDescriptorSetLayoutSupport *); typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice, const VkDescriptorSetLayoutCreateInfo *, VkDescriptorSetLayoutSupport *); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice, VkSurfaceKHR, VkDeviceGroupPresentModeFlagsKHR *); typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice, VkDeviceMemory, VkDeviceSize *); typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice, const char *); typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice, uint32_t, uint32_t, VkQueue *); @@ -4330,6 +4331,7 @@ typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevi typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice, VkPhysicalDeviceMemoryProperties2 *); typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice, VkPhysicalDeviceMemoryProperties2 *); typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice, VkSampleCountFlagBits, VkMultisamplePropertiesEXT *); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkRect2D *); typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice, VkPhysicalDeviceProperties *); typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice, VkPhysicalDeviceProperties2 *); typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice, VkPhysicalDeviceProperties2 *); @@ -4511,6 +4513,7 @@ void VKAPI_CALL vkGetBufferMemoryRequirements2(VkDevice device, const VkBufferMe void VKAPI_CALL vkGetBufferMemoryRequirements2KHR(VkDevice device, const VkBufferMemoryRequirementsInfo2 *pInfo, VkMemoryRequirements2 *pMemoryRequirements); void VKAPI_CALL vkGetDescriptorSetLayoutSupport(VkDevice device, const VkDescriptorSetLayoutCreateInfo *pCreateInfo, VkDescriptorSetLayoutSupport *pSupport); void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR(VkDevice device, const VkDescriptorSetLayoutCreateInfo *pCreateInfo, VkDescriptorSetLayoutSupport *pSupport); +VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR *pModes); void VKAPI_CALL vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize *pCommittedMemoryInBytes); PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkDevice device, const char *pName); void VKAPI_CALL vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue); @@ -4537,6 +4540,7 @@ void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDev void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2 *pMemoryProperties); void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2 *pMemoryProperties); void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT *pMultisampleProperties); +VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t *pRectCount, VkRect2D *pRects); void VKAPI_CALL vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties *pProperties); void VKAPI_CALL vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 *pProperties); void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 *pProperties); diff --git a/include/wine/vulkan_driver.h b/include/wine/vulkan_driver.h index c11cf33e9c88..a18728caa225 100644 --- a/include/wine/vulkan_driver.h +++ b/include/wine/vulkan_driver.h @@ -39,7 +39,7 @@ #define __WINE_VULKAN_DRIVER_H
/* Wine internal vulkan driver version, needs to be bumped upon vulkan_funcs changes. */ -#define WINE_VULKAN_DRIVER_VERSION 3 +#define WINE_VULKAN_DRIVER_VERSION 4
struct vulkan_funcs { @@ -55,8 +55,10 @@ struct vulkan_funcs void (*p_vkDestroySurfaceKHR)(VkInstance, VkSurfaceKHR, const VkAllocationCallbacks *); void (*p_vkDestroySwapchainKHR)(VkDevice, VkSwapchainKHR, const VkAllocationCallbacks *); VkResult (*p_vkEnumerateInstanceExtensionProperties)(const char *, uint32_t *, VkExtensionProperties *); + VkResult (*p_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice, VkSurfaceKHR, VkDeviceGroupPresentModeFlagsKHR *); void * (*p_vkGetDeviceProcAddr)(VkDevice, const char *); void * (*p_vkGetInstanceProcAddr)(VkInstance, const char *); + VkResult (*p_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkRect2D *); VkResult (*p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice, VkSurfaceKHR, VkSurfaceCapabilitiesKHR *); VkResult (*p_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkSurfaceFormatKHR *); VkResult (*p_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkPresentModeKHR *);