winevulkan: Remove now unnecessary vkEnumerateInstanceExtensionProperties driver entry.
This commit is contained in:
parent
e4e0ce2bc6
commit
5db24dbb32
7 changed files with 9 additions and 160 deletions
|
@ -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 );
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue