winevulkan: Handle bitmask types backed by VkFlags64.

Previously bitmask types were always treated as 32-bit values, now the basetype of each bitmask must
be checked.

Signed-off-by: Liam Middlebrook <lmiddlebrook@nvidia.com>
Signed-off-by: Piers Daniell <pdaniell@nvidia.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Liam Middlebrook 2021-02-15 02:18:47 -08:00 committed by Alexandre Julliard
parent d896c2201f
commit 746b27f97d

View file

@ -1375,7 +1375,14 @@ class VkParam(object):
if self.is_static_array() or self.is_pointer():
self.format_str = "%p"
else:
if self.type_info["category"] in ["bitmask", "enum"]:
if self.type_info["category"] in ["bitmask"]:
# Since 1.2.170 bitmasks can be 32 or 64-bit, check the basetype.
if self.type_info["data"].type == "VkFlags64":
self.format_str = "0x%s"
self.format_conv = "wine_dbgstr_longlong({0})"
else:
self.format_str = "%#x"
elif self.type_info["category"] in ["enum"]:
self.format_str = "%#x"
elif self.is_handle():
# We use uint64_t for non-dispatchable handles as opposed to pointers
@ -1577,7 +1584,13 @@ class VkParam(object):
return "str"
if self.is_dispatchable() or self.is_pointer() or self.is_static_array():
return "ptr"
if self.type_info["category"] in ["bitmask", "enum"]:
if self.type_info["category"] in ["bitmask"]:
# Since 1.2.170 bitmasks can be 32 or 64-bit, check the basetype.
if self.type_info["data"].type == "VkFlags64":
return "int64"
else:
return "long"
if self.type_info["category"] in ["enum"]:
return "long"
if self.is_handle() and not self.is_dispatchable():
return "int64"