Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
a875c185
Commit
a875c185
authored
Mar 27, 2024
by
Rémi Bernon
Committed by
Alexandre Julliard
Mar 28, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winevulkan: Remove now unnecessary vkCreateInstance driver entry.
parent
c7da2450
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
17 additions
and
244 deletions
+17
-244
d3dkmt.c
dlls/win32u/d3dkmt.c
+3
-1
vulkan.c
dlls/win32u/vulkan.c
+0
-2
vulkan.c
dlls/winemac.drv/vulkan.c
+0
-78
make_vulkan
dlls/winevulkan/make_vulkan
+0
-1
vulkan.c
dlls/winevulkan/vulkan.c
+3
-1
vulkan.c
dlls/winewayland.drv/vulkan.c
+0
-74
vulkan.c
dlls/winex11.drv/vulkan.c
+0
-78
xrandr.c
dlls/winex11.drv/xrandr.c
+10
-7
vulkan_driver.h
include/wine/vulkan_driver.h
+1
-2
No files found.
dlls/win32u/d3dkmt.c
View file @
a875c185
...
...
@@ -78,6 +78,7 @@ static void d3dkmt_init_vulkan(void)
.
enabledExtensionCount
=
ARRAY_SIZE
(
extensions
),
.
ppEnabledExtensionNames
=
extensions
,
};
PFN_vkCreateInstance
p_vkCreateInstance
;
VkResult
vr
;
if
(
!
(
vulkan_funcs
=
__wine_get_vulkan_driver
(
WINE_VULKAN_DRIVER_VERSION
)))
...
...
@@ -86,7 +87,8 @@ static void d3dkmt_init_vulkan(void)
return
;
}
if
((
vr
=
vulkan_funcs
->
p_vkCreateInstance
(
&
create_info
,
NULL
,
&
d3dkmt_vk_instance
)))
p_vkCreateInstance
=
vulkan_funcs
->
p_vkGetInstanceProcAddr
(
NULL
,
"vkCreateInstance"
);
if
((
vr
=
p_vkCreateInstance
(
&
create_info
,
NULL
,
&
d3dkmt_vk_instance
)))
{
WARN
(
"Failed to create a Vulkan instance, vr %d.
\n
"
,
vr
);
vulkan_funcs
=
NULL
;
...
...
dlls/win32u/vulkan.c
View file @
a875c185
...
...
@@ -63,8 +63,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
(
!
instance
)
return
p_vkGetInstanceProcAddr
(
instance
,
name
);
if
(
!
strcmp
(
name
,
"vkCreateWin32SurfaceKHR"
))
return
vulkan_funcs
.
p_vkCreateWin32SurfaceKHR
;
...
...
dlls/winemac.drv/vulkan.c
View file @
a875c185
...
...
@@ -77,7 +77,6 @@ typedef struct VkMetalSurfaceCreateInfoEXT
const
void
*
pLayer
;
/* CAMetalLayer */
}
VkMetalSurfaceCreateInfoEXT
;
static
VkResult
(
*
pvkCreateInstance
)(
const
VkInstanceCreateInfo
*
,
const
VkAllocationCallbacks
*
,
VkInstance
*
);
static
VkResult
(
*
pvkCreateSwapchainKHR
)(
VkDevice
,
const
VkSwapchainCreateInfoKHR
*
,
const
VkAllocationCallbacks
*
,
VkSwapchainKHR
*
);
static
VkResult
(
*
pvkCreateMacOSSurfaceMVK
)(
VkInstance
,
const
VkMacOSSurfaceCreateInfoMVK
*
,
const
VkAllocationCallbacks
*
,
VkSurfaceKHR
*
);
static
VkResult
(
*
pvkCreateMetalSurfaceEXT
)(
VkInstance
,
const
VkMetalSurfaceCreateInfoEXT
*
,
const
VkAllocationCallbacks
*
,
VkSurfaceKHR
*
);
...
...
@@ -95,54 +94,6 @@ static inline struct wine_vk_surface *surface_from_handle(VkSurfaceKHR handle)
return
(
struct
wine_vk_surface
*
)(
uintptr_t
)
handle
;
}
/* Helper function for converting between win32 and MoltenVK compatible VkInstanceCreateInfo.
* Caller is responsible for allocation and cleanup of 'dst'.
*/
static
VkResult
wine_vk_instance_convert_create_info
(
const
VkInstanceCreateInfo
*
src
,
VkInstanceCreateInfo
*
dst
)
{
unsigned
int
i
;
const
char
**
enabled_extensions
=
NULL
;
dst
->
sType
=
src
->
sType
;
dst
->
flags
=
src
->
flags
;
dst
->
pApplicationInfo
=
src
->
pApplicationInfo
;
dst
->
pNext
=
src
->
pNext
;
dst
->
enabledLayerCount
=
0
;
dst
->
ppEnabledLayerNames
=
NULL
;
dst
->
enabledExtensionCount
=
0
;
dst
->
ppEnabledExtensionNames
=
NULL
;
if
(
src
->
enabledExtensionCount
>
0
)
{
enabled_extensions
=
calloc
(
src
->
enabledExtensionCount
,
sizeof
(
*
src
->
ppEnabledExtensionNames
));
if
(
!
enabled_extensions
)
{
ERR
(
"Failed to allocate memory for enabled extensions
\n
"
);
return
VK_ERROR_OUT_OF_HOST_MEMORY
;
}
for
(
i
=
0
;
i
<
src
->
enabledExtensionCount
;
i
++
)
{
/* Substitute extension with MoltenVK ones else copy. Long-term, when we
* support more extensions, we should store these in a list.
*/
if
(
!
strcmp
(
src
->
ppEnabledExtensionNames
[
i
],
"VK_KHR_win32_surface"
))
{
enabled_extensions
[
i
]
=
pvkCreateMetalSurfaceEXT
?
"VK_EXT_metal_surface"
:
"VK_MVK_macos_surface"
;
}
else
{
enabled_extensions
[
i
]
=
src
->
ppEnabledExtensionNames
[
i
];
}
}
dst
->
ppEnabledExtensionNames
=
enabled_extensions
;
dst
->
enabledExtensionCount
=
src
->
enabledExtensionCount
;
}
return
VK_SUCCESS
;
}
static
void
wine_vk_surface_destroy
(
VkInstance
instance
,
struct
wine_vk_surface
*
surface
)
{
pvkDestroySurfaceKHR
(
instance
,
surface
->
host_surface
,
NULL
/* allocator */
);
...
...
@@ -156,33 +107,6 @@ static void wine_vk_surface_destroy(VkInstance instance, struct wine_vk_surface
free
(
surface
);
}
static
VkResult
macdrv_vkCreateInstance
(
const
VkInstanceCreateInfo
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkInstance
*
instance
)
{
VkInstanceCreateInfo
create_info_host
;
VkResult
res
;
TRACE
(
"create_info %p, allocator %p, instance %p
\n
"
,
create_info
,
allocator
,
instance
);
if
(
allocator
)
FIXME
(
"Support for allocation callbacks not implemented yet
\n
"
);
/* Perform a second pass on converting VkInstanceCreateInfo. Winevulkan
* performed a first pass in which it handles everything except for WSI
* functionality such as VK_KHR_win32_surface. Handle this now.
*/
res
=
wine_vk_instance_convert_create_info
(
create_info
,
&
create_info_host
);
if
(
res
!=
VK_SUCCESS
)
{
ERR
(
"Failed to convert instance create info, res=%d
\n
"
,
res
);
return
res
;
}
res
=
pvkCreateInstance
(
&
create_info_host
,
NULL
/* allocator */
,
instance
);
free
((
void
*
)
create_info_host
.
ppEnabledExtensionNames
);
return
res
;
}
static
VkResult
macdrv_vkCreateSwapchainKHR
(
VkDevice
device
,
const
VkSwapchainCreateInfoKHR
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkSwapchainKHR
*
swapchain
)
...
...
@@ -377,7 +301,6 @@ static VkSurfaceKHR macdrv_wine_get_host_surface(VkSurfaceKHR surface)
static
const
struct
vulkan_funcs
vulkan_funcs
=
{
macdrv_vkCreateInstance
,
macdrv_vkCreateSwapchainKHR
,
macdrv_vkCreateWin32SurfaceKHR
,
macdrv_vkDestroyInstance
,
...
...
@@ -402,7 +325,6 @@ UINT macdrv_VulkanInit(UINT version, void *vulkan_handle, struct vulkan_funcs *d
}
#define LOAD_FUNCPTR(f) if ((p##f = dlsym(vulkan_handle, #f)) == NULL) return STATUS_PROCEDURE_NOT_FOUND;
LOAD_FUNCPTR
(
vkCreateInstance
)
LOAD_FUNCPTR
(
vkCreateSwapchainKHR
)
LOAD_FUNCPTR
(
vkCreateMacOSSurfaceMVK
)
LOAD_FUNCPTR
(
vkCreateMetalSurfaceEXT
)
...
...
dlls/winevulkan/make_vulkan
View file @
a875c185
...
...
@@ -196,7 +196,6 @@ FUNCTION_OVERRIDES = {
# functions for which a user driver entry must be generated
USER_DRIVER_FUNCS
=
{
"vkCreateInstance"
,
"vkCreateSwapchainKHR"
,
"vkCreateWin32SurfaceKHR"
,
"vkDestroyInstance"
,
...
...
dlls/winevulkan/vulkan.c
View file @
a875c185
...
...
@@ -32,6 +32,7 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
vulkan
);
static
PFN_vkCreateInstance
p_vkCreateInstance
;
static
PFN_vkEnumerateInstanceVersion
p_vkEnumerateInstanceVersion
;
static
PFN_vkEnumerateInstanceExtensionProperties
p_vkEnumerateInstanceExtensionProperties
;
...
...
@@ -548,6 +549,7 @@ NTSTATUS init_vulkan(void *args)
return
STATUS_UNSUCCESSFUL
;
}
p_vkCreateInstance
=
vk_funcs
->
p_vkGetInstanceProcAddr
(
NULL
,
"vkCreateInstance"
);
p_vkEnumerateInstanceVersion
=
vk_funcs
->
p_vkGetInstanceProcAddr
(
NULL
,
"vkEnumerateInstanceVersion"
);
p_vkEnumerateInstanceExtensionProperties
=
vk_funcs
->
p_vkGetInstanceProcAddr
(
NULL
,
"vkEnumerateInstanceExtensionProperties"
);
...
...
@@ -880,7 +882,7 @@ VkResult wine_vkCreateInstance(const VkInstanceCreateInfo *create_info,
init_conversion_context
(
&
ctx
);
res
=
wine_vk_instance_convert_create_info
(
&
ctx
,
create_info
,
&
create_info_host
,
object
);
if
(
res
==
VK_SUCCESS
)
res
=
vk_funcs
->
p_vkCreateInstance
(
&
create_info_host
,
NULL
/* allocator */
,
&
object
->
host_instance
);
res
=
p_vkCreateInstance
(
&
create_info_host
,
NULL
/* allocator */
,
&
object
->
host_instance
);
free_conversion_context
(
&
ctx
);
if
(
res
!=
VK_SUCCESS
)
{
...
...
dlls/winewayland.drv/vulkan.c
View file @
a875c185
...
...
@@ -53,7 +53,6 @@ typedef struct VkWaylandSurfaceCreateInfoKHR
struct
wl_surface
*
surface
;
}
VkWaylandSurfaceCreateInfoKHR
;
static
VkResult
(
*
pvkCreateInstance
)(
const
VkInstanceCreateInfo
*
,
const
VkAllocationCallbacks
*
,
VkInstance
*
);
static
VkResult
(
*
pvkCreateSwapchainKHR
)(
VkDevice
,
const
VkSwapchainCreateInfoKHR
*
,
const
VkAllocationCallbacks
*
,
VkSwapchainKHR
*
);
static
VkResult
(
*
pvkCreateWaylandSurfaceKHR
)(
VkInstance
,
const
VkWaylandSurfaceCreateInfoKHR
*
,
const
VkAllocationCallbacks
*
,
VkSurfaceKHR
*
);
static
void
(
*
pvkDestroyInstance
)(
VkInstance
,
const
VkAllocationCallbacks
*
);
...
...
@@ -144,49 +143,6 @@ static struct wine_vk_swapchain *wine_vk_swapchain_from_handle(VkSwapchainKHR ha
return
NULL
;
}
/* Helper function for converting between win32 and Wayland compatible VkInstanceCreateInfo.
* Caller is responsible for allocation and cleanup of 'dst'. */
static
VkResult
wine_vk_instance_convert_create_info
(
const
VkInstanceCreateInfo
*
src
,
VkInstanceCreateInfo
*
dst
)
{
unsigned
int
i
;
const
char
**
enabled_extensions
=
NULL
;
dst
->
sType
=
src
->
sType
;
dst
->
flags
=
src
->
flags
;
dst
->
pApplicationInfo
=
src
->
pApplicationInfo
;
dst
->
pNext
=
src
->
pNext
;
dst
->
enabledLayerCount
=
0
;
dst
->
ppEnabledLayerNames
=
NULL
;
dst
->
enabledExtensionCount
=
0
;
dst
->
ppEnabledExtensionNames
=
NULL
;
if
(
src
->
enabledExtensionCount
>
0
)
{
enabled_extensions
=
calloc
(
src
->
enabledExtensionCount
,
sizeof
(
*
src
->
ppEnabledExtensionNames
));
if
(
!
enabled_extensions
)
{
ERR
(
"Failed to allocate memory for enabled extensions
\n
"
);
return
VK_ERROR_OUT_OF_HOST_MEMORY
;
}
for
(
i
=
0
;
i
<
src
->
enabledExtensionCount
;
i
++
)
{
/* Substitute extension with Wayland ones else copy. Long-term, when we
* support more extensions, we should store these in a list. */
if
(
!
strcmp
(
src
->
ppEnabledExtensionNames
[
i
],
"VK_KHR_win32_surface"
))
enabled_extensions
[
i
]
=
"VK_KHR_wayland_surface"
;
else
enabled_extensions
[
i
]
=
src
->
ppEnabledExtensionNames
[
i
];
}
dst
->
ppEnabledExtensionNames
=
enabled_extensions
;
dst
->
enabledExtensionCount
=
src
->
enabledExtensionCount
;
}
return
VK_SUCCESS
;
}
static
void
vk_result_update_out_of_date
(
VkResult
*
res
)
{
/* If the current result is less severe than out_of_date, which for
...
...
@@ -250,34 +206,6 @@ static VkResult check_queue_present(const VkPresentInfoKHR *present_info,
return
res
;
}
static
VkResult
wayland_vkCreateInstance
(
const
VkInstanceCreateInfo
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkInstance
*
instance
)
{
VkInstanceCreateInfo
create_info_host
;
VkResult
res
;
TRACE
(
"create_info %p, allocator %p, instance %p
\n
"
,
create_info
,
allocator
,
instance
);
if
(
allocator
)
FIXME
(
"Support for allocation callbacks not implemented yet
\n
"
);
/* Perform a second pass on converting VkInstanceCreateInfo. Winevulkan
* performed a first pass in which it handles everything except for WSI
* functionality such as VK_KHR_win32_surface. Handle this now. */
res
=
wine_vk_instance_convert_create_info
(
create_info
,
&
create_info_host
);
if
(
res
!=
VK_SUCCESS
)
{
ERR
(
"Failed to convert instance create info, res=%d
\n
"
,
res
);
return
res
;
}
res
=
pvkCreateInstance
(
&
create_info_host
,
NULL
/* allocator */
,
instance
);
free
((
void
*
)
create_info_host
.
ppEnabledExtensionNames
);
return
res
;
}
static
VkResult
wayland_vkCreateSwapchainKHR
(
VkDevice
device
,
const
VkSwapchainCreateInfoKHR
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
...
...
@@ -481,7 +409,6 @@ static VkSurfaceKHR wayland_wine_get_host_surface(VkSurfaceKHR surface)
static
const
struct
vulkan_funcs
vulkan_funcs
=
{
.
p_vkCreateInstance
=
wayland_vkCreateInstance
,
.
p_vkCreateSwapchainKHR
=
wayland_vkCreateSwapchainKHR
,
.
p_vkCreateWin32SurfaceKHR
=
wayland_vkCreateWin32SurfaceKHR
,
.
p_vkDestroyInstance
=
wayland_vkDestroyInstance
,
...
...
@@ -506,7 +433,6 @@ UINT WAYLAND_VulkanInit(UINT version, void *vulkan_handle, struct vulkan_funcs *
}
#define LOAD_FUNCPTR(f) if (!(p##f = dlsym(vulkan_handle, #f))) return STATUS_PROCEDURE_NOT_FOUND;
LOAD_FUNCPTR
(
vkCreateInstance
);
LOAD_FUNCPTR
(
vkCreateSwapchainKHR
);
LOAD_FUNCPTR
(
vkCreateWaylandSurfaceKHR
);
LOAD_FUNCPTR
(
vkDestroyInstance
);
...
...
dlls/winex11.drv/vulkan.c
View file @
a875c185
...
...
@@ -76,7 +76,6 @@ typedef struct VkXlibSurfaceCreateInfoKHR
Window
window
;
}
VkXlibSurfaceCreateInfoKHR
;
static
VkResult
(
*
pvkCreateInstance
)(
const
VkInstanceCreateInfo
*
,
const
VkAllocationCallbacks
*
,
VkInstance
*
);
static
VkResult
(
*
pvkCreateSwapchainKHR
)(
VkDevice
,
const
VkSwapchainCreateInfoKHR
*
,
const
VkAllocationCallbacks
*
,
VkSwapchainKHR
*
);
static
VkResult
(
*
pvkCreateXlibSurfaceKHR
)(
VkInstance
,
const
VkXlibSurfaceCreateInfoKHR
*
,
const
VkAllocationCallbacks
*
,
VkSurfaceKHR
*
);
static
void
(
*
pvkDestroyInstance
)(
VkInstance
,
const
VkAllocationCallbacks
*
);
...
...
@@ -93,54 +92,6 @@ static inline struct wine_vk_surface *surface_from_handle(VkSurfaceKHR handle)
return
(
struct
wine_vk_surface
*
)(
uintptr_t
)
handle
;
}
/* Helper function for converting between win32 and X11 compatible VkInstanceCreateInfo.
* Caller is responsible for allocation and cleanup of 'dst'.
*/
static
VkResult
wine_vk_instance_convert_create_info
(
const
VkInstanceCreateInfo
*
src
,
VkInstanceCreateInfo
*
dst
)
{
unsigned
int
i
;
const
char
**
enabled_extensions
=
NULL
;
dst
->
sType
=
src
->
sType
;
dst
->
flags
=
src
->
flags
;
dst
->
pApplicationInfo
=
src
->
pApplicationInfo
;
dst
->
pNext
=
src
->
pNext
;
dst
->
enabledLayerCount
=
0
;
dst
->
ppEnabledLayerNames
=
NULL
;
dst
->
enabledExtensionCount
=
0
;
dst
->
ppEnabledExtensionNames
=
NULL
;
if
(
src
->
enabledExtensionCount
>
0
)
{
enabled_extensions
=
calloc
(
src
->
enabledExtensionCount
,
sizeof
(
*
src
->
ppEnabledExtensionNames
));
if
(
!
enabled_extensions
)
{
ERR
(
"Failed to allocate memory for enabled extensions
\n
"
);
return
VK_ERROR_OUT_OF_HOST_MEMORY
;
}
for
(
i
=
0
;
i
<
src
->
enabledExtensionCount
;
i
++
)
{
/* Substitute extension with X11 ones else copy. Long-term, when we
* support more extensions, we should store these in a list.
*/
if
(
!
strcmp
(
src
->
ppEnabledExtensionNames
[
i
],
"VK_KHR_win32_surface"
))
{
enabled_extensions
[
i
]
=
"VK_KHR_xlib_surface"
;
}
else
{
enabled_extensions
[
i
]
=
src
->
ppEnabledExtensionNames
[
i
];
}
}
dst
->
ppEnabledExtensionNames
=
enabled_extensions
;
dst
->
enabledExtensionCount
=
src
->
enabledExtensionCount
;
}
return
VK_SUCCESS
;
}
static
struct
wine_vk_surface
*
wine_vk_surface_grab
(
struct
wine_vk_surface
*
surface
)
{
InterlockedIncrement
(
&
surface
->
ref
);
...
...
@@ -198,33 +149,6 @@ void vulkan_thread_detach(void)
pthread_mutex_unlock
(
&
vulkan_mutex
);
}
static
VkResult
X11DRV_vkCreateInstance
(
const
VkInstanceCreateInfo
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkInstance
*
instance
)
{
VkInstanceCreateInfo
create_info_host
;
VkResult
res
;
TRACE
(
"create_info %p, allocator %p, instance %p
\n
"
,
create_info
,
allocator
,
instance
);
if
(
allocator
)
FIXME
(
"Support for allocation callbacks not implemented yet
\n
"
);
/* Perform a second pass on converting VkInstanceCreateInfo. Winevulkan
* performed a first pass in which it handles everything except for WSI
* functionality such as VK_KHR_win32_surface. Handle this now.
*/
res
=
wine_vk_instance_convert_create_info
(
create_info
,
&
create_info_host
);
if
(
res
!=
VK_SUCCESS
)
{
ERR
(
"Failed to convert instance create info, res=%d
\n
"
,
res
);
return
res
;
}
res
=
pvkCreateInstance
(
&
create_info_host
,
NULL
/* allocator */
,
instance
);
free
((
void
*
)
create_info_host
.
ppEnabledExtensionNames
);
return
res
;
}
static
VkResult
X11DRV_vkCreateSwapchainKHR
(
VkDevice
device
,
const
VkSwapchainCreateInfoKHR
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkSwapchainKHR
*
swapchain
)
...
...
@@ -412,7 +336,6 @@ static VkSurfaceKHR X11DRV_wine_get_host_surface( VkSurfaceKHR surface )
static
const
struct
vulkan_funcs
vulkan_funcs
=
{
X11DRV_vkCreateInstance
,
X11DRV_vkCreateSwapchainKHR
,
X11DRV_vkCreateWin32SurfaceKHR
,
X11DRV_vkDestroyInstance
,
...
...
@@ -439,7 +362,6 @@ UINT X11DRV_VulkanInit( UINT version, void *vulkan_handle, struct vulkan_funcs *
init_recursive_mutex
(
&
vulkan_mutex
);
#define LOAD_FUNCPTR( f ) if (!(p##f = dlsym( vulkan_handle, #f ))) return STATUS_PROCEDURE_NOT_FOUND;
LOAD_FUNCPTR
(
vkCreateInstance
);
LOAD_FUNCPTR
(
vkCreateSwapchainKHR
);
LOAD_FUNCPTR
(
vkCreateXlibSurfaceKHR
);
LOAD_FUNCPTR
(
vkDestroyInstance
);
...
...
dlls/winex11.drv/xrandr.c
View file @
a875c185
...
...
@@ -648,6 +648,7 @@ static BOOL get_gpu_properties_from_vulkan( struct gdi_gpu *gpu, const XRRProvid
VkPhysicalDevice
*
vk_physical_devices
=
NULL
;
VkPhysicalDeviceProperties2
properties2
;
VkPhysicalDeviceMemoryProperties
mem_properties
;
PFN_vkCreateInstance
pvkCreateInstance
;
VkInstanceCreateInfo
create_info
;
VkPhysicalDeviceIDProperties
id
;
VkInstance
vk_instance
=
NULL
;
...
...
@@ -664,13 +665,6 @@ static BOOL get_gpu_properties_from_vulkan( struct gdi_gpu *gpu, const XRRProvid
create_info
.
enabledExtensionCount
=
ARRAY_SIZE
(
extensions
);
create_info
.
ppEnabledExtensionNames
=
extensions
;
vr
=
vulkan_funcs
->
p_vkCreateInstance
(
&
create_info
,
NULL
,
&
vk_instance
);
if
(
vr
!=
VK_SUCCESS
)
{
WARN
(
"Failed to create a Vulkan instance, vr %d.
\n
"
,
vr
);
goto
done
;
}
#define LOAD_VK_FUNC(f) \
if (!(p##f = (void *)vulkan_funcs->p_vkGetInstanceProcAddr( vk_instance, #f ))) \
{ \
...
...
@@ -678,6 +672,15 @@ static BOOL get_gpu_properties_from_vulkan( struct gdi_gpu *gpu, const XRRProvid
goto done; \
}
LOAD_VK_FUNC
(
vkCreateInstance
)
vr
=
pvkCreateInstance
(
&
create_info
,
NULL
,
&
vk_instance
);
if
(
vr
!=
VK_SUCCESS
)
{
WARN
(
"Failed to create a Vulkan instance, vr %d.
\n
"
,
vr
);
goto
done
;
}
LOAD_VK_FUNC
(
vkEnumeratePhysicalDevices
)
LOAD_VK_FUNC
(
vkGetPhysicalDeviceProperties2KHR
)
LOAD_VK_FUNC
(
vkGetRandROutputDisplayEXT
)
...
...
include/wine/vulkan_driver.h
View file @
a875c185
...
...
@@ -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 2
0
#define WINE_VULKAN_DRIVER_VERSION 2
1
struct
vulkan_funcs
{
...
...
@@ -29,7 +29,6 @@ struct vulkan_funcs
* needs to provide. Other function calls will be provided indirectly by dispatch
* tables part of dispatchable Vulkan objects such as VkInstance or vkDevice.
*/
VkResult
(
*
p_vkCreateInstance
)(
const
VkInstanceCreateInfo
*
,
const
VkAllocationCallbacks
*
,
VkInstance
*
);
VkResult
(
*
p_vkCreateSwapchainKHR
)(
VkDevice
,
const
VkSwapchainCreateInfoKHR
*
,
const
VkAllocationCallbacks
*
,
VkSwapchainKHR
*
);
VkResult
(
*
p_vkCreateWin32SurfaceKHR
)(
VkInstance
,
const
VkWin32SurfaceCreateInfoKHR
*
,
const
VkAllocationCallbacks
*
,
VkSurfaceKHR
*
);
void
(
*
p_vkDestroyInstance
)(
VkInstance
,
const
VkAllocationCallbacks
*
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment