win32u: Move vkGet(Instance|Device)ProcAddr out the drivers.
This commit is contained in:
parent
28873ce8c4
commit
9ee2adba14
4 changed files with 46 additions and 90 deletions
|
@ -30,6 +30,9 @@
|
|||
#include "ntstatus.h"
|
||||
#define WIN32_NO_STATUS
|
||||
#include "win32u_private.h"
|
||||
|
||||
#define VK_NO_PROTOTYPES
|
||||
#define WINE_VK_HOST
|
||||
#include "wine/vulkan.h"
|
||||
#include "wine/vulkan_driver.h"
|
||||
|
||||
|
@ -40,6 +43,29 @@ WINE_DEFAULT_DEBUG_CHANNEL(vulkan);
|
|||
static void *vulkan_handle;
|
||||
static struct vulkan_funcs vulkan_funcs;
|
||||
|
||||
static void *(*p_vkGetDeviceProcAddr)(VkDevice, const char *);
|
||||
static void *(*p_vkGetInstanceProcAddr)(VkInstance, const char *);
|
||||
|
||||
static void *win32u_vkGetDeviceProcAddr( VkDevice device, const char *name )
|
||||
{
|
||||
void *proc_addr;
|
||||
|
||||
TRACE( "device %p, name %s\n", device, debugstr_a(name) );
|
||||
|
||||
if ((proc_addr = get_vulkan_driver_device_proc_addr( &vulkan_funcs, name ))) return proc_addr;
|
||||
return p_vkGetDeviceProcAddr( device, name );
|
||||
}
|
||||
|
||||
static void *win32u_vkGetInstanceProcAddr( VkInstance instance, const char *name )
|
||||
{
|
||||
void *proc_addr;
|
||||
|
||||
TRACE( "instance %p, name %s\n", instance, debugstr_a(name) );
|
||||
|
||||
if ((proc_addr = get_vulkan_driver_instance_proc_addr( &vulkan_funcs, instance, name ))) return proc_addr;
|
||||
return p_vkGetInstanceProcAddr( instance, name );
|
||||
}
|
||||
|
||||
static void vulkan_init(void)
|
||||
{
|
||||
UINT status;
|
||||
|
@ -58,6 +84,22 @@ static void vulkan_init(void)
|
|||
vulkan_handle = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
#define LOAD_FUNCPTR( f ) \
|
||||
if (!(p_##f = dlsym( vulkan_handle, #f ))) \
|
||||
{ \
|
||||
ERR( "Failed to find " #f "\n" ); \
|
||||
dlclose( vulkan_handle ); \
|
||||
vulkan_handle = NULL; \
|
||||
return; \
|
||||
}
|
||||
|
||||
LOAD_FUNCPTR( vkGetDeviceProcAddr );
|
||||
LOAD_FUNCPTR( vkGetInstanceProcAddr );
|
||||
#undef LOAD_FUNCPTR
|
||||
|
||||
vulkan_funcs.p_vkGetDeviceProcAddr = win32u_vkGetDeviceProcAddr;
|
||||
vulkan_funcs.p_vkGetInstanceProcAddr = win32u_vkGetInstanceProcAddr;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
|
|
@ -85,8 +85,6 @@ 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 void * (*pvkGetDeviceProcAddr)(VkDevice, const char *);
|
||||
static void * (*pvkGetInstanceProcAddr)(VkInstance, const char *);
|
||||
static VkResult (*pvkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *, VkSurfaceCapabilities2KHR *);
|
||||
static VkResult (*pvkGetSwapchainImagesKHR)(VkDevice, VkSwapchainKHR, uint32_t *, VkImage *);
|
||||
static VkResult (*pvkQueuePresentKHR)(VkQueue, const VkPresentInfoKHR *);
|
||||
|
@ -373,30 +371,6 @@ static VkResult macdrv_vkEnumerateInstanceExtensionProperties(const char *layer_
|
|||
return res;
|
||||
}
|
||||
|
||||
static void *macdrv_vkGetDeviceProcAddr(VkDevice device, const char *name)
|
||||
{
|
||||
void *proc_addr;
|
||||
|
||||
TRACE("%p, %s\n", device, debugstr_a(name));
|
||||
|
||||
if ((proc_addr = get_vulkan_driver_device_proc_addr(&vulkan_funcs, name)))
|
||||
return proc_addr;
|
||||
|
||||
return pvkGetDeviceProcAddr(device, name);
|
||||
}
|
||||
|
||||
static void *macdrv_vkGetInstanceProcAddr(VkInstance instance, const char *name)
|
||||
{
|
||||
void *proc_addr;
|
||||
|
||||
TRACE("%p, %s\n", instance, debugstr_a(name));
|
||||
|
||||
if ((proc_addr = get_vulkan_driver_instance_proc_addr(&vulkan_funcs, instance, name)))
|
||||
return proc_addr;
|
||||
|
||||
return pvkGetInstanceProcAddr(instance, name);
|
||||
}
|
||||
|
||||
static VkBool32 macdrv_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice phys_dev,
|
||||
uint32_t index)
|
||||
{
|
||||
|
@ -459,8 +433,8 @@ static const struct vulkan_funcs vulkan_funcs =
|
|||
macdrv_vkDestroySurfaceKHR,
|
||||
macdrv_vkDestroySwapchainKHR,
|
||||
macdrv_vkEnumerateInstanceExtensionProperties,
|
||||
macdrv_vkGetDeviceProcAddr,
|
||||
macdrv_vkGetInstanceProcAddr,
|
||||
NULL,
|
||||
NULL,
|
||||
macdrv_vkGetPhysicalDeviceWin32PresentationSupportKHR,
|
||||
macdrv_vkGetSwapchainImagesKHR,
|
||||
macdrv_vkQueuePresentKHR,
|
||||
|
@ -485,8 +459,6 @@ UINT macdrv_VulkanInit(UINT version, void *vulkan_handle, struct vulkan_funcs *d
|
|||
LOAD_FUNCPTR(vkDestroySurfaceKHR)
|
||||
LOAD_FUNCPTR(vkDestroySwapchainKHR)
|
||||
LOAD_FUNCPTR(vkEnumerateInstanceExtensionProperties)
|
||||
LOAD_FUNCPTR(vkGetDeviceProcAddr)
|
||||
LOAD_FUNCPTR(vkGetInstanceProcAddr)
|
||||
LOAD_FUNCPTR(vkGetSwapchainImagesKHR)
|
||||
LOAD_FUNCPTR(vkQueuePresentKHR)
|
||||
#undef LOAD_FUNCPTR
|
||||
|
|
|
@ -60,8 +60,6 @@ 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 void * (*pvkGetDeviceProcAddr)(VkDevice, const char *);
|
||||
static void * (*pvkGetInstanceProcAddr)(VkInstance, const char *);
|
||||
static VkBool32 (*pvkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice, uint32_t, struct wl_display *);
|
||||
static VkResult (*pvkGetSwapchainImagesKHR)(VkDevice, VkSwapchainKHR, uint32_t *, VkImage *);
|
||||
static VkResult (*pvkQueuePresentKHR)(VkQueue, const VkPresentInfoKHR *);
|
||||
|
@ -486,30 +484,6 @@ static VkResult wayland_vkEnumerateInstanceExtensionProperties(const char *layer
|
|||
return res;
|
||||
}
|
||||
|
||||
static void *wayland_vkGetDeviceProcAddr(VkDevice device, const char *name)
|
||||
{
|
||||
void *proc_addr;
|
||||
|
||||
TRACE("%p, %s\n", device, debugstr_a(name));
|
||||
|
||||
if ((proc_addr = get_vulkan_driver_device_proc_addr(&vulkan_funcs, name)))
|
||||
return proc_addr;
|
||||
|
||||
return pvkGetDeviceProcAddr(device, name);
|
||||
}
|
||||
|
||||
static void *wayland_vkGetInstanceProcAddr(VkInstance instance, const char *name)
|
||||
{
|
||||
void *proc_addr;
|
||||
|
||||
TRACE("%p, %s\n", instance, debugstr_a(name));
|
||||
|
||||
if ((proc_addr = get_vulkan_driver_instance_proc_addr(&vulkan_funcs, instance, name)))
|
||||
return proc_addr;
|
||||
|
||||
return pvkGetInstanceProcAddr(instance, name);
|
||||
}
|
||||
|
||||
static VkBool32 wayland_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice phys_dev,
|
||||
uint32_t index)
|
||||
{
|
||||
|
@ -552,8 +526,6 @@ static const struct vulkan_funcs vulkan_funcs =
|
|||
.p_vkDestroySurfaceKHR = wayland_vkDestroySurfaceKHR,
|
||||
.p_vkDestroySwapchainKHR = wayland_vkDestroySwapchainKHR,
|
||||
.p_vkEnumerateInstanceExtensionProperties = wayland_vkEnumerateInstanceExtensionProperties,
|
||||
.p_vkGetDeviceProcAddr = wayland_vkGetDeviceProcAddr,
|
||||
.p_vkGetInstanceProcAddr = wayland_vkGetInstanceProcAddr,
|
||||
.p_vkGetPhysicalDeviceWin32PresentationSupportKHR = wayland_vkGetPhysicalDeviceWin32PresentationSupportKHR,
|
||||
.p_vkGetSwapchainImagesKHR = wayland_vkGetSwapchainImagesKHR,
|
||||
.p_vkQueuePresentKHR = wayland_vkQueuePresentKHR,
|
||||
|
@ -579,8 +551,6 @@ UINT WAYLAND_VulkanInit(UINT version, void *vulkan_handle, struct vulkan_funcs *
|
|||
LOAD_FUNCPTR(vkDestroySurfaceKHR);
|
||||
LOAD_FUNCPTR(vkDestroySwapchainKHR);
|
||||
LOAD_FUNCPTR(vkEnumerateInstanceExtensionProperties);
|
||||
LOAD_FUNCPTR(vkGetDeviceProcAddr);
|
||||
LOAD_FUNCPTR(vkGetInstanceProcAddr);
|
||||
LOAD_FUNCPTR(vkGetPhysicalDeviceWaylandPresentationSupportKHR);
|
||||
LOAD_FUNCPTR(vkGetSwapchainImagesKHR);
|
||||
LOAD_FUNCPTR(vkQueuePresentKHR);
|
||||
|
|
|
@ -83,8 +83,6 @@ 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 void * (*pvkGetDeviceProcAddr)(VkDevice, const char *);
|
||||
static void * (*pvkGetInstanceProcAddr)(VkInstance, const char *);
|
||||
static VkBool32 (*pvkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice, uint32_t, Display *, VisualID);
|
||||
static VkResult (*pvkGetSwapchainImagesKHR)(VkDevice, VkSwapchainKHR, uint32_t *, VkImage *);
|
||||
static VkResult (*pvkQueuePresentKHR)(VkQueue, const VkPresentInfoKHR *);
|
||||
|
@ -392,30 +390,6 @@ static VkResult X11DRV_vkEnumerateInstanceExtensionProperties(const char *layer_
|
|||
return res;
|
||||
}
|
||||
|
||||
static void *X11DRV_vkGetDeviceProcAddr(VkDevice device, const char *name)
|
||||
{
|
||||
void *proc_addr;
|
||||
|
||||
TRACE("%p, %s\n", device, debugstr_a(name));
|
||||
|
||||
if ((proc_addr = get_vulkan_driver_device_proc_addr( &vulkan_funcs, name )))
|
||||
return proc_addr;
|
||||
|
||||
return pvkGetDeviceProcAddr(device, name);
|
||||
}
|
||||
|
||||
static void *X11DRV_vkGetInstanceProcAddr(VkInstance instance, const char *name)
|
||||
{
|
||||
void *proc_addr;
|
||||
|
||||
TRACE("%p, %s\n", instance, debugstr_a(name));
|
||||
|
||||
if ((proc_addr = get_vulkan_driver_instance_proc_addr( &vulkan_funcs, instance, name )))
|
||||
return proc_addr;
|
||||
|
||||
return pvkGetInstanceProcAddr(instance, name);
|
||||
}
|
||||
|
||||
static VkBool32 X11DRV_vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice phys_dev,
|
||||
uint32_t index)
|
||||
{
|
||||
|
@ -482,8 +456,8 @@ static const struct vulkan_funcs vulkan_funcs =
|
|||
X11DRV_vkDestroySurfaceKHR,
|
||||
X11DRV_vkDestroySwapchainKHR,
|
||||
X11DRV_vkEnumerateInstanceExtensionProperties,
|
||||
X11DRV_vkGetDeviceProcAddr,
|
||||
X11DRV_vkGetInstanceProcAddr,
|
||||
NULL,
|
||||
NULL,
|
||||
X11DRV_vkGetPhysicalDeviceWin32PresentationSupportKHR,
|
||||
X11DRV_vkGetSwapchainImagesKHR,
|
||||
X11DRV_vkQueuePresentKHR,
|
||||
|
@ -509,8 +483,6 @@ UINT X11DRV_VulkanInit( UINT version, void *vulkan_handle, struct vulkan_funcs *
|
|||
LOAD_FUNCPTR( vkDestroySurfaceKHR );
|
||||
LOAD_FUNCPTR( vkDestroySwapchainKHR );
|
||||
LOAD_FUNCPTR( vkEnumerateInstanceExtensionProperties );
|
||||
LOAD_FUNCPTR( vkGetDeviceProcAddr );
|
||||
LOAD_FUNCPTR( vkGetInstanceProcAddr );
|
||||
LOAD_FUNCPTR( vkGetPhysicalDeviceXlibPresentationSupportKHR );
|
||||
LOAD_FUNCPTR( vkGetSwapchainImagesKHR );
|
||||
LOAD_FUNCPTR( vkQueuePresentKHR );
|
||||
|
|
Loading…
Add table
Reference in a new issue