winevulkan: Unwrap struct members with objecttype.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Georg Lehmann 2021-06-21 11:03:27 +02:00 committed by Alexandre Julliard
parent 221995a683
commit 9d7cda922c
4 changed files with 112 additions and 118 deletions

View File

@ -242,17 +242,10 @@ FUNCTION_OVERRIDES = {
# VK_EXT_debug_utils
"vkCreateDebugUtilsMessengerEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.NONE},
"vkDestroyDebugUtilsMessengerEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.NONE},
"vkSubmitDebugUtilsMessageEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.PRIVATE},
"vkSetDebugUtilsObjectTagEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.PRIVATE},
"vkSetDebugUtilsObjectNameEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.PRIVATE},
# VK_EXT_debug_report
"vkCreateDebugReportCallbackEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.NONE},
"vkDestroyDebugReportCallbackEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.NONE},
# VK_EXT_debug_marker
"vkDebugMarkerSetObjectNameEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.PRIVATE},
"vkDebugMarkerSetObjectTagEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.PRIVATE},
}
STRUCT_CHAIN_CONVERSIONS = {
@ -1085,7 +1078,7 @@ class VkHandle(object):
class VkMember(object):
def __init__(self, const=False, struct_fwd_decl=False,_type=None, pointer=None, name=None, array_len=None,
dyn_array_len=None, optional=False, values=None):
dyn_array_len=None, optional=False, values=None, object_type=None):
self.const = const
self.struct_fwd_decl = struct_fwd_decl
self.name = name
@ -1096,6 +1089,7 @@ class VkMember(object):
self.dyn_array_len = dyn_array_len
self.optional = optional
self.values = values
self.object_type = object_type
def __eq__(self, other):
""" Compare member based on name against a string.
@ -1165,8 +1159,10 @@ class VkMember(object):
# Remove brackets around length
array_len = name_elem.tail.strip("[]")
object_type = member.get("objecttype", None)
return VkMember(const=const, struct_fwd_decl=struct_fwd_decl, _type=member_type, pointer=pointer, name=name_elem.text,
array_len=array_len, dyn_array_len=dyn_array_len, optional=optional, values=values)
array_len=array_len, dyn_array_len=dyn_array_len, optional=optional, values=values, object_type=object_type)
def copy(self, input, output, direction, conv):
""" Helper method for use by conversion logic to generate a C-code statement to copy this member.
@ -1194,6 +1190,11 @@ class VkMember(object):
else:
handle = self.type_info["data"]
return "{0}{1} = {2};\n".format(output, self.name, handle.driver_handle("{0}{1}".format(input, self.name)))
elif self.is_generic_handle():
if direction == Direction.OUTPUT:
LOGGER.err("OUTPUT parameter {0}.{1} cannot be unwrapped".format(self.type, self.name))
else:
return "{0}{1} = wine_vk_unwrap_handle({2}{3}, {2}{1});\n".format(output, self.name, input, self.object_type)
else:
if direction == Direction.OUTPUT:
return "convert_{0}_host_to_win(&{2}{1}, &{3}{1});\n".format(self.type, self.name, input, output)
@ -1288,7 +1289,7 @@ class VkMember(object):
struct.needs_struct_extensions_conversion()
direction = Direction.OUTPUT if struct.returnedonly else Direction.INPUT
elif self.is_handle():
elif self.is_handle() or self.is_generic_handle():
direction = Direction.INPUT
operand = self.type_info["data"]
@ -1336,6 +1337,13 @@ class VkMember(object):
def is_union(self):
return self.type_info["category"] == "union"
def is_generic_handle(self):
""" Returns True if the member is a unit64_t containing
a handle with a separate object type
"""
return self.object_type != None and self.type == "uint64_t"
def needs_alignment(self):
""" Check if this member needs alignment for 64-bit data.
Various structures need alignment on 64-bit variables due
@ -1378,6 +1386,9 @@ class VkMember(object):
handle = self.type_info["data"]
return handle.is_wrapped()
if self.is_generic_handle():
return True
return False
def needs_free(self):

View File

@ -1549,55 +1549,6 @@ void WINAPI wine_vkDestroyDebugUtilsMessengerEXT(
free(object);
}
void WINAPI wine_vkSubmitDebugUtilsMessageEXT(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT severity,
VkDebugUtilsMessageTypeFlagsEXT types, const VkDebugUtilsMessengerCallbackDataEXT *callback_data)
{
VkDebugUtilsMessengerCallbackDataEXT native_callback_data;
VkDebugUtilsObjectNameInfoEXT *object_names;
unsigned int i;
TRACE("%p, %#x, %#x, %p\n", instance, severity, types, callback_data);
native_callback_data = *callback_data;
object_names = calloc(callback_data->objectCount, sizeof(*object_names));
memcpy(object_names, callback_data->pObjects, callback_data->objectCount * sizeof(*object_names));
native_callback_data.pObjects = object_names;
for (i = 0; i < callback_data->objectCount; i++)
{
object_names[i].objectHandle =
wine_vk_unwrap_handle(callback_data->pObjects[i].objectType, callback_data->pObjects[i].objectHandle);
}
thunk_vkSubmitDebugUtilsMessageEXT(instance, severity, types, &native_callback_data);
free(object_names);
}
VkResult WINAPI wine_vkSetDebugUtilsObjectTagEXT(VkDevice device, const VkDebugUtilsObjectTagInfoEXT *tag_info)
{
VkDebugUtilsObjectTagInfoEXT wine_tag_info;
TRACE("%p, %p\n", device, tag_info);
wine_tag_info = *tag_info;
wine_tag_info.objectHandle = wine_vk_unwrap_handle(tag_info->objectType, tag_info->objectHandle);
return thunk_vkSetDebugUtilsObjectTagEXT(device, &wine_tag_info);
}
VkResult WINAPI wine_vkSetDebugUtilsObjectNameEXT(VkDevice device, const VkDebugUtilsObjectNameInfoEXT *name_info)
{
VkDebugUtilsObjectNameInfoEXT wine_name_info;
TRACE("%p, %p\n", device, name_info);
wine_name_info = *name_info;
wine_name_info.objectHandle = wine_vk_unwrap_handle(name_info->objectType, name_info->objectHandle);
return thunk_vkSetDebugUtilsObjectNameEXT(device, &wine_name_info);
}
VkResult WINAPI wine_vkCreateDebugReportCallbackEXT(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT *create_info,
const VkAllocationCallbacks *allocator, VkDebugReportCallbackEXT *callback)
{
@ -1654,27 +1605,3 @@ void WINAPI wine_vkDestroyDebugReportCallbackEXT(
free(object);
}
VkResult WINAPI wine_vkDebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT *tag_info)
{
VkDebugMarkerObjectTagInfoEXT wine_tag_info;
TRACE("%p, %p\n", device, tag_info);
wine_tag_info = *tag_info;
wine_tag_info.object = wine_vk_unwrap_handle(tag_info->objectType, tag_info->object);
return thunk_vkDebugMarkerSetObjectTagEXT(device, &wine_tag_info);
}
VkResult WINAPI wine_vkDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT *name_info)
{
VkDebugMarkerObjectNameInfoEXT wine_name_info;
TRACE("%p, %p\n", device, name_info);
wine_name_info = *name_info;
wine_name_info.object = wine_vk_unwrap_handle(name_info->objectType, name_info->object);
return thunk_vkDebugMarkerSetObjectNameEXT(device, &wine_name_info);
}

View File

@ -1551,31 +1551,35 @@ static inline void convert_VkSwapchainCreateInfoKHR_win_to_host(const VkSwapchai
#if defined(USE_STRUCT_CONVERSION)
static inline void convert_VkDebugMarkerObjectNameInfoEXT_win_to_host(const VkDebugMarkerObjectNameInfoEXT *in, VkDebugMarkerObjectNameInfoEXT_host *out)
#else
static inline void convert_VkDebugMarkerObjectNameInfoEXT_win_to_host(const VkDebugMarkerObjectNameInfoEXT *in, VkDebugMarkerObjectNameInfoEXT *out)
#endif /* USE_STRUCT_CONVERSION */
{
if (!in) return;
out->sType = in->sType;
out->pNext = in->pNext;
out->objectType = in->objectType;
out->object = in->object;
out->object = wine_vk_unwrap_handle(in->objectType, in->object);
out->pObjectName = in->pObjectName;
}
#endif /* USE_STRUCT_CONVERSION */
#if defined(USE_STRUCT_CONVERSION)
static inline void convert_VkDebugMarkerObjectTagInfoEXT_win_to_host(const VkDebugMarkerObjectTagInfoEXT *in, VkDebugMarkerObjectTagInfoEXT_host *out)
#else
static inline void convert_VkDebugMarkerObjectTagInfoEXT_win_to_host(const VkDebugMarkerObjectTagInfoEXT *in, VkDebugMarkerObjectTagInfoEXT *out)
#endif /* USE_STRUCT_CONVERSION */
{
if (!in) return;
out->sType = in->sType;
out->pNext = in->pNext;
out->objectType = in->objectType;
out->object = in->object;
out->object = wine_vk_unwrap_handle(in->objectType, in->object);
out->tagName = in->tagName;
out->tagSize = in->tagSize;
out->pTag = in->pTag;
}
#endif /* USE_STRUCT_CONVERSION */
#if defined(USE_STRUCT_CONVERSION)
static inline VkMappedMemoryRange_host *convert_VkMappedMemoryRange_array_win_to_host(const VkMappedMemoryRange *in, uint32_t count)
@ -2475,31 +2479,35 @@ static inline void free_VkSubmitInfo2KHR_array(VkSubmitInfo2KHR *in, uint32_t co
#if defined(USE_STRUCT_CONVERSION)
static inline void convert_VkDebugUtilsObjectNameInfoEXT_win_to_host(const VkDebugUtilsObjectNameInfoEXT *in, VkDebugUtilsObjectNameInfoEXT_host *out)
#else
static inline void convert_VkDebugUtilsObjectNameInfoEXT_win_to_host(const VkDebugUtilsObjectNameInfoEXT *in, VkDebugUtilsObjectNameInfoEXT *out)
#endif /* USE_STRUCT_CONVERSION */
{
if (!in) return;
out->sType = in->sType;
out->pNext = in->pNext;
out->objectType = in->objectType;
out->objectHandle = in->objectHandle;
out->objectHandle = wine_vk_unwrap_handle(in->objectType, in->objectHandle);
out->pObjectName = in->pObjectName;
}
#endif /* USE_STRUCT_CONVERSION */
#if defined(USE_STRUCT_CONVERSION)
static inline void convert_VkDebugUtilsObjectTagInfoEXT_win_to_host(const VkDebugUtilsObjectTagInfoEXT *in, VkDebugUtilsObjectTagInfoEXT_host *out)
#else
static inline void convert_VkDebugUtilsObjectTagInfoEXT_win_to_host(const VkDebugUtilsObjectTagInfoEXT *in, VkDebugUtilsObjectTagInfoEXT *out)
#endif /* USE_STRUCT_CONVERSION */
{
if (!in) return;
out->sType = in->sType;
out->pNext = in->pNext;
out->objectType = in->objectType;
out->objectHandle = in->objectHandle;
out->objectHandle = wine_vk_unwrap_handle(in->objectType, in->objectHandle);
out->tagName = in->tagName;
out->tagSize = in->tagSize;
out->pTag = in->pTag;
}
#endif /* USE_STRUCT_CONVERSION */
#if defined(USE_STRUCT_CONVERSION)
static inline void convert_VkSemaphoreSignalInfo_win_to_host(const VkSemaphoreSignalInfo *in, VkSemaphoreSignalInfo_host *out)
@ -2517,6 +2525,11 @@ static inline void convert_VkSemaphoreSignalInfo_win_to_host(const VkSemaphoreSi
static inline VkDebugUtilsObjectNameInfoEXT_host *convert_VkDebugUtilsObjectNameInfoEXT_array_win_to_host(const VkDebugUtilsObjectNameInfoEXT *in, uint32_t count)
{
VkDebugUtilsObjectNameInfoEXT_host *out;
#else
static inline VkDebugUtilsObjectNameInfoEXT *convert_VkDebugUtilsObjectNameInfoEXT_array_win_to_host(const VkDebugUtilsObjectNameInfoEXT *in, uint32_t count)
{
VkDebugUtilsObjectNameInfoEXT *out;
#endif /* USE_STRUCT_CONVERSION */
unsigned int i;
if (!in) return NULL;
@ -2527,25 +2540,29 @@ static inline VkDebugUtilsObjectNameInfoEXT_host *convert_VkDebugUtilsObjectName
out[i].sType = in[i].sType;
out[i].pNext = in[i].pNext;
out[i].objectType = in[i].objectType;
out[i].objectHandle = in[i].objectHandle;
out[i].objectHandle = wine_vk_unwrap_handle(in[i].objectType, in[i].objectHandle);
out[i].pObjectName = in[i].pObjectName;
}
return out;
}
#endif /* USE_STRUCT_CONVERSION */
#if defined(USE_STRUCT_CONVERSION)
static inline void free_VkDebugUtilsObjectNameInfoEXT_array(VkDebugUtilsObjectNameInfoEXT_host *in, uint32_t count)
#else
static inline void free_VkDebugUtilsObjectNameInfoEXT_array(VkDebugUtilsObjectNameInfoEXT *in, uint32_t count)
#endif /* USE_STRUCT_CONVERSION */
{
if (!in) return;
free(in);
}
#endif /* USE_STRUCT_CONVERSION */
#if defined(USE_STRUCT_CONVERSION)
static inline void convert_VkDebugUtilsMessengerCallbackDataEXT_win_to_host(const VkDebugUtilsMessengerCallbackDataEXT *in, VkDebugUtilsMessengerCallbackDataEXT_host *out)
#else
static inline void convert_VkDebugUtilsMessengerCallbackDataEXT_win_to_host(const VkDebugUtilsMessengerCallbackDataEXT *in, VkDebugUtilsMessengerCallbackDataEXT *out)
#endif /* USE_STRUCT_CONVERSION */
{
if (!in) return;
@ -2562,14 +2579,19 @@ static inline void convert_VkDebugUtilsMessengerCallbackDataEXT_win_to_host(cons
out->objectCount = in->objectCount;
out->pObjects = convert_VkDebugUtilsObjectNameInfoEXT_array_win_to_host(in->pObjects, in->objectCount);
}
#endif /* USE_STRUCT_CONVERSION */
#if defined(USE_STRUCT_CONVERSION)
static inline void free_VkDebugUtilsMessengerCallbackDataEXT(VkDebugUtilsMessengerCallbackDataEXT_host *in)
{
free_VkDebugUtilsObjectNameInfoEXT_array((VkDebugUtilsObjectNameInfoEXT_host *)in->pObjects, in->objectCount);
}
#else
static inline void free_VkDebugUtilsMessengerCallbackDataEXT(VkDebugUtilsMessengerCallbackDataEXT *in)
#endif /* USE_STRUCT_CONVERSION */
{
#if defined(USE_STRUCT_CONVERSION)
free_VkDebugUtilsObjectNameInfoEXT_array((VkDebugUtilsObjectNameInfoEXT_host *)in->pObjects, in->objectCount);
#else
free_VkDebugUtilsObjectNameInfoEXT_array((VkDebugUtilsObjectNameInfoEXT *)in->pObjects, in->objectCount);
#endif /* USE_STRUCT_CONVERSION */
}
#if defined(USE_STRUCT_CONVERSION)
static inline VkCopyDescriptorSet_host *convert_VkCopyDescriptorSet_array_win_to_host(const VkCopyDescriptorSet *in, uint32_t count)
@ -6278,31 +6300,49 @@ static VkResult WINAPI wine_vkCreateValidationCacheEXT(VkDevice device, const Vk
return device->funcs.p_vkCreateValidationCacheEXT(device->device, pCreateInfo, NULL, pValidationCache);
}
VkResult thunk_vkDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT *pNameInfo)
static VkResult WINAPI wine_vkDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT *pNameInfo)
{
#if defined(USE_STRUCT_CONVERSION)
VkResult result;
VkDebugMarkerObjectNameInfoEXT_host pNameInfo_host;
TRACE("%p, %p\n", device, pNameInfo);
convert_VkDebugMarkerObjectNameInfoEXT_win_to_host(pNameInfo, &pNameInfo_host);
result = device->funcs.p_vkDebugMarkerSetObjectNameEXT(device->device, &pNameInfo_host);
return result;
#else
return device->funcs.p_vkDebugMarkerSetObjectNameEXT(device->device, pNameInfo);
VkResult result;
VkDebugMarkerObjectNameInfoEXT pNameInfo_host;
TRACE("%p, %p\n", device, pNameInfo);
convert_VkDebugMarkerObjectNameInfoEXT_win_to_host(pNameInfo, &pNameInfo_host);
result = device->funcs.p_vkDebugMarkerSetObjectNameEXT(device->device, &pNameInfo_host);
return result;
#endif
}
VkResult thunk_vkDebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT *pTagInfo)
static VkResult WINAPI wine_vkDebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT *pTagInfo)
{
#if defined(USE_STRUCT_CONVERSION)
VkResult result;
VkDebugMarkerObjectTagInfoEXT_host pTagInfo_host;
TRACE("%p, %p\n", device, pTagInfo);
convert_VkDebugMarkerObjectTagInfoEXT_win_to_host(pTagInfo, &pTagInfo_host);
result = device->funcs.p_vkDebugMarkerSetObjectTagEXT(device->device, &pTagInfo_host);
return result;
#else
return device->funcs.p_vkDebugMarkerSetObjectTagEXT(device->device, pTagInfo);
VkResult result;
VkDebugMarkerObjectTagInfoEXT pTagInfo_host;
TRACE("%p, %p\n", device, pTagInfo);
convert_VkDebugMarkerObjectTagInfoEXT_win_to_host(pTagInfo, &pTagInfo_host);
result = device->funcs.p_vkDebugMarkerSetObjectTagEXT(device->device, &pTagInfo_host);
return result;
#endif
}
@ -7668,31 +7708,49 @@ static void WINAPI wine_vkResetQueryPoolEXT(VkDevice device, VkQueryPool queryPo
device->funcs.p_vkResetQueryPoolEXT(device->device, queryPool, firstQuery, queryCount);
}
VkResult thunk_vkSetDebugUtilsObjectNameEXT(VkDevice device, const VkDebugUtilsObjectNameInfoEXT *pNameInfo)
static VkResult WINAPI wine_vkSetDebugUtilsObjectNameEXT(VkDevice device, const VkDebugUtilsObjectNameInfoEXT *pNameInfo)
{
#if defined(USE_STRUCT_CONVERSION)
VkResult result;
VkDebugUtilsObjectNameInfoEXT_host pNameInfo_host;
TRACE("%p, %p\n", device, pNameInfo);
convert_VkDebugUtilsObjectNameInfoEXT_win_to_host(pNameInfo, &pNameInfo_host);
result = device->funcs.p_vkSetDebugUtilsObjectNameEXT(device->device, &pNameInfo_host);
return result;
#else
return device->funcs.p_vkSetDebugUtilsObjectNameEXT(device->device, pNameInfo);
VkResult result;
VkDebugUtilsObjectNameInfoEXT pNameInfo_host;
TRACE("%p, %p\n", device, pNameInfo);
convert_VkDebugUtilsObjectNameInfoEXT_win_to_host(pNameInfo, &pNameInfo_host);
result = device->funcs.p_vkSetDebugUtilsObjectNameEXT(device->device, &pNameInfo_host);
return result;
#endif
}
VkResult thunk_vkSetDebugUtilsObjectTagEXT(VkDevice device, const VkDebugUtilsObjectTagInfoEXT *pTagInfo)
static VkResult WINAPI wine_vkSetDebugUtilsObjectTagEXT(VkDevice device, const VkDebugUtilsObjectTagInfoEXT *pTagInfo)
{
#if defined(USE_STRUCT_CONVERSION)
VkResult result;
VkDebugUtilsObjectTagInfoEXT_host pTagInfo_host;
TRACE("%p, %p\n", device, pTagInfo);
convert_VkDebugUtilsObjectTagInfoEXT_win_to_host(pTagInfo, &pTagInfo_host);
result = device->funcs.p_vkSetDebugUtilsObjectTagEXT(device->device, &pTagInfo_host);
return result;
#else
return device->funcs.p_vkSetDebugUtilsObjectTagEXT(device->device, pTagInfo);
VkResult result;
VkDebugUtilsObjectTagInfoEXT pTagInfo_host;
TRACE("%p, %p\n", device, pTagInfo);
convert_VkDebugUtilsObjectTagInfoEXT_win_to_host(pTagInfo, &pTagInfo_host);
result = device->funcs.p_vkSetDebugUtilsObjectTagEXT(device->device, &pTagInfo_host);
return result;
#endif
}
@ -7742,16 +7800,24 @@ static VkResult WINAPI wine_vkSignalSemaphoreKHR(VkDevice device, const VkSemaph
#endif
}
void thunk_vkSubmitDebugUtilsMessageEXT(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData)
static void WINAPI wine_vkSubmitDebugUtilsMessageEXT(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData)
{
#if defined(USE_STRUCT_CONVERSION)
VkDebugUtilsMessengerCallbackDataEXT_host pCallbackData_host;
TRACE("%p, %#x, %#x, %p\n", instance, messageSeverity, messageTypes, pCallbackData);
convert_VkDebugUtilsMessengerCallbackDataEXT_win_to_host(pCallbackData, &pCallbackData_host);
instance->funcs.p_vkSubmitDebugUtilsMessageEXT(instance->instance, messageSeverity, messageTypes, &pCallbackData_host);
free_VkDebugUtilsMessengerCallbackDataEXT(&pCallbackData_host);
#else
instance->funcs.p_vkSubmitDebugUtilsMessageEXT(instance->instance, messageSeverity, messageTypes, pCallbackData);
VkDebugUtilsMessengerCallbackDataEXT pCallbackData_host;
TRACE("%p, %#x, %#x, %p\n", instance, messageSeverity, messageTypes, pCallbackData);
convert_VkDebugUtilsMessengerCallbackDataEXT_win_to_host(pCallbackData, &pCallbackData_host);
instance->funcs.p_vkSubmitDebugUtilsMessageEXT(instance->instance, messageSeverity, messageTypes, &pCallbackData_host);
free_VkDebugUtilsMessengerCallbackDataEXT(&pCallbackData_host);
#endif
}

View File

@ -22,8 +22,6 @@ VkResult WINAPI wine_vkCreateDebugUtilsMessengerEXT(VkInstance instance, const V
VkResult WINAPI wine_vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDevice *pDevice);
VkResult WINAPI wine_vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkInstance *pInstance);
VkResult WINAPI wine_vkCreateWin32SurfaceKHR(VkInstance instance, const VkWin32SurfaceCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
VkResult WINAPI wine_vkDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT *pNameInfo) DECLSPEC_HIDDEN;
VkResult WINAPI wine_vkDebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT *pTagInfo) DECLSPEC_HIDDEN;
void WINAPI wine_vkDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks *pAllocator);
void WINAPI wine_vkDestroyDebugReportCallbackEXT(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks *pAllocator) DECLSPEC_HIDDEN;
void WINAPI wine_vkDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks *pAllocator) DECLSPEC_HIDDEN;
@ -55,20 +53,12 @@ VkResult WINAPI wine_vkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice
VkResult WINAPI wine_vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2 *pImageFormatInfo, VkImageFormatProperties2 *pImageFormatProperties) DECLSPEC_HIDDEN;
VkResult WINAPI wine_vkGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *pSurfaceInfo, VkSurfaceCapabilities2KHR *pSurfaceCapabilities);
VkResult WINAPI wine_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *pSurfaceCapabilities);
VkResult WINAPI wine_vkSetDebugUtilsObjectNameEXT(VkDevice device, const VkDebugUtilsObjectNameInfoEXT *pNameInfo) DECLSPEC_HIDDEN;
VkResult WINAPI wine_vkSetDebugUtilsObjectTagEXT(VkDevice device, const VkDebugUtilsObjectTagInfoEXT *pTagInfo) DECLSPEC_HIDDEN;
void WINAPI wine_vkSubmitDebugUtilsMessageEXT(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData) DECLSPEC_HIDDEN;
/* Private thunks */
VkResult thunk_vkDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT *pNameInfo) DECLSPEC_HIDDEN;
VkResult thunk_vkDebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT *pTagInfo) DECLSPEC_HIDDEN;
VkResult thunk_vkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2 *pImageFormatInfo, VkImageFormatProperties2 *pImageFormatProperties) DECLSPEC_HIDDEN;
VkResult thunk_vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2 *pImageFormatInfo, VkImageFormatProperties2 *pImageFormatProperties) DECLSPEC_HIDDEN;
VkResult thunk_vkGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *pSurfaceInfo, VkSurfaceCapabilities2KHR *pSurfaceCapabilities) DECLSPEC_HIDDEN;
VkResult thunk_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *pSurfaceCapabilities) DECLSPEC_HIDDEN;
VkResult thunk_vkSetDebugUtilsObjectNameEXT(VkDevice device, const VkDebugUtilsObjectNameInfoEXT *pNameInfo) DECLSPEC_HIDDEN;
VkResult thunk_vkSetDebugUtilsObjectTagEXT(VkDevice device, const VkDebugUtilsObjectTagInfoEXT *pTagInfo) DECLSPEC_HIDDEN;
void thunk_vkSubmitDebugUtilsMessageEXT(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData) DECLSPEC_HIDDEN;
#if defined(USE_STRUCT_CONVERSION)
typedef struct VkAcquireNextImageInfoKHR_host