From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/vulkan.c | 1 - dlls/winemac.drv/vulkan.c | 56 ----------------------------------- dlls/winevulkan/make_vulkan | 6 ---- dlls/winevulkan/vulkan.c | 14 +++++---- dlls/winewayland.drv/vulkan.c | 45 ---------------------------- dlls/winex11.drv/vulkan.c | 44 --------------------------- include/wine/vulkan_driver.h | 3 +- 7 files changed, 9 insertions(+), 160 deletions(-)
diff --git a/dlls/win32u/vulkan.c b/dlls/win32u/vulkan.c index 853e0a973a3..f57b2999a9c 100644 --- a/dlls/win32u/vulkan.c +++ b/dlls/win32u/vulkan.c @@ -64,7 +64,6 @@ static void *win32u_vkGetInstanceProcAddr( VkInstance instance, const char *name TRACE( "instance %p, name %s\n", instance, debugstr_a(name) );
if (!strcmp( name, "vkCreateInstance" )) return vulkan_funcs.p_vkCreateInstance; - if (!strcmp( name, "vkEnumerateInstanceExtensionProperties" )) return vulkan_funcs.p_vkEnumerateInstanceExtensionProperties;
if (!instance) return p_vkGetInstanceProcAddr( instance, name );
diff --git a/dlls/winemac.drv/vulkan.c b/dlls/winemac.drv/vulkan.c index 52928ec3d44..e76422280af 100644 --- a/dlls/winemac.drv/vulkan.c +++ b/dlls/winemac.drv/vulkan.c @@ -84,7 +84,6 @@ static VkResult (*pvkCreateMetalSurfaceEXT)(VkInstance, const VkMetalSurfaceCrea 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 (*pvkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *, VkSurfaceCapabilities2KHR *); static VkResult (*pvkGetSwapchainImagesKHR)(VkDevice, VkSwapchainKHR, uint32_t *, VkImage *); static VkResult (*pvkQueuePresentKHR)(VkQueue, const VkPresentInfoKHR *); @@ -318,59 +317,6 @@ static void macdrv_vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapcha pvkDestroySwapchainKHR(device, swapchain, NULL /* allocator */); }
-static VkResult macdrv_vkEnumerateInstanceExtensionProperties(const char *layer_name, - uint32_t *count, VkExtensionProperties* properties) -{ - unsigned int i; - BOOL seen_surface = FALSE; - VkResult res; - - TRACE("layer_name %s, count %p, properties %p\n", debugstr_a(layer_name), count, properties); - - /* This shouldn't get called with layer_name set, the ICD loader prevents it. */ - if (layer_name) - { - ERR("Layer enumeration not supported from ICD.\n"); - return VK_ERROR_LAYER_NOT_PRESENT; - } - - /* We will return at most the same number of instance extensions reported by the host back to - * winevulkan. Along the way we may replace MoltenVK extensions with their win32 equivalents, - * or remove redundant extensions outright. - * Winevulkan will perform more detailed filtering as it knows whether it has thunks - * for a particular extension. - */ - res = pvkEnumerateInstanceExtensionProperties(layer_name, count, properties); - if (!properties || res < 0) - return res; - - for (i = 0; i < *count; i++) - { - /* For now the only MoltenVK extensions we need to fixup. Long-term we may need an array. */ - if (!strcmp(properties[i].extensionName, "VK_MVK_macos_surface") || - !strcmp(properties[i].extensionName, "VK_EXT_metal_surface")) - { - if (seen_surface) - { - /* If we've already seen a surface extension, just hide this one. */ - memmove(properties + i, properties + i + 1, (*count - i - 1) * sizeof(*properties)); - --*count; - --i; - continue; - } - TRACE("Substituting %s for VK_KHR_win32_surface\n", properties[i].extensionName); - - snprintf(properties[i].extensionName, sizeof(properties[i].extensionName), - VK_KHR_WIN32_SURFACE_EXTENSION_NAME); - properties[i].specVersion = VK_KHR_WIN32_SURFACE_SPEC_VERSION; - seen_surface = TRUE; - } - } - - TRACE("Returning %u extensions.\n", *count); - return res; -} - static VkBool32 macdrv_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice phys_dev, uint32_t index) { @@ -432,7 +378,6 @@ static const struct vulkan_funcs vulkan_funcs = macdrv_vkDestroyInstance, macdrv_vkDestroySurfaceKHR, macdrv_vkDestroySwapchainKHR, - macdrv_vkEnumerateInstanceExtensionProperties, NULL, NULL, macdrv_vkGetPhysicalDeviceWin32PresentationSupportKHR, @@ -458,7 +403,6 @@ UINT macdrv_VulkanInit(UINT version, void *vulkan_handle, struct vulkan_funcs *d LOAD_FUNCPTR(vkDestroyInstance) LOAD_FUNCPTR(vkDestroySurfaceKHR) LOAD_FUNCPTR(vkDestroySwapchainKHR) - LOAD_FUNCPTR(vkEnumerateInstanceExtensionProperties) LOAD_FUNCPTR(vkGetSwapchainImagesKHR) LOAD_FUNCPTR(vkQueuePresentKHR) #undef LOAD_FUNCPTR diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 1455247870f..fd4362e1e4e 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -164,11 +164,6 @@ PERF_CRITICAL_FUNCTIONS = [ "vkGetDescriptorEXT", ]
-# Functions part of our winevulkan graphics driver interface. -# DRIVER_VERSION should be bumped on any change to driver interface -# in FUNCTION_OVERRIDES -DRIVER_VERSION = 19 - # Table of functions for which we have a special implementation. # These are regular device / instance functions for which we need # to do more work compared to a regular thunk or because they are @@ -207,7 +202,6 @@ USER_DRIVER_FUNCS = { "vkDestroyInstance", "vkDestroySurfaceKHR", "vkDestroySwapchainKHR", - "vkEnumerateInstanceExtensionProperties", "vkGetDeviceProcAddr", "vkGetInstanceProcAddr", "vkGetPhysicalDeviceWin32PresentationSupportKHR", diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c index 7b91202b961..fd1d2006318 100644 --- a/dlls/winevulkan/vulkan.c +++ b/dlls/winevulkan/vulkan.c @@ -32,6 +32,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(vulkan);
+static PFN_vkEnumerateInstanceVersion p_vkEnumerateInstanceVersion; +static PFN_vkEnumerateInstanceExtensionProperties p_vkEnumerateInstanceExtensionProperties; + static int window_surface_compare(const void *key, const struct rb_entry *entry) { const struct wine_surface *surface = RB_ENTRY_VALUE(entry, struct wine_surface, window_entry); @@ -545,6 +548,9 @@ NTSTATUS init_vulkan(void *args) return STATUS_UNSUCCESSFUL; }
+ p_vkEnumerateInstanceVersion = vk_funcs->p_vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceVersion"); + p_vkEnumerateInstanceExtensionProperties = vk_funcs->p_vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceExtensionProperties"); + if (is_wow64()) { SYSTEM_BASIC_INFORMATION info; @@ -1006,14 +1012,14 @@ VkResult wine_vkEnumerateInstanceExtensionProperties(const char *name, uint32_t unsigned int i, j, surface; VkResult res;
- res = vk_funcs->p_vkEnumerateInstanceExtensionProperties(NULL, &num_host_properties, NULL); + res = p_vkEnumerateInstanceExtensionProperties(NULL, &num_host_properties, NULL); if (res != VK_SUCCESS) return res;
if (!(host_properties = calloc(num_host_properties, sizeof(*host_properties)))) return VK_ERROR_OUT_OF_HOST_MEMORY;
- res = vk_funcs->p_vkEnumerateInstanceExtensionProperties(NULL, &num_host_properties, host_properties); + res = p_vkEnumerateInstanceExtensionProperties(NULL, &num_host_properties, host_properties); if (res != VK_SUCCESS) { ERR("Failed to retrieve host properties, res=%d.\n", res); @@ -1073,10 +1079,6 @@ VkResult wine_vkEnumerateInstanceVersion(uint32_t *version) { VkResult res;
- static VkResult (*p_vkEnumerateInstanceVersion)(uint32_t *version); - if (!p_vkEnumerateInstanceVersion) - p_vkEnumerateInstanceVersion = vk_funcs->p_vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceVersion"); - if (p_vkEnumerateInstanceVersion) { res = p_vkEnumerateInstanceVersion(version); diff --git a/dlls/winewayland.drv/vulkan.c b/dlls/winewayland.drv/vulkan.c index ec5e9fe6ae8..c7cbdc90e28 100644 --- a/dlls/winewayland.drv/vulkan.c +++ b/dlls/winewayland.drv/vulkan.c @@ -59,7 +59,6 @@ static VkResult (*pvkCreateWaylandSurfaceKHR)(VkInstance, const VkWaylandSurface 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 VkBool32 (*pvkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice, uint32_t, struct wl_display *); static VkResult (*pvkGetSwapchainImagesKHR)(VkDevice, VkSwapchainKHR, uint32_t *, VkImage *); static VkResult (*pvkQueuePresentKHR)(VkQueue, const VkPresentInfoKHR *); @@ -442,48 +441,6 @@ static void wayland_vkDestroySwapchainKHR(VkDevice device, } }
-static VkResult wayland_vkEnumerateInstanceExtensionProperties(const char *layer_name, - uint32_t *count, - VkExtensionProperties* properties) -{ - unsigned int i; - VkResult res; - - TRACE("layer_name %s, count %p, properties %p\n", debugstr_a(layer_name), count, properties); - - /* This shouldn't get called with layer_name set, the ICD loader prevents it. */ - if (layer_name) - { - ERR("Layer enumeration not supported from ICD.\n"); - return VK_ERROR_LAYER_NOT_PRESENT; - } - - /* We will return the same number of instance extensions reported by the host back to - * winevulkan. Along the way we may replace xlib extensions with their win32 equivalents. - * Winevulkan will perform more detailed filtering as it knows whether it has thunks - * for a particular extension. - */ - res = pvkEnumerateInstanceExtensionProperties(layer_name, count, properties); - if (!properties || res < 0) - return res; - - for (i = 0; i < *count; i++) - { - /* For now the only wayland extension we need to fixup. Long-term we may need an array. */ - if (!strcmp(properties[i].extensionName, "VK_KHR_wayland_surface")) - { - TRACE("Substituting VK_KHR_wayland_surface for VK_KHR_win32_surface\n"); - - snprintf(properties[i].extensionName, sizeof(properties[i].extensionName), - VK_KHR_WIN32_SURFACE_EXTENSION_NAME); - properties[i].specVersion = VK_KHR_WIN32_SURFACE_SPEC_VERSION; - } - } - - TRACE("Returning %u extensions.\n", *count); - return res; -} - static VkBool32 wayland_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice phys_dev, uint32_t index) { @@ -525,7 +482,6 @@ static const struct vulkan_funcs vulkan_funcs = .p_vkDestroyInstance = wayland_vkDestroyInstance, .p_vkDestroySurfaceKHR = wayland_vkDestroySurfaceKHR, .p_vkDestroySwapchainKHR = wayland_vkDestroySwapchainKHR, - .p_vkEnumerateInstanceExtensionProperties = wayland_vkEnumerateInstanceExtensionProperties, .p_vkGetPhysicalDeviceWin32PresentationSupportKHR = wayland_vkGetPhysicalDeviceWin32PresentationSupportKHR, .p_vkGetSwapchainImagesKHR = wayland_vkGetSwapchainImagesKHR, .p_vkQueuePresentKHR = wayland_vkQueuePresentKHR, @@ -550,7 +506,6 @@ UINT WAYLAND_VulkanInit(UINT version, void *vulkan_handle, struct vulkan_funcs * LOAD_FUNCPTR(vkDestroyInstance); LOAD_FUNCPTR(vkDestroySurfaceKHR); LOAD_FUNCPTR(vkDestroySwapchainKHR); - LOAD_FUNCPTR(vkEnumerateInstanceExtensionProperties); LOAD_FUNCPTR(vkGetPhysicalDeviceWaylandPresentationSupportKHR); LOAD_FUNCPTR(vkGetSwapchainImagesKHR); LOAD_FUNCPTR(vkQueuePresentKHR); diff --git a/dlls/winex11.drv/vulkan.c b/dlls/winex11.drv/vulkan.c index 39a76c0a0e9..6216a7eb5e8 100644 --- a/dlls/winex11.drv/vulkan.c +++ b/dlls/winex11.drv/vulkan.c @@ -82,7 +82,6 @@ static VkResult (*pvkCreateXlibSurfaceKHR)(VkInstance, const VkXlibSurfaceCreate 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 VkBool32 (*pvkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice, uint32_t, Display *, VisualID); static VkResult (*pvkGetSwapchainImagesKHR)(VkDevice, VkSwapchainKHR, uint32_t *, VkImage *); static VkResult (*pvkQueuePresentKHR)(VkQueue, const VkPresentInfoKHR *); @@ -349,47 +348,6 @@ static void X11DRV_vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapcha pvkDestroySwapchainKHR(device, swapchain, NULL /* allocator */); }
-static VkResult X11DRV_vkEnumerateInstanceExtensionProperties(const char *layer_name, - uint32_t *count, VkExtensionProperties* properties) -{ - unsigned int i; - VkResult res; - - TRACE("layer_name %s, count %p, properties %p\n", debugstr_a(layer_name), count, properties); - - /* This shouldn't get called with layer_name set, the ICD loader prevents it. */ - if (layer_name) - { - ERR("Layer enumeration not supported from ICD.\n"); - return VK_ERROR_LAYER_NOT_PRESENT; - } - - /* We will return the same number of instance extensions reported by the host back to - * winevulkan. Along the way we may replace xlib extensions with their win32 equivalents. - * Winevulkan will perform more detailed filtering as it knows whether it has thunks - * for a particular extension. - */ - res = pvkEnumerateInstanceExtensionProperties(layer_name, count, properties); - if (!properties || res < 0) - return res; - - for (i = 0; i < *count; i++) - { - /* For now the only x11 extension we need to fixup. Long-term we may need an array. */ - if (!strcmp(properties[i].extensionName, "VK_KHR_xlib_surface")) - { - TRACE("Substituting VK_KHR_xlib_surface for VK_KHR_win32_surface\n"); - - snprintf(properties[i].extensionName, sizeof(properties[i].extensionName), - VK_KHR_WIN32_SURFACE_EXTENSION_NAME); - properties[i].specVersion = VK_KHR_WIN32_SURFACE_SPEC_VERSION; - } - } - - TRACE("Returning %u extensions.\n", *count); - return res; -} - static VkBool32 X11DRV_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice phys_dev, uint32_t index) { @@ -455,7 +413,6 @@ static const struct vulkan_funcs vulkan_funcs = X11DRV_vkDestroyInstance, X11DRV_vkDestroySurfaceKHR, X11DRV_vkDestroySwapchainKHR, - X11DRV_vkEnumerateInstanceExtensionProperties, NULL, NULL, X11DRV_vkGetPhysicalDeviceWin32PresentationSupportKHR, @@ -482,7 +439,6 @@ UINT X11DRV_VulkanInit( UINT version, void *vulkan_handle, struct vulkan_funcs * LOAD_FUNCPTR( vkDestroyInstance ); LOAD_FUNCPTR( vkDestroySurfaceKHR ); LOAD_FUNCPTR( vkDestroySwapchainKHR ); - LOAD_FUNCPTR( vkEnumerateInstanceExtensionProperties ); LOAD_FUNCPTR( vkGetPhysicalDeviceXlibPresentationSupportKHR ); LOAD_FUNCPTR( vkGetSwapchainImagesKHR ); LOAD_FUNCPTR( vkQueuePresentKHR ); diff --git a/include/wine/vulkan_driver.h b/include/wine/vulkan_driver.h index 6c72548e02f..495331e397d 100644 --- a/include/wine/vulkan_driver.h +++ b/include/wine/vulkan_driver.h @@ -21,7 +21,7 @@ #define __WINE_VULKAN_DRIVER_H
/* Wine internal vulkan driver version, needs to be bumped upon vulkan_funcs changes. */ -#define WINE_VULKAN_DRIVER_VERSION 19 +#define WINE_VULKAN_DRIVER_VERSION 20
struct vulkan_funcs { @@ -35,7 +35,6 @@ struct vulkan_funcs void (*p_vkDestroyInstance)(VkInstance, const VkAllocationCallbacks *); void (*p_vkDestroySurfaceKHR)(VkInstance, VkSurfaceKHR, const VkAllocationCallbacks *); void (*p_vkDestroySwapchainKHR)(VkDevice, VkSwapchainKHR, const VkAllocationCallbacks *); - VkResult (*p_vkEnumerateInstanceExtensionProperties)(const char *, uint32_t *, VkExtensionProperties *); void * (*p_vkGetDeviceProcAddr)(VkDevice, const char *); void * (*p_vkGetInstanceProcAddr)(VkInstance, const char *); VkBool32 (*p_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice, uint32_t);