Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
9972ae6e
Commit
9972ae6e
authored
Sep 23, 2022
by
Jacek Caban
Committed by
Alexandre Julliard
Sep 26, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winevulkan: Don't pass params struct to private thunks.
parent
8d1bdb5f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
225 additions
and
314 deletions
+225
-314
make_vulkan
dlls/winevulkan/make_vulkan
+31
-28
vulkan.c
dlls/winevulkan/vulkan.c
+152
-244
vulkan_thunks.c
dlls/winevulkan/vulkan_thunks.c
+0
-0
vulkan_thunks.h
dlls/winevulkan/vulkan_thunks.h
+42
-42
No files found.
dlls/winevulkan/make_vulkan
View file @
9972ae6e
...
@@ -725,7 +725,7 @@ class VkFunction(object):
...
@@ -725,7 +725,7 @@ class VkFunction(object):
pfn
+=
")"
pfn
+=
")"
return
pfn
return
pfn
def
prototype
(
self
,
call_conv
=
None
,
prefix
=
None
,
postfix
=
None
):
def
prototype
(
self
,
call_conv
=
None
,
prefix
=
None
,
postfix
=
None
,
is_thunk
=
False
):
""" Generate prototype for given function.
""" Generate prototype for given function.
Args:
Args:
...
@@ -747,6 +747,9 @@ class VkFunction(object):
...
@@ -747,6 +747,9 @@ class VkFunction(object):
# Add all the parameters.
# Add all the parameters.
proto
+=
", "
.
join
([
p
.
definition
()
for
p
in
self
.
params
])
proto
+=
", "
.
join
([
p
.
definition
()
for
p
in
self
.
params
])
if
is_thunk
and
self
.
extra_param
:
proto
+=
", void *"
+
self
.
extra_param
if
postfix
is
not
None
:
if
postfix
is
not
None
:
proto
+=
") {0}"
.
format
(
postfix
)
proto
+=
") {0}"
.
format
(
postfix
)
else
:
else
:
...
@@ -794,7 +797,7 @@ class VkFunction(object):
...
@@ -794,7 +797,7 @@ class VkFunction(object):
else
:
else
:
body
+=
" {0} {1}_host;
\n
"
.
format
(
p
.
type
,
p
.
name
)
body
+=
" {0} {1}_host;
\n
"
.
format
(
p
.
type
,
p
.
name
)
if
not
self
.
needs_private_thunk
()
:
if
self
.
thunk_type
==
ThunkType
.
PUBLIC
:
body
+=
" {0}
\n
"
.
format
(
self
.
trace
(
params_prefix
=
params_prefix
))
body
+=
" {0}
\n
"
.
format
(
self
.
trace
(
params_prefix
=
params_prefix
))
# Call any win_to_host conversion calls.
# Call any win_to_host conversion calls.
...
@@ -804,21 +807,23 @@ class VkFunction(object):
...
@@ -804,21 +807,23 @@ class VkFunction(object):
# Build list of parameters containing converted and non-converted parameters.
# Build list of parameters containing converted and non-converted parameters.
# The param itself knows if conversion is needed and applies it when we set conv=True.
# The param itself knows if conversion is needed and applies it when we set conv=True.
params
=
", "
.
join
([
p
.
variable
(
conv
=
conv
,
params_prefix
=
params_prefix
)
for
p
in
self
.
params
])
params
=
", "
.
join
([
p
.
variable
(
conv
=
conv
,
unwrap
=
unwrap
,
params_prefix
=
params_prefix
)
for
p
in
self
.
params
])
if
self
.
extra_param
:
params
+=
", {0}{1}"
.
format
(
params_prefix
,
self
.
extra_param
)
if
unwrap
or
self
.
thunk_type
==
ThunkType
.
PUBLIC
:
func_prefix
=
"{0}.p_"
.
format
(
self
.
params
[
0
]
.
dispatch_table
(
params_prefix
))
else
:
func_prefix
=
"wine_"
# Call the native Vulkan function.
# Call the native Vulkan function.
if
self
.
type
==
"void"
:
if
self
.
type
==
"void"
:
body
+=
" {0}.p_{1}({2});
\n
"
.
format
(
self
.
params
[
0
]
.
dispatch_table
(
params_prefix
),
body
+=
" {0}{1}({2});
\n
"
.
format
(
func_prefix
,
self
.
name
,
params
)
self
.
name
,
params
)
else
:
else
:
body
+=
" {0}result = {1}.p_{2}({3});
\n
"
.
format
(
result_prefix
,
body
+=
" {0}result = {1}{2}({3});
\n
"
.
format
(
result_prefix
,
func_prefix
,
self
.
name
,
params
)
self
.
params
[
0
]
.
dispatch_table
(
params_prefix
),
self
.
name
,
params
)
body
+=
"
\n
"
# Call any host_to_win conversion calls.
# Call any host_to_win conversion calls.
if
conv
:
if
conv
and
unwrap
:
for
p
in
self
.
params
:
for
p
in
self
.
params
:
if
not
p
.
output_conv
:
if
not
p
.
output_conv
:
continue
continue
...
@@ -885,7 +890,7 @@ class VkFunction(object):
...
@@ -885,7 +890,7 @@ class VkFunction(object):
thunk
=
"NTSTATUS {0}{1}(void *args)
\n
"
.
format
(
prefix
,
self
.
name
)
thunk
=
"NTSTATUS {0}{1}(void *args)
\n
"
.
format
(
prefix
,
self
.
name
)
thunk
+=
"{
\n
"
thunk
+=
"{
\n
"
thunk
+=
" struct {0}_params *params = args;
\n
"
.
format
(
self
.
name
)
thunk
+=
" struct {0}_params *params = args;
\n
"
.
format
(
self
.
name
)
thunk
+=
self
.
body
(
conv
=
conv
,
unwrap
=
not
self
.
needs_private_thunk
()
,
params_prefix
=
"params->"
)
thunk
+=
self
.
body
(
conv
=
conv
,
unwrap
=
self
.
thunk_type
==
ThunkType
.
PUBLIC
,
params_prefix
=
"params->"
)
thunk
+=
"}
\n\n
"
thunk
+=
"}
\n\n
"
return
thunk
return
thunk
...
@@ -1810,7 +1815,7 @@ class VkParam(VkVariable):
...
@@ -1810,7 +1815,7 @@ class VkParam(VkVariable):
LOGGER
.
error
(
"Unhandled spec conversion for type: {0}"
.
format
(
self
.
type
))
LOGGER
.
error
(
"Unhandled spec conversion for type: {0}"
.
format
(
self
.
type
))
def
variable
(
self
,
conv
=
False
,
params_prefix
=
""
):
def
variable
(
self
,
conv
,
unwrap
,
params_prefix
=
""
):
""" Returns 'glue' code during generation of a function call on how to access the variable.
""" Returns 'glue' code during generation of a function call on how to access the variable.
This function handles various scenarios such as 'unwrapping' if dispatchable objects and
This function handles various scenarios such as 'unwrapping' if dispatchable objects and
renaming of parameters in case of win32 -> host conversion.
renaming of parameters in case of win32 -> host conversion.
...
@@ -1821,16 +1826,16 @@ class VkParam(VkVariable):
...
@@ -1821,16 +1826,16 @@ class VkParam(VkVariable):
# Hack until we enable allocation callbacks from ICD to application. These are a joy
# Hack until we enable allocation callbacks from ICD to application. These are a joy
# to enable one day, because of calling convention conversion.
# to enable one day, because of calling convention conversion.
if
"VkAllocationCallbacks"
in
self
.
type
:
if
unwrap
and
"VkAllocationCallbacks"
in
self
.
type
:
LOGGER
.
debug
(
"TODO: setting NULL VkAllocationCallbacks for {0}"
.
format
(
self
.
name
))
LOGGER
.
debug
(
"TODO: setting NULL VkAllocationCallbacks for {0}"
.
format
(
self
.
name
))
return
"NULL"
return
"NULL"
if
self
.
needs_unwrapping
(
)
or
(
conv
and
self
.
needs_conversion
()):
if
(
unwrap
and
self
.
needs_unwrapping
()
)
or
(
conv
and
self
.
needs_conversion
()):
if
self
.
is_dynamic_array
():
if
self
.
is_dynamic_array
():
return
"{0}_host"
.
format
(
self
.
name
)
return
"{0}_host"
.
format
(
self
.
name
)
else
:
else
:
return
"&{0}_host"
.
format
(
self
.
name
)
return
"&{0}_host"
.
format
(
self
.
name
)
el
se
:
el
if
unwrap
:
if
self
.
object_type
!=
None
and
self
.
type
==
"uint64_t"
:
if
self
.
object_type
!=
None
and
self
.
type
==
"uint64_t"
:
return
"wine_vk_unwrap_handle({0}{1}, {0}{2})"
.
format
(
params_prefix
,
self
.
object_type
,
self
.
name
)
return
"wine_vk_unwrap_handle({0}{1}, {0}{2})"
.
format
(
params_prefix
,
self
.
object_type
,
self
.
name
)
...
@@ -1839,6 +1844,8 @@ class VkParam(VkVariable):
...
@@ -1839,6 +1844,8 @@ class VkParam(VkVariable):
p
=
"{0}{1}"
.
format
(
params_prefix
,
self
.
name
)
p
=
"{0}{1}"
.
format
(
params_prefix
,
self
.
name
)
driver_handle
=
self
.
handle
.
driver_handle
(
p
)
if
self
.
is_handle
()
else
None
driver_handle
=
self
.
handle
.
driver_handle
(
p
)
if
self
.
is_handle
()
else
None
return
driver_handle
if
driver_handle
else
p
return
driver_handle
if
driver_handle
else
p
else
:
return
"{0}{1}"
.
format
(
params_prefix
,
self
.
name
)
class
VkStruct
(
Sequence
):
class
VkStruct
(
Sequence
):
...
@@ -2710,21 +2717,19 @@ class VkGenerator(object):
...
@@ -2710,21 +2717,19 @@ class VkGenerator(object):
for
vk_func
in
self
.
registry
.
funcs
.
values
():
for
vk_func
in
self
.
registry
.
funcs
.
values
():
if
not
vk_func
.
needs_exposing
():
if
not
vk_func
.
needs_exposing
():
continue
continue
if
vk_func
.
loader_thunk_type
==
ThunkType
.
NONE
or
vk_func
.
thunk_type
==
ThunkType
.
NONE
:
if
vk_func
.
loader_thunk_type
==
ThunkType
.
NONE
:
continue
continue
f
.
write
(
"#if !defined(USE_STRUCT_CONVERSION)
\n\n
"
)
f
.
write
(
"#if !defined(USE_STRUCT_CONVERSION)
\n\n
"
)
if
vk_func
.
needs_private_thunk
():
if
vk_func
.
needs_private_thunk
():
f
.
write
(
vk_func
.
thunk
(
prefix
=
"thunk_"
))
f
.
write
(
vk_func
.
thunk
(
prefix
=
"thunk_"
))
else
:
f
.
write
(
"static "
)
f
.
write
(
"static "
)
f
.
write
(
vk_func
.
thunk
(
prefix
=
"thunk64_"
))
f
.
write
(
vk_func
.
thunk
(
prefix
=
"thunk64_"
))
f
.
write
(
"#else /* USE_STRUCT_CONVERSION */
\n\n
"
)
f
.
write
(
"#else /* USE_STRUCT_CONVERSION */
\n\n
"
)
if
vk_func
.
needs_private_thunk
():
if
vk_func
.
needs_private_thunk
():
f
.
write
(
vk_func
.
thunk
(
prefix
=
"thunk_"
,
conv
=
True
))
f
.
write
(
vk_func
.
thunk
(
prefix
=
"thunk_"
,
conv
=
True
))
else
:
f
.
write
(
"static "
)
f
.
write
(
"static "
)
f
.
write
(
vk_func
.
thunk
(
prefix
=
"thunk32_"
,
conv
=
vk_func
.
thunk_type
==
ThunkType
.
PUBLIC
))
f
.
write
(
vk_func
.
thunk
(
prefix
=
"thunk32_"
,
conv
=
True
))
f
.
write
(
"#endif /* USE_STRUCT_CONVERSION */
\n\n
"
)
f
.
write
(
"#endif /* USE_STRUCT_CONVERSION */
\n\n
"
)
# Create array of device extensions.
# Create array of device extensions.
...
@@ -2814,8 +2819,7 @@ class VkGenerator(object):
...
@@ -2814,8 +2819,7 @@ class VkGenerator(object):
if
vk_func
.
loader_thunk_type
==
ThunkType
.
NONE
:
if
vk_func
.
loader_thunk_type
==
ThunkType
.
NONE
:
continue
continue
prefix
=
"thunk64_"
if
vk_func
.
thunk_type
==
ThunkType
.
PUBLIC
else
"wine_"
f
.
write
(
" {1}{0},
\n
"
.
format
(
vk_func
.
name
,
"thunk64_"
))
f
.
write
(
" {1}{0},
\n
"
.
format
(
vk_func
.
name
,
prefix
))
f
.
write
(
"};
\n
"
)
f
.
write
(
"};
\n
"
)
f
.
write
(
"C_ASSERT(ARRAYSIZE(__wine_unix_call_funcs) == unix_count);
\n\n
"
)
f
.
write
(
"C_ASSERT(ARRAYSIZE(__wine_unix_call_funcs) == unix_count);
\n\n
"
)
...
@@ -2832,8 +2836,7 @@ class VkGenerator(object):
...
@@ -2832,8 +2836,7 @@ class VkGenerator(object):
if
vk_func
.
loader_thunk_type
==
ThunkType
.
NONE
:
if
vk_func
.
loader_thunk_type
==
ThunkType
.
NONE
:
continue
continue
prefix
=
"thunk32_"
if
vk_func
.
thunk_type
==
ThunkType
.
PUBLIC
else
"wine_"
f
.
write
(
" {1}{0},
\n
"
.
format
(
vk_func
.
name
,
"thunk32_"
))
f
.
write
(
" {1}{0},
\n
"
.
format
(
vk_func
.
name
,
prefix
))
f
.
write
(
"};
\n
"
)
f
.
write
(
"};
\n
"
)
f
.
write
(
"C_ASSERT(ARRAYSIZE(__wine_unix_call_funcs) == unix_count);
\n\n
"
)
f
.
write
(
"C_ASSERT(ARRAYSIZE(__wine_unix_call_funcs) == unix_count);
\n\n
"
)
...
@@ -2860,7 +2863,7 @@ class VkGenerator(object):
...
@@ -2860,7 +2863,7 @@ class VkGenerator(object):
if
vk_func
.
needs_thunk
()
and
not
vk_func
.
needs_private_thunk
():
if
vk_func
.
needs_thunk
()
and
not
vk_func
.
needs_private_thunk
():
continue
continue
f
.
write
(
"
NTSTATUS {0}{1}(void *args) DECLSPEC_HIDDEN;
\n
"
.
format
(
prefix
,
vk_func
.
name
))
f
.
write
(
"
{0};
\n
"
.
format
(
vk_func
.
prototype
(
prefix
=
prefix
,
postfix
=
"DECLSPEC_HIDDEN"
,
is_thunk
=
True
)
))
f
.
write
(
"
\n
"
)
f
.
write
(
"
\n
"
)
f
.
write
(
"/* Private thunks */
\n
"
)
f
.
write
(
"/* Private thunks */
\n
"
)
...
...
dlls/winevulkan/vulkan.c
View file @
9972ae6e
...
@@ -645,12 +645,10 @@ static void wine_vk_instance_free(struct wine_instance *instance)
...
@@ -645,12 +645,10 @@ static void wine_vk_instance_free(struct wine_instance *instance)
free
(
instance
);
free
(
instance
);
}
}
NTSTATUS
wine_vkAllocateCommandBuffers
(
void
*
args
)
VkResult
wine_vkAllocateCommandBuffers
(
VkDevice
handle
,
const
VkCommandBufferAllocateInfo
*
allocate_info
,
VkCommandBuffer
*
buffers
)
{
{
struct
vkAllocateCommandBuffers_params
*
params
=
args
;
struct
wine_device
*
device
=
wine_device_from_handle
(
handle
);
struct
wine_device
*
device
=
wine_device_from_handle
(
params
->
device
);
const
VkCommandBufferAllocateInfo
*
allocate_info
=
params
->
pAllocateInfo
;
VkCommandBuffer
*
buffers
=
params
->
pCommandBuffers
;
struct
wine_cmd_buffer
*
buffer
;
struct
wine_cmd_buffer
*
buffer
;
struct
wine_cmd_pool
*
pool
;
struct
wine_cmd_pool
*
pool
;
VkResult
res
=
VK_SUCCESS
;
VkResult
res
=
VK_SUCCESS
;
...
@@ -701,14 +699,12 @@ NTSTATUS wine_vkAllocateCommandBuffers(void *args)
...
@@ -701,14 +699,12 @@ NTSTATUS wine_vkAllocateCommandBuffers(void *args)
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkCreateDevice
(
void
*
args
)
VkResult
wine_vkCreateDevice
(
VkPhysicalDevice
phys_dev_handle
,
const
VkDeviceCreateInfo
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkDevice
*
ret_device
,
void
*
client_ptr
)
{
{
struct
vkCreateDevice_params
*
params
=
args
;
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
phys_dev_handle
);
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
params
->
physicalDevice
);
VkDevice
device_handle
=
client_ptr
;
const
VkDeviceCreateInfo
*
create_info
=
params
->
pCreateInfo
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
VkDevice
*
ret_device
=
params
->
pDevice
;
VkDevice
device_handle
=
params
->
client_ptr
;
VkDeviceCreateInfo
create_info_host
;
VkDeviceCreateInfo
create_info_host
;
struct
VkQueue_T
*
queue_handles
;
struct
VkQueue_T
*
queue_handles
;
struct
wine_queue
*
next_queue
;
struct
wine_queue
*
next_queue
;
...
@@ -716,7 +712,7 @@ NTSTATUS wine_vkCreateDevice(void *args)
...
@@ -716,7 +712,7 @@ NTSTATUS wine_vkCreateDevice(void *args)
unsigned
int
i
;
unsigned
int
i
;
VkResult
res
;
VkResult
res
;
TRACE
(
"%p, %p, %p, %p
\n
"
,
phys_dev
,
create_info
,
allocator
,
ret_device
);
TRACE
(
"%p, %p, %p, %p
\n
"
,
phys_dev
_handle
,
create_info
,
allocator
,
ret_device
);
if
(
allocator
)
if
(
allocator
)
FIXME
(
"Support for allocation callbacks not implemented yet
\n
"
);
FIXME
(
"Support for allocation callbacks not implemented yet
\n
"
);
...
@@ -801,13 +797,11 @@ fail:
...
@@ -801,13 +797,11 @@ fail:
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkCreateInstance
(
void
*
args
)
VkResult
wine_vkCreateInstance
(
const
VkInstanceCreateInfo
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkInstance
*
instance
,
void
*
client_ptr
)
{
{
struct
vkCreateInstance_params
*
params
=
args
;
VkInstance
client_instance
=
client_ptr
;
const
VkInstanceCreateInfo
*
create_info
=
params
->
pCreateInfo
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
VkInstance
*
instance
=
params
->
pInstance
;
VkInstance
client_instance
=
params
->
client_ptr
;
VkInstanceCreateInfo
create_info_host
;
VkInstanceCreateInfo
create_info_host
;
const
VkApplicationInfo
*
app_info
;
const
VkApplicationInfo
*
app_info
;
struct
wine_instance
*
object
;
struct
wine_instance
*
object
;
...
@@ -885,11 +879,9 @@ NTSTATUS wine_vkCreateInstance(void *args)
...
@@ -885,11 +879,9 @@ NTSTATUS wine_vkCreateInstance(void *args)
return
VK_SUCCESS
;
return
VK_SUCCESS
;
}
}
NTSTATUS
wine_vkDestroyDevice
(
void
*
args
)
void
wine_vkDestroyDevice
(
VkDevice
handle
,
const
VkAllocationCallbacks
*
allocator
)
{
{
struct
vkDestroyDevice_params
*
params
=
args
;
struct
wine_device
*
device
=
wine_device_from_handle
(
handle
);
struct
wine_device
*
device
=
wine_device_from_handle
(
params
->
device
);
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
TRACE
(
"%p %p
\n
"
,
device
,
allocator
);
TRACE
(
"%p %p
\n
"
,
device
,
allocator
);
...
@@ -897,14 +889,11 @@ NTSTATUS wine_vkDestroyDevice(void *args)
...
@@ -897,14 +889,11 @@ NTSTATUS wine_vkDestroyDevice(void *args)
FIXME
(
"Support for allocation callbacks not implemented yet
\n
"
);
FIXME
(
"Support for allocation callbacks not implemented yet
\n
"
);
wine_vk_device_free
(
device
);
wine_vk_device_free
(
device
);
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkDestroyInstance
(
void
*
args
)
void
wine_vkDestroyInstance
(
VkInstance
handle
,
const
VkAllocationCallbacks
*
allocator
)
{
{
struct
vkDestroyInstance_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
TRACE
(
"%p, %p
\n
"
,
instance
,
allocator
);
TRACE
(
"%p, %p
\n
"
,
instance
,
allocator
);
...
@@ -912,16 +901,12 @@ NTSTATUS wine_vkDestroyInstance(void *args)
...
@@ -912,16 +901,12 @@ NTSTATUS wine_vkDestroyInstance(void *args)
FIXME
(
"Support allocation allocators
\n
"
);
FIXME
(
"Support allocation allocators
\n
"
);
wine_vk_instance_free
(
instance
);
wine_vk_instance_free
(
instance
);
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkEnumerateDeviceExtensionProperties
(
void
*
args
)
VkResult
wine_vkEnumerateDeviceExtensionProperties
(
VkPhysicalDevice
phys_dev_handle
,
const
char
*
layer_name
,
uint32_t
*
count
,
VkExtensionProperties
*
properties
)
{
{
struct
vkEnumerateDeviceExtensionProperties_params
*
params
=
args
;
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
phys_dev_handle
);
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
params
->
physicalDevice
);
const
char
*
layer_name
=
params
->
pLayerName
;
uint32_t
*
count
=
params
->
pPropertyCount
;
VkExtensionProperties
*
properties
=
params
->
pProperties
;
TRACE
(
"%p, %p, %p, %p
\n
"
,
phys_dev
,
layer_name
,
count
,
properties
);
TRACE
(
"%p, %p, %p, %p
\n
"
,
phys_dev
,
layer_name
,
count
,
properties
);
...
@@ -945,11 +930,9 @@ NTSTATUS wine_vkEnumerateDeviceExtensionProperties(void *args)
...
@@ -945,11 +930,9 @@ NTSTATUS wine_vkEnumerateDeviceExtensionProperties(void *args)
return
*
count
<
phys_dev
->
extension_count
?
VK_INCOMPLETE
:
VK_SUCCESS
;
return
*
count
<
phys_dev
->
extension_count
?
VK_INCOMPLETE
:
VK_SUCCESS
;
}
}
NTSTATUS
wine_vkEnumerateInstanceExtensionProperties
(
void
*
args
)
VkResult
wine_vkEnumerateInstanceExtensionProperties
(
const
char
*
name
,
uint32_t
*
count
,
VkExtensionProperties
*
properties
)
{
{
struct
vkEnumerateInstanceExtensionProperties_params
*
params
=
args
;
uint32_t
*
count
=
params
->
pPropertyCount
;
VkExtensionProperties
*
properties
=
params
->
pProperties
;
uint32_t
num_properties
=
0
,
num_host_properties
;
uint32_t
num_properties
=
0
,
num_host_properties
;
VkExtensionProperties
*
host_properties
;
VkExtensionProperties
*
host_properties
;
unsigned
int
i
,
j
;
unsigned
int
i
,
j
;
...
@@ -1004,21 +987,17 @@ NTSTATUS wine_vkEnumerateInstanceExtensionProperties(void *args)
...
@@ -1004,21 +987,17 @@ NTSTATUS wine_vkEnumerateInstanceExtensionProperties(void *args)
return
*
count
<
num_properties
?
VK_INCOMPLETE
:
VK_SUCCESS
;
return
*
count
<
num_properties
?
VK_INCOMPLETE
:
VK_SUCCESS
;
}
}
NTSTATUS
wine_vkEnumerateDeviceLayerProperties
(
void
*
args
)
VkResult
wine_vkEnumerateDeviceLayerProperties
(
VkPhysicalDevice
phys_dev
,
uint32_t
*
count
,
VkLayerProperties
*
properties
)
{
{
struct
vkEnumerateDeviceLayerProperties_params
*
params
=
args
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
count
,
properties
);
uint32_t
*
count
=
params
->
pPropertyCount
;
TRACE
(
"%p, %p, %p
\n
"
,
params
->
physicalDevice
,
count
,
params
->
pProperties
);
*
count
=
0
;
*
count
=
0
;
return
VK_SUCCESS
;
return
VK_SUCCESS
;
}
}
NTSTATUS
wine_vkEnumerateInstanceVersion
(
void
*
args
)
VkResult
wine_vkEnumerateInstanceVersion
(
uint32_t
*
version
)
{
{
struct
vkEnumerateInstanceVersion_params
*
params
=
args
;
uint32_t
*
version
=
params
->
pApiVersion
;
VkResult
res
;
VkResult
res
;
static
VkResult
(
*
p_vkEnumerateInstanceVersion
)(
uint32_t
*
version
);
static
VkResult
(
*
p_vkEnumerateInstanceVersion
)(
uint32_t
*
version
);
...
@@ -1041,12 +1020,9 @@ NTSTATUS wine_vkEnumerateInstanceVersion(void *args)
...
@@ -1041,12 +1020,9 @@ NTSTATUS wine_vkEnumerateInstanceVersion(void *args)
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkEnumeratePhysicalDevices
(
void
*
arg
s
)
VkResult
wine_vkEnumeratePhysicalDevices
(
VkInstance
handle
,
uint32_t
*
count
,
VkPhysicalDevice
*
device
s
)
{
{
struct
vkEnumeratePhysicalDevices_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
uint32_t
*
count
=
params
->
pPhysicalDeviceCount
;
VkPhysicalDevice
*
devices
=
params
->
pPhysicalDevices
;
unsigned
int
i
;
unsigned
int
i
;
TRACE
(
"%p %p %p
\n
"
,
instance
,
count
,
devices
);
TRACE
(
"%p %p %p
\n
"
,
instance
,
count
,
devices
);
...
@@ -1067,18 +1043,15 @@ NTSTATUS wine_vkEnumeratePhysicalDevices(void *args)
...
@@ -1067,18 +1043,15 @@ NTSTATUS wine_vkEnumeratePhysicalDevices(void *args)
return
*
count
<
instance
->
phys_dev_count
?
VK_INCOMPLETE
:
VK_SUCCESS
;
return
*
count
<
instance
->
phys_dev_count
?
VK_INCOMPLETE
:
VK_SUCCESS
;
}
}
NTSTATUS
wine_vkFreeCommandBuffers
(
void
*
args
)
void
wine_vkFreeCommandBuffers
(
VkDevice
handle
,
VkCommandPool
command_pool
,
uint32_t
count
,
const
VkCommandBuffer
*
buffers
)
{
{
struct
vkFreeCommandBuffers_params
*
params
=
args
;
struct
wine_device
*
device
=
wine_device_from_handle
(
handle
);
struct
wine_device
*
device
=
wine_device_from_handle
(
params
->
device
);
struct
wine_cmd_pool
*
pool
=
wine_cmd_pool_from_handle
(
command_pool
);
struct
wine_cmd_pool
*
pool
=
wine_cmd_pool_from_handle
(
params
->
commandPool
);
uint32_t
count
=
params
->
commandBufferCount
;
const
VkCommandBuffer
*
buffers
=
params
->
pCommandBuffers
;
TRACE
(
"%p, 0x%s, %u, %p
\n
"
,
device
,
wine_dbgstr_longlong
(
params
->
commandP
ool
),
count
,
buffers
);
TRACE
(
"%p, 0x%s, %u, %p
\n
"
,
device
,
wine_dbgstr_longlong
(
command_p
ool
),
count
,
buffers
);
wine_vk_free_command_buffers
(
device
,
pool
,
count
,
buffers
);
wine_vk_free_command_buffers
(
device
,
pool
,
count
,
buffers
);
return
STATUS_SUCCESS
;
}
}
static
VkQueue
wine_vk_device_find_queue
(
VkDevice
handle
,
const
VkDeviceQueueInfo2
*
info
)
static
VkQueue
wine_vk_device_find_queue
(
VkDevice
handle
,
const
VkDeviceQueueInfo2
*
info
)
...
@@ -1101,13 +1074,8 @@ static VkQueue wine_vk_device_find_queue(VkDevice handle, const VkDeviceQueueInf
...
@@ -1101,13 +1074,8 @@ static VkQueue wine_vk_device_find_queue(VkDevice handle, const VkDeviceQueueInf
return
VK_NULL_HANDLE
;
return
VK_NULL_HANDLE
;
}
}
NTSTATUS
wine_vkGetDeviceQueue
(
void
*
args
)
void
wine_vkGetDeviceQueue
(
VkDevice
device
,
uint32_t
family_index
,
uint32_t
queue_index
,
VkQueue
*
queue
)
{
{
struct
vkGetDeviceQueue_params
*
params
=
args
;
VkDevice
device
=
params
->
device
;
uint32_t
family_index
=
params
->
queueFamilyIndex
;
uint32_t
queue_index
=
params
->
queueIndex
;
VkQueue
*
queue
=
params
->
pQueue
;
VkDeviceQueueInfo2
queue_info
;
VkDeviceQueueInfo2
queue_info
;
TRACE
(
"%p, %u, %u, %p
\n
"
,
device
,
family_index
,
queue_index
,
queue
);
TRACE
(
"%p, %u, %u, %p
\n
"
,
device
,
family_index
,
queue_index
,
queue
);
...
@@ -1119,15 +1087,10 @@ NTSTATUS wine_vkGetDeviceQueue(void *args)
...
@@ -1119,15 +1087,10 @@ NTSTATUS wine_vkGetDeviceQueue(void *args)
queue_info
.
queueIndex
=
queue_index
;
queue_info
.
queueIndex
=
queue_index
;
*
queue
=
wine_vk_device_find_queue
(
device
,
&
queue_info
);
*
queue
=
wine_vk_device_find_queue
(
device
,
&
queue_info
);
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkGetDeviceQueue2
(
void
*
args
)
void
wine_vkGetDeviceQueue2
(
VkDevice
device
,
const
VkDeviceQueueInfo2
*
info
,
VkQueue
*
queue
)
{
{
struct
vkGetDeviceQueue2_params
*
params
=
args
;
VkDevice
device
=
params
->
device
;
const
VkDeviceQueueInfo2
*
info
=
params
->
pQueueInfo
;
VkQueue
*
queue
=
params
->
pQueue
;
const
VkBaseInStructure
*
chain
;
const
VkBaseInStructure
*
chain
;
TRACE
(
"%p, %p, %p
\n
"
,
device
,
info
,
queue
);
TRACE
(
"%p, %p, %p
\n
"
,
device
,
info
,
queue
);
...
@@ -1136,17 +1099,14 @@ NTSTATUS wine_vkGetDeviceQueue2(void *args)
...
@@ -1136,17 +1099,14 @@ NTSTATUS wine_vkGetDeviceQueue2(void *args)
FIXME
(
"Ignoring a linked structure of type %u.
\n
"
,
chain
->
sType
);
FIXME
(
"Ignoring a linked structure of type %u.
\n
"
,
chain
->
sType
);
*
queue
=
wine_vk_device_find_queue
(
device
,
info
);
*
queue
=
wine_vk_device_find_queue
(
device
,
info
);
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkCreateCommandPool
(
void
*
args
)
VkResult
wine_vkCreateCommandPool
(
VkDevice
device_handle
,
const
VkCommandPoolCreateInfo
*
info
,
const
VkAllocationCallbacks
*
allocator
,
VkCommandPool
*
command_pool
,
void
*
client_ptr
)
{
{
struct
vkCreateCommandPool_params
*
params
=
args
;
struct
wine_device
*
device
=
wine_device_from_handle
(
device_handle
);
struct
wine_device
*
device
=
wine_device_from_handle
(
params
->
device
);
struct
vk_command_pool
*
handle
=
client_ptr
;
const
VkCommandPoolCreateInfo
*
info
=
params
->
pCreateInfo
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
VkCommandPool
*
command_pool
=
params
->
pCommandPool
;
struct
vk_command_pool
*
handle
=
params
->
client_ptr
;
struct
wine_cmd_pool
*
object
;
struct
wine_cmd_pool
*
object
;
VkResult
res
;
VkResult
res
;
...
@@ -1176,12 +1136,10 @@ NTSTATUS wine_vkCreateCommandPool(void *args)
...
@@ -1176,12 +1136,10 @@ NTSTATUS wine_vkCreateCommandPool(void *args)
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkDestroyCommandPool
(
void
*
args
)
void
wine_vkDestroyCommandPool
(
VkDevice
device_handle
,
VkCommandPool
handle
,
const
VkAllocationCallbacks
*
allocator
)
{
{
struct
vkDestroyCommandPool_params
*
params
=
args
;
struct
wine_device
*
device
=
wine_device_from_handle
(
device_handle
);
struct
wine_device
*
device
=
wine_device_from_handle
(
params
->
device
);
VkCommandPool
handle
=
params
->
commandPool
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
struct
wine_cmd_pool
*
pool
=
wine_cmd_pool_from_handle
(
handle
);
struct
wine_cmd_pool
*
pool
=
wine_cmd_pool_from_handle
(
handle
);
TRACE
(
"%p, 0x%s, %p
\n
"
,
device
,
wine_dbgstr_longlong
(
handle
),
allocator
);
TRACE
(
"%p, 0x%s, %p
\n
"
,
device
,
wine_dbgstr_longlong
(
handle
),
allocator
);
...
@@ -1193,7 +1151,6 @@ NTSTATUS wine_vkDestroyCommandPool(void *args)
...
@@ -1193,7 +1151,6 @@ NTSTATUS wine_vkDestroyCommandPool(void *args)
device
->
funcs
.
p_vkDestroyCommandPool
(
device
->
device
,
pool
->
command_pool
,
NULL
);
device
->
funcs
.
p_vkDestroyCommandPool
(
device
->
device
,
pool
->
command_pool
,
NULL
);
free
(
pool
);
free
(
pool
);
return
STATUS_SUCCESS
;
}
}
static
VkResult
wine_vk_enumerate_physical_device_groups
(
struct
wine_instance
*
instance
,
static
VkResult
wine_vk_enumerate_physical_device_groups
(
struct
wine_instance
*
instance
,
...
@@ -1223,88 +1180,66 @@ static VkResult wine_vk_enumerate_physical_device_groups(struct wine_instance *i
...
@@ -1223,88 +1180,66 @@ static VkResult wine_vk_enumerate_physical_device_groups(struct wine_instance *i
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkEnumeratePhysicalDeviceGroups
(
void
*
args
)
VkResult
wine_vkEnumeratePhysicalDeviceGroups
(
VkInstance
handle
,
uint32_t
*
count
,
VkPhysicalDeviceGroupProperties
*
properties
)
{
{
struct
vkEnumeratePhysicalDeviceGroups_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
uint32_t
*
count
=
params
->
pPhysicalDeviceGroupCount
;
VkPhysicalDeviceGroupProperties
*
properties
=
params
->
pPhysicalDeviceGroupProperties
;
TRACE
(
"%p, %p, %p
\n
"
,
instance
,
count
,
properties
);
TRACE
(
"%p, %p, %p
\n
"
,
instance
,
count
,
properties
);
return
wine_vk_enumerate_physical_device_groups
(
instance
,
return
wine_vk_enumerate_physical_device_groups
(
instance
,
instance
->
funcs
.
p_vkEnumeratePhysicalDeviceGroups
,
count
,
properties
);
instance
->
funcs
.
p_vkEnumeratePhysicalDeviceGroups
,
count
,
properties
);
}
}
NTSTATUS
wine_vkEnumeratePhysicalDeviceGroupsKHR
(
void
*
args
)
VkResult
wine_vkEnumeratePhysicalDeviceGroupsKHR
(
VkInstance
handle
,
uint32_t
*
count
,
VkPhysicalDeviceGroupProperties
*
properties
)
{
{
struct
vkEnumeratePhysicalDeviceGroupsKHR_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
uint32_t
*
count
=
params
->
pPhysicalDeviceGroupCount
;
VkPhysicalDeviceGroupProperties
*
properties
=
params
->
pPhysicalDeviceGroupProperties
;
TRACE
(
"%p, %p, %p
\n
"
,
instance
,
count
,
properties
);
TRACE
(
"%p, %p, %p
\n
"
,
instance
,
count
,
properties
);
return
wine_vk_enumerate_physical_device_groups
(
instance
,
return
wine_vk_enumerate_physical_device_groups
(
instance
,
instance
->
funcs
.
p_vkEnumeratePhysicalDeviceGroupsKHR
,
count
,
properties
);
instance
->
funcs
.
p_vkEnumeratePhysicalDeviceGroupsKHR
,
count
,
properties
);
}
}
NTSTATUS
wine_vkGetPhysicalDeviceExternalFenceProperties
(
void
*
args
)
void
wine_vkGetPhysicalDeviceExternalFenceProperties
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceExternalFenceInfo
*
fence_info
,
VkExternalFenceProperties
*
properties
)
{
{
struct
vkGetPhysicalDeviceExternalFenceProperties_params
*
params
=
args
;
VkPhysicalDevice
phys_dev
=
params
->
physicalDevice
;
const
VkPhysicalDeviceExternalFenceInfo
*
fence_info
=
params
->
pExternalFenceInfo
;
VkExternalFenceProperties
*
properties
=
params
->
pExternalFenceProperties
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
fence_info
,
properties
);
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
fence_info
,
properties
);
properties
->
exportFromImportedHandleTypes
=
0
;
properties
->
exportFromImportedHandleTypes
=
0
;
properties
->
compatibleHandleTypes
=
0
;
properties
->
compatibleHandleTypes
=
0
;
properties
->
externalFenceFeatures
=
0
;
properties
->
externalFenceFeatures
=
0
;
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceExternalFencePropertiesKHR
(
void
*
args
)
void
wine_vkGetPhysicalDeviceExternalFencePropertiesKHR
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceExternalFenceInfo
*
fence_info
,
VkExternalFenceProperties
*
properties
)
{
{
struct
vkGetPhysicalDeviceExternalFencePropertiesKHR_params
*
params
=
args
;
VkPhysicalDevice
phys_dev
=
params
->
physicalDevice
;
const
VkPhysicalDeviceExternalFenceInfo
*
fence_info
=
params
->
pExternalFenceInfo
;
VkExternalFenceProperties
*
properties
=
params
->
pExternalFenceProperties
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
fence_info
,
properties
);
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
fence_info
,
properties
);
properties
->
exportFromImportedHandleTypes
=
0
;
properties
->
exportFromImportedHandleTypes
=
0
;
properties
->
compatibleHandleTypes
=
0
;
properties
->
compatibleHandleTypes
=
0
;
properties
->
externalFenceFeatures
=
0
;
properties
->
externalFenceFeatures
=
0
;
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceExternalBufferProperties
(
void
*
args
)
void
wine_vkGetPhysicalDeviceExternalBufferProperties
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceExternalBufferInfo
*
buffer_info
,
VkExternalBufferProperties
*
properties
)
{
{
struct
vkGetPhysicalDeviceExternalBufferProperties_params
*
params
=
args
;
VkPhysicalDevice
phys_dev
=
params
->
physicalDevice
;
const
VkPhysicalDeviceExternalBufferInfo
*
buffer_info
=
params
->
pExternalBufferInfo
;
VkExternalBufferProperties
*
properties
=
params
->
pExternalBufferProperties
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
buffer_info
,
properties
);
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
buffer_info
,
properties
);
memset
(
&
properties
->
externalMemoryProperties
,
0
,
sizeof
(
properties
->
externalMemoryProperties
));
memset
(
&
properties
->
externalMemoryProperties
,
0
,
sizeof
(
properties
->
externalMemoryProperties
));
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceExternalBufferPropertiesKHR
(
void
*
args
)
void
wine_vkGetPhysicalDeviceExternalBufferPropertiesKHR
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceExternalBufferInfo
*
buffer_info
,
VkExternalBufferProperties
*
properties
)
{
{
struct
vkGetPhysicalDeviceExternalBufferPropertiesKHR_params
*
params
=
args
;
VkPhysicalDevice
phys_dev
=
params
->
physicalDevice
;
const
VkPhysicalDeviceExternalBufferInfo
*
buffer_info
=
params
->
pExternalBufferInfo
;
VkExternalBufferProperties
*
properties
=
params
->
pExternalBufferProperties
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
buffer_info
,
properties
);
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
buffer_info
,
properties
);
memset
(
&
properties
->
externalMemoryProperties
,
0
,
sizeof
(
properties
->
externalMemoryProperties
));
memset
(
&
properties
->
externalMemoryProperties
,
0
,
sizeof
(
properties
->
externalMemoryProperties
));
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceImageFormatProperties2
(
void
*
args
)
VkResult
wine_vkGetPhysicalDeviceImageFormatProperties2
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceImageFormatInfo2
*
format_info
,
VkImageFormatProperties2
*
properties
)
{
{
struct
vkGetPhysicalDeviceImageFormatProperties2_params
*
params
=
args
;
VkPhysicalDevice
phys_dev
=
params
->
physicalDevice
;
const
VkPhysicalDeviceImageFormatInfo2
*
format_info
=
params
->
pImageFormatInfo
;
VkImageFormatProperties2
*
properties
=
params
->
pImageFormatProperties
;
VkExternalImageFormatProperties
*
external_image_properties
;
VkExternalImageFormatProperties
*
external_image_properties
;
VkResult
res
;
VkResult
res
;
...
@@ -1323,12 +1258,10 @@ NTSTATUS wine_vkGetPhysicalDeviceImageFormatProperties2(void *args)
...
@@ -1323,12 +1258,10 @@ NTSTATUS wine_vkGetPhysicalDeviceImageFormatProperties2(void *args)
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceImageFormatProperties2KHR
(
void
*
args
)
VkResult
wine_vkGetPhysicalDeviceImageFormatProperties2KHR
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceImageFormatInfo2
*
format_info
,
VkImageFormatProperties2
*
properties
)
{
{
struct
vkGetPhysicalDeviceImageFormatProperties2KHR_params
*
params
=
args
;
VkPhysicalDevice
phys_dev
=
params
->
physicalDevice
;
const
VkPhysicalDeviceImageFormatInfo2
*
format_info
=
params
->
pImageFormatInfo
;
VkImageFormatProperties2
*
properties
=
params
->
pImageFormatProperties
;
VkExternalImageFormatProperties
*
external_image_properties
;
VkExternalImageFormatProperties
*
external_image_properties
;
VkResult
res
;
VkResult
res
;
...
@@ -1393,14 +1326,11 @@ static inline uint64_t convert_timestamp(VkTimeDomainEXT host_domain, VkTimeDoma
...
@@ -1393,14 +1326,11 @@ static inline uint64_t convert_timestamp(VkTimeDomainEXT host_domain, VkTimeDoma
return
value
;
return
value
;
}
}
NTSTATUS
wine_vkGetCalibratedTimestampsEXT
(
void
*
args
)
VkResult
wine_vkGetCalibratedTimestampsEXT
(
VkDevice
handle
,
uint32_t
timestamp_count
,
const
VkCalibratedTimestampInfoEXT
*
timestamp_infos
,
uint64_t
*
timestamps
,
uint64_t
*
max_deviation
)
{
{
struct
vkGetCalibratedTimestampsEXT_params
*
params
=
args
;
struct
wine_device
*
device
=
wine_device_from_handle
(
handle
);
struct
wine_device
*
device
=
wine_device_from_handle
(
params
->
device
);
uint32_t
timestamp_count
=
params
->
timestampCount
;
const
VkCalibratedTimestampInfoEXT
*
timestamp_infos
=
params
->
pTimestampInfos
;
uint64_t
*
timestamps
=
params
->
pTimestamps
;
uint64_t
*
max_deviation
=
params
->
pMaxDeviation
;
VkCalibratedTimestampInfoEXT
*
host_timestamp_infos
;
VkCalibratedTimestampInfoEXT
*
host_timestamp_infos
;
unsigned
int
i
;
unsigned
int
i
;
VkResult
res
;
VkResult
res
;
...
@@ -1428,12 +1358,11 @@ NTSTATUS wine_vkGetCalibratedTimestampsEXT(void *args)
...
@@ -1428,12 +1358,11 @@ NTSTATUS wine_vkGetCalibratedTimestampsEXT(void *args)
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(
void
*
args
)
VkResult
wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(
VkPhysicalDevice
handle
,
uint32_t
*
time_domain_count
,
VkTimeDomainEXT
*
time_domains
)
{
{
struct
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_params
*
params
=
args
;
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
handle
);
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
params
->
physicalDevice
);
uint32_t
*
time_domain_count
=
params
->
pTimeDomainCount
;
VkTimeDomainEXT
*
time_domains
=
params
->
pTimeDomains
;
BOOL
supports_device
=
FALSE
,
supports_monotonic
=
FALSE
,
supports_monotonic_raw
=
FALSE
;
BOOL
supports_device
=
FALSE
,
supports_monotonic
=
FALSE
,
supports_monotonic_raw
=
FALSE
;
const
VkTimeDomainEXT
performance_counter_domain
=
get_performance_counter_time_domain
();
const
VkTimeDomainEXT
performance_counter_domain
=
get_performance_counter_time_domain
();
VkTimeDomainEXT
*
host_time_domains
;
VkTimeDomainEXT
*
host_time_domains
;
...
@@ -1503,41 +1432,30 @@ NTSTATUS wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(void *args)
...
@@ -1503,41 +1432,30 @@ NTSTATUS wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(void *args)
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceExternalSemaphoreProperties
(
void
*
args
)
void
wine_vkGetPhysicalDeviceExternalSemaphoreProperties
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceExternalSemaphoreInfo
*
info
,
VkExternalSemaphoreProperties
*
properties
)
{
{
struct
vkGetPhysicalDeviceExternalSemaphoreProperties_params
*
params
=
args
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
info
,
properties
);
VkPhysicalDevice
phys_dev
=
params
->
physicalDevice
;
const
VkPhysicalDeviceExternalSemaphoreInfo
*
semaphore_info
=
params
->
pExternalSemaphoreInfo
;
VkExternalSemaphoreProperties
*
properties
=
params
->
pExternalSemaphoreProperties
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
semaphore_info
,
properties
);
properties
->
exportFromImportedHandleTypes
=
0
;
properties
->
exportFromImportedHandleTypes
=
0
;
properties
->
compatibleHandleTypes
=
0
;
properties
->
compatibleHandleTypes
=
0
;
properties
->
externalSemaphoreFeatures
=
0
;
properties
->
externalSemaphoreFeatures
=
0
;
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
(
void
*
args
)
void
wine_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceExternalSemaphoreInfo
*
info
,
VkExternalSemaphoreProperties
*
properties
)
{
{
struct
vkGetPhysicalDeviceExternalSemaphorePropertiesKHR_params
*
params
=
args
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
info
,
properties
);
VkPhysicalDevice
phys_dev
=
params
->
physicalDevice
;
const
VkPhysicalDeviceExternalSemaphoreInfo
*
semaphore_info
=
params
->
pExternalSemaphoreInfo
;
VkExternalSemaphoreProperties
*
properties
=
params
->
pExternalSemaphoreProperties
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
semaphore_info
,
properties
);
properties
->
exportFromImportedHandleTypes
=
0
;
properties
->
exportFromImportedHandleTypes
=
0
;
properties
->
compatibleHandleTypes
=
0
;
properties
->
compatibleHandleTypes
=
0
;
properties
->
externalSemaphoreFeatures
=
0
;
properties
->
externalSemaphoreFeatures
=
0
;
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkCreateWin32SurfaceKHR
(
void
*
args
)
VkResult
wine_vkCreateWin32SurfaceKHR
(
VkInstance
handle
,
const
VkWin32SurfaceCreateInfoKHR
*
createInfo
,
const
VkAllocationCallbacks
*
allocator
,
VkSurfaceKHR
*
surface
)
{
{
struct
vkCreateWin32SurfaceKHR_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
const
VkWin32SurfaceCreateInfoKHR
*
createInfo
=
params
->
pCreateInfo
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
VkSurfaceKHR
*
surface
=
params
->
pSurface
;
struct
wine_surface
*
object
;
struct
wine_surface
*
object
;
VkResult
res
;
VkResult
res
;
...
@@ -1568,24 +1486,21 @@ NTSTATUS wine_vkCreateWin32SurfaceKHR(void *args)
...
@@ -1568,24 +1486,21 @@ NTSTATUS wine_vkCreateWin32SurfaceKHR(void *args)
return
VK_SUCCESS
;
return
VK_SUCCESS
;
}
}
NTSTATUS
wine_vkDestroySurfaceKHR
(
void
*
args
)
void
wine_vkDestroySurfaceKHR
(
VkInstance
handle
,
VkSurfaceKHR
surface
,
const
VkAllocationCallbacks
*
allocator
)
{
{
struct
vkDestroySurfaceKHR_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
VkSurfaceKHR
surface
=
params
->
surface
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
struct
wine_surface
*
object
=
wine_surface_from_handle
(
surface
);
struct
wine_surface
*
object
=
wine_surface_from_handle
(
surface
);
TRACE
(
"%p, 0x%s, %p
\n
"
,
instance
,
wine_dbgstr_longlong
(
surface
),
allocator
);
TRACE
(
"%p, 0x%s, %p
\n
"
,
instance
,
wine_dbgstr_longlong
(
surface
),
allocator
);
if
(
!
object
)
if
(
!
object
)
return
STATUS_SUCCESS
;
return
;
instance
->
funcs
.
p_vkDestroySurfaceKHR
(
instance
->
instance
,
object
->
driver_surface
,
NULL
);
instance
->
funcs
.
p_vkDestroySurfaceKHR
(
instance
->
instance
,
object
->
driver_surface
,
NULL
);
WINE_VK_REMOVE_HANDLE_MAPPING
(
instance
,
object
);
WINE_VK_REMOVE_HANDLE_MAPPING
(
instance
,
object
);
free
(
object
);
free
(
object
);
return
STATUS_SUCCESS
;
}
}
static
inline
void
adjust_max_image_count
(
struct
wine_phys_dev
*
phys_dev
,
VkSurfaceCapabilitiesKHR
*
capabilities
)
static
inline
void
adjust_max_image_count
(
struct
wine_phys_dev
*
phys_dev
,
VkSurfaceCapabilitiesKHR
*
capabilities
)
...
@@ -1603,12 +1518,10 @@ static inline void adjust_max_image_count(struct wine_phys_dev *phys_dev, VkSurf
...
@@ -1603,12 +1518,10 @@ static inline void adjust_max_image_count(struct wine_phys_dev *phys_dev, VkSurf
}
}
}
}
NTSTATUS
wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
(
void
*
args
)
VkResult
wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
(
VkPhysicalDevice
handle
,
VkSurfaceKHR
surface
,
VkSurfaceCapabilitiesKHR
*
capabilities
)
{
{
struct
vkGetPhysicalDeviceSurfaceCapabilitiesKHR_params
*
params
=
args
;
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
handle
);
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
params
->
physicalDevice
);
VkSurfaceKHR
surface
=
params
->
surface
;
VkSurfaceCapabilitiesKHR
*
capabilities
=
params
->
pSurfaceCapabilities
;
VkResult
res
;
VkResult
res
;
TRACE
(
"%p, 0x%s, %p
\n
"
,
phys_dev
,
wine_dbgstr_longlong
(
surface
),
capabilities
);
TRACE
(
"%p, 0x%s, %p
\n
"
,
phys_dev
,
wine_dbgstr_longlong
(
surface
),
capabilities
);
...
@@ -1621,12 +1534,11 @@ NTSTATUS wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(void *args)
...
@@ -1621,12 +1534,11 @@ NTSTATUS wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(void *args)
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR
(
void
*
args
)
VkResult
wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR
(
VkPhysicalDevice
handle
,
const
VkPhysicalDeviceSurfaceInfo2KHR
*
surface_info
,
VkSurfaceCapabilities2KHR
*
capabilities
)
{
{
struct
vkGetPhysicalDeviceSurfaceCapabilities2KHR_params
*
params
=
args
;
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
handle
);
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
params
->
physicalDevice
);
const
VkPhysicalDeviceSurfaceInfo2KHR
*
surface_info
=
params
->
pSurfaceInfo
;
VkSurfaceCapabilities2KHR
*
capabilities
=
params
->
pSurfaceCapabilities
;
VkResult
res
;
VkResult
res
;
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
surface_info
,
capabilities
);
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
surface_info
,
capabilities
);
...
@@ -1639,13 +1551,12 @@ NTSTATUS wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR(void *args)
...
@@ -1639,13 +1551,12 @@ NTSTATUS wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR(void *args)
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkCreateDebugUtilsMessengerEXT
(
void
*
args
)
VkResult
wine_vkCreateDebugUtilsMessengerEXT
(
VkInstance
handle
,
const
VkDebugUtilsMessengerCreateInfoEXT
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkDebugUtilsMessengerEXT
*
messenger
)
{
{
struct
vkCreateDebugUtilsMessengerEXT_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
const
VkDebugUtilsMessengerCreateInfoEXT
*
create_info
=
params
->
pCreateInfo
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
VkDebugUtilsMessengerEXT
*
messenger
=
params
->
pMessenger
;
VkDebugUtilsMessengerCreateInfoEXT
wine_create_info
;
VkDebugUtilsMessengerCreateInfoEXT
wine_create_info
;
struct
wine_debug_utils_messenger
*
object
;
struct
wine_debug_utils_messenger
*
object
;
VkResult
res
;
VkResult
res
;
...
@@ -1681,12 +1592,10 @@ NTSTATUS wine_vkCreateDebugUtilsMessengerEXT(void *args)
...
@@ -1681,12 +1592,10 @@ NTSTATUS wine_vkCreateDebugUtilsMessengerEXT(void *args)
return
VK_SUCCESS
;
return
VK_SUCCESS
;
}
}
NTSTATUS
wine_vkDestroyDebugUtilsMessengerEXT
(
void
*
args
)
void
wine_vkDestroyDebugUtilsMessengerEXT
(
VkInstance
handle
,
VkDebugUtilsMessengerEXT
messenger
,
const
VkAllocationCallbacks
*
allocator
)
{
{
struct
vkDestroyDebugUtilsMessengerEXT_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
VkDebugUtilsMessengerEXT
messenger
=
params
->
messenger
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
struct
wine_debug_utils_messenger
*
object
;
struct
wine_debug_utils_messenger
*
object
;
TRACE
(
"%p, 0x%s, %p
\n
"
,
instance
,
wine_dbgstr_longlong
(
messenger
),
allocator
);
TRACE
(
"%p, 0x%s, %p
\n
"
,
instance
,
wine_dbgstr_longlong
(
messenger
),
allocator
);
...
@@ -1694,22 +1603,20 @@ NTSTATUS wine_vkDestroyDebugUtilsMessengerEXT(void *args)
...
@@ -1694,22 +1603,20 @@ NTSTATUS wine_vkDestroyDebugUtilsMessengerEXT(void *args)
object
=
wine_debug_utils_messenger_from_handle
(
messenger
);
object
=
wine_debug_utils_messenger_from_handle
(
messenger
);
if
(
!
object
)
if
(
!
object
)
return
STATUS_SUCCESS
;
return
;
instance
->
funcs
.
p_vkDestroyDebugUtilsMessengerEXT
(
instance
->
instance
,
object
->
debug_messenger
,
NULL
);
instance
->
funcs
.
p_vkDestroyDebugUtilsMessengerEXT
(
instance
->
instance
,
object
->
debug_messenger
,
NULL
);
WINE_VK_REMOVE_HANDLE_MAPPING
(
instance
,
object
);
WINE_VK_REMOVE_HANDLE_MAPPING
(
instance
,
object
);
free
(
object
);
free
(
object
);
return
STATUS_SUCCESS
;
}
}
NTSTATUS
wine_vkCreateDebugReportCallbackEXT
(
void
*
args
)
VkResult
wine_vkCreateDebugReportCallbackEXT
(
VkInstance
handle
,
const
VkDebugReportCallbackCreateInfoEXT
*
create_info
,
const
VkAllocationCallbacks
*
allocator
,
VkDebugReportCallbackEXT
*
callback
)
{
{
struct
vkCreateDebugReportCallbackEXT_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
const
VkDebugReportCallbackCreateInfoEXT
*
create_info
=
params
->
pCreateInfo
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
VkDebugReportCallbackEXT
*
callback
=
params
->
pCallback
;
VkDebugReportCallbackCreateInfoEXT
wine_create_info
;
VkDebugReportCallbackCreateInfoEXT
wine_create_info
;
struct
wine_debug_report_callback
*
object
;
struct
wine_debug_report_callback
*
object
;
VkResult
res
;
VkResult
res
;
...
@@ -1745,12 +1652,10 @@ NTSTATUS wine_vkCreateDebugReportCallbackEXT(void *args)
...
@@ -1745,12 +1652,10 @@ NTSTATUS wine_vkCreateDebugReportCallbackEXT(void *args)
return
VK_SUCCESS
;
return
VK_SUCCESS
;
}
}
NTSTATUS
wine_vkDestroyDebugReportCallbackEXT
(
void
*
args
)
void
wine_vkDestroyDebugReportCallbackEXT
(
VkInstance
handle
,
VkDebugReportCallbackEXT
callback
,
const
VkAllocationCallbacks
*
allocator
)
{
{
struct
vkDestroyDebugReportCallbackEXT_params
*
params
=
args
;
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
handle
);
struct
wine_instance
*
instance
=
wine_instance_from_handle
(
params
->
instance
);
VkDebugReportCallbackEXT
callback
=
params
->
callback
;
const
VkAllocationCallbacks
*
allocator
=
params
->
pAllocator
;
struct
wine_debug_report_callback
*
object
;
struct
wine_debug_report_callback
*
object
;
TRACE
(
"%p, 0x%s, %p
\n
"
,
instance
,
wine_dbgstr_longlong
(
callback
),
allocator
);
TRACE
(
"%p, 0x%s, %p
\n
"
,
instance
,
wine_dbgstr_longlong
(
callback
),
allocator
);
...
@@ -1758,14 +1663,13 @@ NTSTATUS wine_vkDestroyDebugReportCallbackEXT(void *args)
...
@@ -1758,14 +1663,13 @@ NTSTATUS wine_vkDestroyDebugReportCallbackEXT(void *args)
object
=
wine_debug_report_callback_from_handle
(
callback
);
object
=
wine_debug_report_callback_from_handle
(
callback
);
if
(
!
object
)
if
(
!
object
)
return
STATUS_SUCCESS
;
return
;
instance
->
funcs
.
p_vkDestroyDebugReportCallbackEXT
(
instance
->
instance
,
object
->
debug_callback
,
NULL
);
instance
->
funcs
.
p_vkDestroyDebugReportCallbackEXT
(
instance
->
instance
,
object
->
debug_callback
,
NULL
);
WINE_VK_REMOVE_HANDLE_MAPPING
(
instance
,
object
);
WINE_VK_REMOVE_HANDLE_MAPPING
(
instance
,
object
);
free
(
object
);
free
(
object
);
return
STATUS_SUCCESS
;
}
}
static
void
fixup_pipeline_feedback
(
VkPipelineCreationFeedback
*
feedback
,
uint32_t
count
)
static
void
fixup_pipeline_feedback
(
VkPipelineCreationFeedback
*
feedback
,
uint32_t
count
)
...
@@ -1802,75 +1706,79 @@ static void fixup_pipeline_feedback_info(const void *pipeline_info)
...
@@ -1802,75 +1706,79 @@ static void fixup_pipeline_feedback_info(const void *pipeline_info)
feedback
->
pipelineStageCreationFeedbackCount
);
feedback
->
pipelineStageCreationFeedbackCount
);
}
}
NTSTATUS
wine_vkCreateComputePipelines
(
void
*
args
)
VkResult
wine_vkCreateComputePipelines
(
VkDevice
device
,
VkPipelineCache
pipeline_cache
,
uint32_t
count
,
const
VkComputePipelineCreateInfo
*
create_infos
,
const
VkAllocationCallbacks
*
allocator
,
VkPipeline
*
pipelines
)
{
{
struct
vkCreateComputePipelines_params
*
params
=
args
;
VkResult
res
;
VkResult
res
;
uint32_t
i
;
uint32_t
i
;
TRACE
(
"%p, 0x%s, %u, %p, %p, %p
\n
"
,
params
->
device
,
wine_dbgstr_longlong
(
params
->
pipelineC
ache
),
TRACE
(
"%p, 0x%s, %u, %p, %p, %p
\n
"
,
device
,
wine_dbgstr_longlong
(
pipeline_c
ache
),
params
->
createInfoCount
,
params
->
pCreateInfos
,
params
->
pAllocator
,
params
->
pP
ipelines
);
count
,
create_infos
,
allocator
,
p
ipelines
);
res
=
thunk_vkCreateComputePipelines
(
params
->
device
,
params
->
pipelineCache
,
res
=
thunk_vkCreateComputePipelines
(
device
,
pipeline_cache
,
count
,
create_infos
,
params
->
createInfoCount
,
params
->
pCreateInfos
,
params
->
pAllocator
,
params
->
pP
ipelines
);
allocator
,
p
ipelines
);
for
(
i
=
0
;
i
<
params
->
createInfoC
ount
;
i
++
)
for
(
i
=
0
;
i
<
c
ount
;
i
++
)
fixup_pipeline_feedback_info
(
&
params
->
pCreateI
nfos
[
i
]);
fixup_pipeline_feedback_info
(
&
create_i
nfos
[
i
]);
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkCreateGraphicsPipelines
(
void
*
args
)
VkResult
wine_vkCreateGraphicsPipelines
(
VkDevice
device
,
VkPipelineCache
pipeline_cache
,
uint32_t
count
,
const
VkGraphicsPipelineCreateInfo
*
create_infos
,
const
VkAllocationCallbacks
*
allocator
,
VkPipeline
*
pipelines
)
{
{
struct
vkCreateGraphicsPipelines_params
*
params
=
args
;
VkResult
res
;
VkResult
res
;
uint32_t
i
;
uint32_t
i
;
TRACE
(
"%p, 0x%s, %u, %p, %p, %p
\n
"
,
params
->
device
,
wine_dbgstr_longlong
(
params
->
pipelineC
ache
),
TRACE
(
"%p, 0x%s, %u, %p, %p, %p
\n
"
,
device
,
wine_dbgstr_longlong
(
pipeline_c
ache
),
params
->
createInfoCount
,
params
->
pCreateInfos
,
params
->
pAllocator
,
params
->
pP
ipelines
);
count
,
create_infos
,
allocator
,
p
ipelines
);
res
=
thunk_vkCreateGraphicsPipelines
(
params
->
device
,
params
->
pipelineCache
,
res
=
thunk_vkCreateGraphicsPipelines
(
device
,
pipeline_cache
,
count
,
create_infos
,
params
->
createInfoCount
,
params
->
pCreateInfos
,
params
->
pAllocator
,
params
->
pP
ipelines
);
allocator
,
p
ipelines
);
for
(
i
=
0
;
i
<
params
->
createInfoC
ount
;
i
++
)
for
(
i
=
0
;
i
<
c
ount
;
i
++
)
fixup_pipeline_feedback_info
(
&
params
->
pCreateI
nfos
[
i
]);
fixup_pipeline_feedback_info
(
&
create_i
nfos
[
i
]);
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkCreateRayTracingPipelinesKHR
(
void
*
args
)
VkResult
wine_vkCreateRayTracingPipelinesKHR
(
VkDevice
device
,
VkDeferredOperationKHR
deferred_operation
,
VkPipelineCache
pipeline_cache
,
uint32_t
count
,
const
VkRayTracingPipelineCreateInfoKHR
*
create_infos
,
const
VkAllocationCallbacks
*
allocator
,
VkPipeline
*
pipelines
)
{
{
struct
vkCreateRayTracingPipelinesKHR_params
*
params
=
args
;
VkResult
res
;
VkResult
res
;
uint32_t
i
;
uint32_t
i
;
TRACE
(
"%p, 0x%s, 0x%s, %u, %p, %p, %p
\n
"
,
params
->
device
,
TRACE
(
"%p, 0x%s, 0x%s, %u, %p, %p, %p
\n
"
,
device
,
wine_dbgstr_longlong
(
deferred_operation
),
wine_dbgstr_longlong
(
params
->
deferredOperation
),
wine_dbgstr_longlong
(
params
->
pipelineCache
),
wine_dbgstr_longlong
(
pipeline_cache
),
count
,
create_infos
,
allocator
,
pipelines
);
params
->
createInfoCount
,
params
->
pCreateInfos
,
params
->
pAllocator
,
params
->
pPipelines
);
res
=
thunk_vkCreateRayTracingPipelinesKHR
(
params
->
device
,
params
->
deferredOperation
,
params
->
pipelineC
ache
,
res
=
thunk_vkCreateRayTracingPipelinesKHR
(
device
,
deferred_operation
,
pipeline_c
ache
,
params
->
createInfoCount
,
params
->
pCreateInfos
,
params
->
pAllocator
,
params
->
pP
ipelines
);
count
,
create_infos
,
allocator
,
p
ipelines
);
for
(
i
=
0
;
i
<
params
->
createInfoC
ount
;
i
++
)
for
(
i
=
0
;
i
<
c
ount
;
i
++
)
fixup_pipeline_feedback_info
(
&
params
->
pCreateI
nfos
[
i
]);
fixup_pipeline_feedback_info
(
&
create_i
nfos
[
i
]);
return
res
;
return
res
;
}
}
NTSTATUS
wine_vkCreateRayTracingPipelinesNV
(
void
*
args
)
VkResult
wine_vkCreateRayTracingPipelinesNV
(
VkDevice
device
,
VkPipelineCache
pipeline_cache
,
uint32_t
count
,
const
VkRayTracingPipelineCreateInfoNV
*
create_infos
,
const
VkAllocationCallbacks
*
allocator
,
VkPipeline
*
pipelines
)
{
{
struct
vkCreateRayTracingPipelinesNV_params
*
params
=
args
;
VkResult
res
;
VkResult
res
;
uint32_t
i
;
uint32_t
i
;
TRACE
(
"%p, 0x%s, %u, %p, %p, %p
\n
"
,
params
->
device
,
wine_dbgstr_longlong
(
params
->
pipelineC
ache
),
TRACE
(
"%p, 0x%s, %u, %p, %p, %p
\n
"
,
device
,
wine_dbgstr_longlong
(
pipeline_c
ache
),
params
->
createInfoCount
,
params
->
pCreateInfos
,
params
->
pAllocator
,
params
->
pP
ipelines
);
count
,
create_infos
,
allocator
,
p
ipelines
);
res
=
thunk_vkCreateRayTracingPipelinesNV
(
params
->
device
,
params
->
pipelineCache
,
res
=
thunk_vkCreateRayTracingPipelinesNV
(
device
,
pipeline_cache
,
count
,
create_infos
,
params
->
createInfoCount
,
params
->
pCreateInfos
,
params
->
pAllocator
,
params
->
pP
ipelines
);
allocator
,
p
ipelines
);
for
(
i
=
0
;
i
<
params
->
createInfoC
ount
;
i
++
)
for
(
i
=
0
;
i
<
c
ount
;
i
++
)
fixup_pipeline_feedback_info
(
&
params
->
pCreateI
nfos
[
i
]);
fixup_pipeline_feedback_info
(
&
create_i
nfos
[
i
]);
return
res
;
return
res
;
}
}
...
...
dlls/winevulkan/vulkan_thunks.c
View file @
9972ae6e
This source diff could not be displayed because it is too large. You can
view the blob
instead.
dlls/winevulkan/vulkan_thunks.h
View file @
9972ae6e
...
@@ -15,48 +15,48 @@
...
@@ -15,48 +15,48 @@
#define WINE_VK_VERSION VK_API_VERSION_1_3
#define WINE_VK_VERSION VK_API_VERSION_1_3
/* Functions for which we have custom implementations outside of the thunks. */
/* Functions for which we have custom implementations outside of the thunks. */
NTSTATUS
wine_vkAllocateCommandBuffers
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkAllocateCommandBuffers
(
VkDevice
device
,
const
VkCommandBufferAllocateInfo
*
pAllocateInfo
,
VkCommandBuffer
*
pCommandBuffer
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateCommandPool
(
void
*
args
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateCommandPool
(
VkDevice
device
,
const
VkCommandPoolCreateInfo
*
pCreateInfo
,
const
VkAllocationCallbacks
*
pAllocator
,
VkCommandPool
*
pCommandPool
,
void
*
client_ptr
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateComputePipelines
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateComputePipelines
(
VkDevice
device
,
VkPipelineCache
pipelineCache
,
uint32_t
createInfoCount
,
const
VkComputePipelineCreateInfo
*
pCreateInfos
,
const
VkAllocationCallbacks
*
pAllocator
,
VkPipeline
*
pPipeline
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateDebugReportCallbackEXT
(
void
*
args
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateDebugReportCallbackEXT
(
VkInstance
instance
,
const
VkDebugReportCallbackCreateInfoEXT
*
pCreateInfo
,
const
VkAllocationCallbacks
*
pAllocator
,
VkDebugReportCallbackEXT
*
pCallback
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateDebugUtilsMessengerEXT
(
void
*
args
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateDebugUtilsMessengerEXT
(
VkInstance
instance
,
const
VkDebugUtilsMessengerCreateInfoEXT
*
pCreateInfo
,
const
VkAllocationCallbacks
*
pAllocator
,
VkDebugUtilsMessengerEXT
*
pMessenger
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateDevice
(
void
*
args
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateDevice
(
VkPhysicalDevice
physicalDevice
,
const
VkDeviceCreateInfo
*
pCreateInfo
,
const
VkAllocationCallbacks
*
pAllocator
,
VkDevice
*
pDevice
,
void
*
client_ptr
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateGraphicsPipelines
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateGraphicsPipelines
(
VkDevice
device
,
VkPipelineCache
pipelineCache
,
uint32_t
createInfoCount
,
const
VkGraphicsPipelineCreateInfo
*
pCreateInfos
,
const
VkAllocationCallbacks
*
pAllocator
,
VkPipeline
*
pPipeline
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateInstance
(
void
*
args
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateInstance
(
const
VkInstanceCreateInfo
*
pCreateInfo
,
const
VkAllocationCallbacks
*
pAllocator
,
VkInstance
*
pInstance
,
void
*
client_ptr
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateRayTracingPipelinesKHR
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateRayTracingPipelinesKHR
(
VkDevice
device
,
VkDeferredOperationKHR
deferredOperation
,
VkPipelineCache
pipelineCache
,
uint32_t
createInfoCount
,
const
VkRayTracingPipelineCreateInfoKHR
*
pCreateInfos
,
const
VkAllocationCallbacks
*
pAllocator
,
VkPipeline
*
pPipeline
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateRayTracingPipelinesNV
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateRayTracingPipelinesNV
(
VkDevice
device
,
VkPipelineCache
pipelineCache
,
uint32_t
createInfoCount
,
const
VkRayTracingPipelineCreateInfoNV
*
pCreateInfos
,
const
VkAllocationCallbacks
*
pAllocator
,
VkPipeline
*
pPipeline
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkCreateWin32SurfaceKHR
(
void
*
args
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkCreateWin32SurfaceKHR
(
VkInstance
instance
,
const
VkWin32SurfaceCreateInfoKHR
*
pCreateInfo
,
const
VkAllocationCallbacks
*
pAllocator
,
VkSurfaceKHR
*
pSurface
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkDestroyCommandPool
(
void
*
args
)
DECLSPEC_HIDDEN
;
void
wine_vkDestroyCommandPool
(
VkDevice
device
,
VkCommandPool
commandPool
,
const
VkAllocationCallbacks
*
pAllocator
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkDestroyDebugReportCallbackEXT
(
void
*
args
)
DECLSPEC_HIDDEN
;
void
wine_vkDestroyDebugReportCallbackEXT
(
VkInstance
instance
,
VkDebugReportCallbackEXT
callback
,
const
VkAllocationCallbacks
*
pAllocator
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkDestroyDebugUtilsMessengerEXT
(
void
*
args
)
DECLSPEC_HIDDEN
;
void
wine_vkDestroyDebugUtilsMessengerEXT
(
VkInstance
instance
,
VkDebugUtilsMessengerEXT
messenger
,
const
VkAllocationCallbacks
*
pAllocator
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkDestroyDevice
(
void
*
args
)
DECLSPEC_HIDDEN
;
void
wine_vkDestroyDevice
(
VkDevice
device
,
const
VkAllocationCallbacks
*
pAllocator
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkDestroyInstance
(
void
*
args
)
DECLSPEC_HIDDEN
;
void
wine_vkDestroyInstance
(
VkInstance
instance
,
const
VkAllocationCallbacks
*
pAllocator
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkDestroySurfaceKHR
(
void
*
args
)
DECLSPEC_HIDDEN
;
void
wine_vkDestroySurfaceKHR
(
VkInstance
instance
,
VkSurfaceKHR
surface
,
const
VkAllocationCallbacks
*
pAllocator
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkEnumerateDeviceExtensionProperties
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkEnumerateDeviceExtensionProperties
(
VkPhysicalDevice
physicalDevice
,
const
char
*
pLayerName
,
uint32_t
*
pPropertyCount
,
VkExtensionProperties
*
pPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkEnumerateDeviceLayerProperties
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkEnumerateDeviceLayerProperties
(
VkPhysicalDevice
physicalDevice
,
uint32_t
*
pPropertyCount
,
VkLayerProperties
*
pPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkEnumerateInstanceExtensionProperties
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkEnumerateInstanceExtensionProperties
(
const
char
*
pLayerName
,
uint32_t
*
pPropertyCount
,
VkExtensionProperties
*
pPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkEnumerateInstanceLayerProperties
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkEnumerateInstanceLayerProperties
(
uint32_t
*
pPropertyCount
,
VkLayerProperties
*
pPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkEnumerateInstanceVersion
(
void
*
args
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkEnumerateInstanceVersion
(
uint32_t
*
pApiVersion
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkEnumeratePhysicalDeviceGroups
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkEnumeratePhysicalDeviceGroups
(
VkInstance
instance
,
uint32_t
*
pPhysicalDeviceGroupCount
,
VkPhysicalDeviceGroupProperties
*
pPhysicalDeviceGroupPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkEnumeratePhysicalDeviceGroupsKHR
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkEnumeratePhysicalDeviceGroupsKHR
(
VkInstance
instance
,
uint32_t
*
pPhysicalDeviceGroupCount
,
VkPhysicalDeviceGroupProperties
*
pPhysicalDeviceGroupPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkEnumeratePhysicalDevices
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkEnumeratePhysicalDevices
(
VkInstance
instance
,
uint32_t
*
pPhysicalDeviceCount
,
VkPhysicalDevice
*
pPhysicalDevice
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkFreeCommandBuffers
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
void
wine_vkFreeCommandBuffers
(
VkDevice
device
,
VkCommandPool
commandPool
,
uint32_t
commandBufferCount
,
const
VkCommandBuffer
*
pCommandBuffer
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetCalibratedTimestampsEXT
(
void
*
args
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkGetCalibratedTimestampsEXT
(
VkDevice
device
,
uint32_t
timestampCount
,
const
VkCalibratedTimestampInfoEXT
*
pTimestampInfos
,
uint64_t
*
pTimestamps
,
uint64_t
*
pMaxDeviation
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetDeviceProcAddr
(
void
*
args
)
DECLSPEC_HIDDEN
;
PFN_vkVoidFunction
wine_vkGetDeviceProcAddr
(
VkDevice
device
,
const
char
*
pName
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetDeviceQueue
(
void
*
args
)
DECLSPEC_HIDDEN
;
void
wine_vkGetDeviceQueue
(
VkDevice
device
,
uint32_t
queueFamilyIndex
,
uint32_t
queueIndex
,
VkQueue
*
pQueue
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetDeviceQueue2
(
void
*
args
)
DECLSPEC_HIDDEN
;
void
wine_vkGetDeviceQueue2
(
VkDevice
device
,
const
VkDeviceQueueInfo2
*
pQueueInfo
,
VkQueue
*
pQueue
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetInstanceProcAddr
(
void
*
args
)
DECLSPEC_HIDDEN
;
PFN_vkVoidFunction
wine_vkGetInstanceProcAddr
(
VkInstance
instance
,
const
char
*
pName
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(
VkPhysicalDevice
physicalDevice
,
uint32_t
*
pTimeDomainCount
,
VkTimeDomainEXT
*
pTimeDomain
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceExternalBufferProperties
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
void
wine_vkGetPhysicalDeviceExternalBufferProperties
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceExternalBufferInfo
*
pExternalBufferInfo
,
VkExternalBufferProperties
*
pExternalBufferPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceExternalBufferPropertiesKHR
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
void
wine_vkGetPhysicalDeviceExternalBufferPropertiesKHR
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceExternalBufferInfo
*
pExternalBufferInfo
,
VkExternalBufferProperties
*
pExternalBufferPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceExternalFenceProperties
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
void
wine_vkGetPhysicalDeviceExternalFenceProperties
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceExternalFenceInfo
*
pExternalFenceInfo
,
VkExternalFenceProperties
*
pExternalFencePropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceExternalFencePropertiesKHR
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
void
wine_vkGetPhysicalDeviceExternalFencePropertiesKHR
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceExternalFenceInfo
*
pExternalFenceInfo
,
VkExternalFenceProperties
*
pExternalFencePropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceExternalSemaphoreProperties
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
void
wine_vkGetPhysicalDeviceExternalSemaphoreProperties
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceExternalSemaphoreInfo
*
pExternalSemaphoreInfo
,
VkExternalSemaphoreProperties
*
pExternalSemaphorePropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
void
wine_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceExternalSemaphoreInfo
*
pExternalSemaphoreInfo
,
VkExternalSemaphoreProperties
*
pExternalSemaphorePropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceImageFormatProperties2
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkGetPhysicalDeviceImageFormatProperties2
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceImageFormatInfo2
*
pImageFormatInfo
,
VkImageFormatProperties2
*
pImageFormatPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceImageFormatProperties2KHR
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkGetPhysicalDeviceImageFormatProperties2KHR
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceImageFormatInfo2
*
pImageFormatInfo
,
VkImageFormatProperties2
*
pImageFormatPropertie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR
(
VkPhysicalDevice
physicalDevice
,
const
VkPhysicalDeviceSurfaceInfo2KHR
*
pSurfaceInfo
,
VkSurfaceCapabilities2KHR
*
pSurfaceCapabilitie
s
)
DECLSPEC_HIDDEN
;
NTSTATUS
wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
(
void
*
arg
s
)
DECLSPEC_HIDDEN
;
VkResult
wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
(
VkPhysicalDevice
physicalDevice
,
VkSurfaceKHR
surface
,
VkSurfaceCapabilitiesKHR
*
pSurfaceCapabilitie
s
)
DECLSPEC_HIDDEN
;
/* Private thunks */
/* Private thunks */
VkResult
thunk_vkCreateComputePipelines
(
VkDevice
device
,
VkPipelineCache
pipelineCache
,
uint32_t
createInfoCount
,
const
VkComputePipelineCreateInfo
*
pCreateInfos
,
const
VkAllocationCallbacks
*
pAllocator
,
VkPipeline
*
pPipelines
)
DECLSPEC_HIDDEN
;
VkResult
thunk_vkCreateComputePipelines
(
VkDevice
device
,
VkPipelineCache
pipelineCache
,
uint32_t
createInfoCount
,
const
VkComputePipelineCreateInfo
*
pCreateInfos
,
const
VkAllocationCallbacks
*
pAllocator
,
VkPipeline
*
pPipelines
)
DECLSPEC_HIDDEN
;
...
...
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