[PATCH 0/6] MR9972: winevulkan: More make_vulkan cleanups.
From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/winevulkan/make_vulkan | 138 +++++++++++++++++------------------- 1 file changed, 64 insertions(+), 74 deletions(-) diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 8a4b88e3694..2509a89008f 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -657,7 +657,7 @@ class Function(object): if self.is_global(): return False # Instance functions are passed VkInstance. - if self.params[0].type == "VkInstance": + if self.params[0].type_name == "VkInstance": return True return self.is_physical_device() @@ -665,7 +665,7 @@ class Function(object): if self.is_global(): return False # Physical device functions are passed VkPhysicalDevice. - if self.params[0].type == "VkPhysicalDevice": + if self.params[0].type_name == "VkPhysicalDevice": return True return False @@ -748,19 +748,19 @@ class Function(object): for p in self.params: if p.needs_variable(conv, self.unwrap): if p.is_dynamic_array(): - body += " {3}{0}{1} *{2}_host;\n".format( - p.type, p.pointer[:-1] if p.pointer else "", - p.name, "const " if p.is_const() else "") + const = "const " if p.is_const() else "" + ptr = p.pointer[:-1] if p.pointer else "" + body += f" {const}{p.type_name}{ptr} *{p.name}_host;\n" elif p.optional: - body += " {0} *{1}_host = NULL;\n".format(p.type, p.name) + body += f" {p.type_name} *{p.name}_host = NULL;\n" needs_alloc = True elif p.pointer: - body += " {0} {1}{2}_host;\n".format(p.type, p.pointer[:-1], p.name) + body += f" {p.type_name} {p.pointer[:-1]}{p.name}_host;\n" else: - body += " {0} {1}_host;\n".format(p.type, p.name) + body += f" {p.type_name} {p.name}_host;\n" if p.needs_alloc(conv, self.unwrap): needs_alloc = True - if p.type == "VkDeferredOperationKHR" and not p.is_pointer(): + if p.type_name == "VkDeferredOperationKHR" and not p.is_pointer(): deferred_op = p.name if needs_alloc: @@ -1061,7 +1061,7 @@ class VkVariable(object): selection=None, selector=None): self.const = const self.type_info = type_info - self.type = type + self.type_name = type self.name = name self.object_type = object_type self.optional = optional @@ -1105,7 +1105,9 @@ class VkVariable(object): return self.pointer and self.pointer.count('*') > 1 def is_pointer_size(self): - if self.type in ["size_t", "HWND", "HINSTANCE", "HANDLE", "LPCWSTR"] or self.type.startswith("PFN"): + if self.type_name in ["size_t", "HWND", "HINSTANCE", "HANDLE", "LPCWSTR"]: + return True + if self.type_name.startswith("PFN"): return True if self.is_handle() and self.handle.is_dispatchable(): return True @@ -1144,7 +1146,7 @@ class VkVariable(object): """ 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" + return self.object_type != None and self.type_name == "uint64_t" def needs_alignment(self): """ Check if this member needs alignment for 64-bit data. @@ -1154,9 +1156,9 @@ class VkVariable(object): if self.is_pointer(): return False - elif self.type == "size_t": + elif self.type_name == "size_t": return False - elif self.type in ["uint64_t", "VkDeviceAddress", "VkDeviceSize"]: + elif self.type_name in ["uint64_t", "VkDeviceAddress", "VkDeviceSize"]: return True elif self.is_bitmask(): return self.type_info["data"].type == "VkFlags64" @@ -1201,7 +1203,7 @@ class VkVariable(object): return self.is_pointer() or self.is_pointer_size() or self.is_static_array() def value(self, prefix, conv, deref=False): - if not conv or not self.needs_ptr32_type() or (not self.is_pointer() and self.type == "size_t"): + if not conv or not self.needs_ptr32_type() or (not self.is_pointer() and self.type_name == "size_t"): return prefix + self.name cast_type = self.const @@ -1209,7 +1211,7 @@ class VkVariable(object): if self.pointer_array or ((self.is_pointer() or self.is_static_array()) and self.is_pointer_size()): cast_type += "PTR32 *" else: - cast_type += self.type + cast_type += self.type_name if self.needs_win32_type(): cast_type += "32" @@ -1239,10 +1241,6 @@ class VkMember(VkVariable): self.values = values self.bit_width = bit_width - def __repr__(self): - return "{0} {1} {2} {3} {4} {5} {6}".format(self.const, self.struct_fwd_decl, self.type, self.pointer, - self.name, self.array_lens, self.dyn_array_len) - @staticmethod def from_xml(member, returnedonly): """ Helper function for parsing a member tag within a struct or union. """ @@ -1341,18 +1339,18 @@ class VkMember(VkVariable): count = self.array_lens[0] if len(self.array_lens) > 1: - LOGGER.warn("TODO: implement conversion of multidimensional static array for {0}.{1}".format(self.type, self.name)) + LOGGER.warn("TODO: implement conversion of multidimensional static array for {0}.{1}".format(self.type_name, self.name)) elif direction == Direction.OUTPUT: # Needed by VkMemoryHeap.memoryHeaps return f"{convert.name}({input}{self.name}, {output}{self.name}, {count});\n" else: # Nothing needed this yet. - LOGGER.warn("TODO: implement copying of static array for {0}.{1}".format(self.type, self.name)) + LOGGER.warn("TODO: implement copying of static array for {0}.{1}".format(self.type_name, self.name)) elif self.is_handle() and self.is_wrapped(): handle = self.type_info["data"] if direction == Direction.OUTPUT: - LOGGER.error("OUTPUT parameter {0}.{1} cannot be unwrapped".format(self.type, self.name)) + LOGGER.error("OUTPUT parameter {0}.{1} cannot be unwrapped".format(self.type_name, self.name)) elif self.optional: return "{0}{1} = {2} ? {3} : 0;\n".format(output, self.name, self.value(input, conv), handle.unwrap_handle(self.value(input, conv), unwrap)) @@ -1362,7 +1360,7 @@ class VkMember(VkVariable): elif self.is_generic_handle(): if direction == Direction.OUTPUT: - LOGGER.error("OUTPUT parameter {0}.{1} cannot be unwrapped".format(self.type, self.name)) + LOGGER.error("OUTPUT parameter {0}.{1} cannot be unwrapped".format(self.type_name, self.name)) return "{0}{1} = wine_vk_unwrap_handle({2}{3}, {2}{1});\n".format(output, self.name, input, self.object_type) else: convert = StructConversionFunction(self.struct, direction, conv, unwrap, is_const) @@ -1377,9 +1375,7 @@ class VkMember(VkVariable): return f"{convert.name}({ctx}&{input}{self.name}, &{output}{self.name}{sel});\n" elif self.is_static_array(): - bytes_count = "sizeof({0})".format(self.type) - for l in self.array_lens: - bytes_count = "{0} * ".format(l) + bytes_count + bytes_count = " * ".join(self.array_lens + [f"sizeof({self.type_name})"]) return "memcpy({0}{1}, {2}{1}, {3});\n".format(output, self.name, input, bytes_count) elif conv and direction == Direction.OUTPUT and self.is_pointer(): return "{0}{1} = PtrToUlong({2}{1});\n".format(output, self.name, input) @@ -1411,7 +1407,7 @@ class VkMember(VkVariable): if self.is_struct_forward_declaration(): text += "struct " - text += self.type + text += self.type_name if conv and self.needs_win32_type(): text += "32" @@ -1492,9 +1488,6 @@ class Parameter(VkVariable): self._set_format_string() - def __repr__(self): - return "{0} {1} {2} {3} {4} {5}".format(self.const, self.type, self.pointer, self.name, self.array_lens, self.dyn_array_len) - @staticmethod def from_xml(param, types): # Parameter parsing is slightly tricky. All the data is contained within @@ -1557,23 +1550,23 @@ class Parameter(VkVariable): else: self.format_str = "0x%s" self.format_conv = "wine_dbgstr_longlong({0})" - elif self.type == "float": + elif self.type_name == "float": self.format_str = "%f" - elif self.type == "int": + elif self.type_name == "int": self.format_str = "%d" - elif self.type == "int32_t": + elif self.type_name == "int32_t": self.format_str = "%d" - elif self.type == "size_t": + elif self.type_name == "size_t": self.format_str = "0x%s" self.format_conv = "wine_dbgstr_longlong({0})" - elif self.type in ["uint16_t", "uint32_t", "VkBool32"]: + elif self.type_name in ["uint16_t", "uint32_t", "VkBool32"]: self.format_str = "%u" - elif self.type in ["uint64_t", "VkDeviceAddress", "VkDeviceSize"]: + elif self.type_name in ["uint64_t", "VkDeviceAddress", "VkDeviceSize"]: self.format_str = "0x%s" self.format_conv = "wine_dbgstr_longlong({0})" - elif self.type == "HANDLE": + elif self.type_name == "HANDLE": self.format_str = "%p" - elif self.type in ["VisualID", "xcb_visualid_t", "RROutput", "zx_handle_t", "NvSciBufObj", "NvSciBufAttrList", "NvSciSyncAttrList"]: + elif self.type_name in ["VisualID", "xcb_visualid_t", "RROutput", "zx_handle_t", "NvSciBufObj", "NvSciBufAttrList", "NvSciSyncAttrList"]: # Don't care about specific types for non-Windows platforms. self.format_str = "" else: @@ -1626,7 +1619,7 @@ class Parameter(VkVariable): return f" {convert.name}({ctx_param}{value}, &{self.name}_host);\n" - elif self.is_pointer_size() and self.type != "size_t": + elif self.is_pointer_size() and self.type_name != "size_t": return " {0}_host = UlongToPtr(*{1});\n".format(self.name, self.value(prefix, conv)) else: return " {0}_host = *{1};\n".format(self.name, self.value(prefix, conv)) @@ -1646,7 +1639,7 @@ class Parameter(VkVariable): ref_part = "" if self.optional else "&" return f" {convert.name}({ref_part}{self.name}_host, {value});\n" - elif self.is_pointer_size() and self.type != "size_t": + elif self.is_pointer_size() and self.type_name != "size_t": return " *{0} = PtrToUlong({1}_host);\n".format(self.value(prefix, conv), self.name) else: return " *{0} = {1}_host;\n".format(self.value(prefix, conv), self.name) @@ -1654,7 +1647,7 @@ class Parameter(VkVariable): def as_param(self): ptr = self.pointer if self.is_pointer() else "" array = "".join(f"[{len}]" for len in self.array_lens) - return f"{self.const}{self.type} {ptr}{self.name}{array}" + return f"{self.const}{self.type_name} {ptr}{self.name}{array}" def as_member(self, wow64=False): if wow64 and self.needs_ptr32_type(): @@ -1662,7 +1655,7 @@ class Parameter(VkVariable): ptr = self.pointer if self.is_pointer() else "*" if self.is_static_array() else "" align = " DECLSPEC_ALIGN(8)" if self.needs_alignment() else "" - return f"{self.const}{self.type}{align} {ptr}{self.name}" + return f"{self.const}{self.type_name}{align} {ptr}{self.name}" def dispatch_table(self, params_prefix, conv): """ Return functions dispatch table pointer for dispatchable objects. """ @@ -1673,7 +1666,7 @@ class Parameter(VkVariable): return self.handle.dispatch_table(self.value(params_prefix, conv)) def format_string(self, conv): - if conv and self.needs_ptr32_type() and (self.type != "size_t" or self.is_pointer()): + if conv and self.needs_ptr32_type() and (self.type_name != "size_t" or self.is_pointer()): return "%#x" return self.format_str @@ -1686,7 +1679,7 @@ class Parameter(VkVariable): def needs_conversion(self, conv, unwrap, direction, parent_const=False): """ Check if param needs conversion. """ - if self.is_pointer_pointer() and self.type != 'void': + if self.is_pointer_pointer() and self.type_name != 'void': if direction == Direction.INPUT or not self.is_const(): return conv @@ -1724,7 +1717,7 @@ class Parameter(VkVariable): def spec(self): """ Generate spec file entry for this parameter. """ - if self.is_pointer() and self.type == "char": + if self.is_pointer() and self.type_name == "char": return "str" if self.is_dispatchable() or self.is_pointer() or self.is_static_array(): return "ptr" @@ -1738,14 +1731,14 @@ class Parameter(VkVariable): return "long" if self.is_handle() and not self.is_dispatchable(): return "int64" - if self.type == "float": + if self.type_name == "float": return "float" - if self.type in ["int", "int32_t", "size_t", "uint16_t", "uint32_t", "VkBool32"]: + if self.type_name in ["int", "int32_t", "size_t", "uint16_t", "uint32_t", "VkBool32"]: return "long" - if self.type in ["uint64_t", "VkDeviceSize"]: + if self.type_name in ["uint64_t", "VkDeviceSize"]: return "int64" - LOGGER.error("Unhandled spec conversion for type: {0}".format(self.type)) + LOGGER.error("Unhandled spec conversion for type: {0}".format(self.type_name)) def variable(self, conv, unwrap, params_prefix=""): """ Returns 'glue' code during generation of a function call on how to access the variable. @@ -1758,7 +1751,7 @@ class Parameter(VkVariable): # Hack until we enable allocation callbacks from ICD to application. These are a joy # to enable one day, because of calling convention conversion. - if unwrap != Unwrap.NONE and "VkAllocationCallbacks" in self.type: + if unwrap != Unwrap.NONE and "VkAllocationCallbacks" in self.type_name: LOGGER.debug("TODO: setting NULL VkAllocationCallbacks for {0}".format(self.name)) return "NULL" @@ -1772,7 +1765,7 @@ class Parameter(VkVariable): if unwrap != Unwrap.NONE: unwrap_handle = None - if self.object_type != None and self.type == "uint64_t": + if self.object_type != None and self.type_name == "uint64_t": unwrap_handle = "wine_vk_unwrap_handle({0}{1}, {0}{2})".format( params_prefix, self.object_type, self.name) @@ -1857,13 +1850,13 @@ class VkStruct(Sequence): self.order = order + 1 for member in self.members: - if member.type == self.name: + if member.type_name == self.name: continue if not member.is_union() and not member.is_struct(): continue - if structs[member.type].is_alias(): - structs[member.type].alias.set_order(self.order, structs) - structs[member.type].set_order(self.order, structs) + if structs[member.type_name].is_alias(): + structs[member.type_name].alias.set_order(self.order, structs) + structs[member.type_name].set_order(self.order, structs) @property def struct_extensions(self): @@ -1928,7 +1921,7 @@ class VkStruct(Sequence): """ for m in self.members: - if self.name == m.type: + if self.name == m.type_name: continue if m.needs_alignment(): return True @@ -1938,7 +1931,7 @@ class VkStruct(Sequence): """ Returns if struct members need unwrapping of handle. """ for m in self.members: - if self.name == m.type: + if self.name == m.type_name: continue if m.is_wrapped(): return True @@ -1993,7 +1986,7 @@ class VkStruct(Sequence): needs_output_copy = False for m in self.members: - if self.name == m.type: + if self.name == m.type_name: continue if m.name == "pNext": @@ -2007,7 +2000,7 @@ class VkStruct(Sequence): continue # for non-pointer members, check for returnedonly and const attributes - if not m.is_pointer() or m.type == "void": + if not m.is_pointer() or m.type_name == "void": if direction == Direction.INPUT: if self.returnedonly: continue @@ -2044,7 +2037,7 @@ class VkStruct(Sequence): return True for m in self.members: - if self.name == m.type: + if self.name == m.type_name: continue if m.needs_alloc(conv, unwrap): return True @@ -2057,7 +2050,7 @@ class VkStruct(Sequence): return False for m in self.members: - if self.name == m.type: + if self.name == m.type_name: continue if m.is_pointer() or m.is_pointer_size(): return True @@ -2072,7 +2065,7 @@ class VkStruct(Sequence): parsing. """ for m in self.members: - type_info = types[m.type] + type_info = types[m.type_name] m.set_type_info(type_info) @@ -2281,20 +2274,17 @@ class ArrayConversionFunction(object): def __init__(self, array, direction, conv, unwrap): self.array = array self.direction = direction - self.type = array.type + self.type = array.type_name self.conv = conv self.unwrap = unwrap if array.is_static_array() and direction == Direction.INPUT: LOGGER.error("Static array input conversion is not supported") - name = "convert_{0}_".format(array.type) - if array.pointer_array: - name += "pointer_" - name += "array_" win_type = "win32" if self.conv else "win64" - name += convert_suffix(direction, win_type, unwrap, array.is_wrapped()) - self.name = name + ptr = "pointer_" if array.pointer_array else "" + + self.name = f"convert_{self.type}_{ptr}array_" + convert_suffix(direction, win_type, unwrap, array.is_wrapped()) def __eq__(self, other): return self.name == other.name @@ -2864,14 +2854,14 @@ class Generator(object): def mark_struct_dependencies(struct, types): for m in struct: - type_info = types[m.type] + type_info = types[m.type_name] # Complex types have a matching definition e.g. VkStruct. # Not needed for base types such as uint32_t. if "data" in type_info: - types[m.type]["data"].required = True + types[m.type_name]["data"].required = True - if type_info["category"] == "struct" and struct.name != m.type: + if type_info["category"] == "struct" and struct.name != m.type_name: # Yay, recurse mark_struct_dependencies(type_info["data"], types) elif type_info["category"] == "bitmask": @@ -2886,7 +2876,7 @@ class Generator(object): # Analyze parameter dependencies and pull in any type needed. for p in func.params: - type_info = self.types[p.type] + type_info = self.types[p.type_name] # Check if we are dealing with a complex type e.g. Enum, VkStruct and others. if "data" not in type_info: -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9972
From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/winevulkan/make_vulkan | 67 ++++++++++++++----------------------- 1 file changed, 25 insertions(+), 42 deletions(-) diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 2509a89008f..201e3fed9c3 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -3171,9 +3171,9 @@ class Generator(object): alias_types = [] for t in filter(is_api_supported, types): - type_info = {} - type_info["category"] = t.attrib.get("category", None) - type_info["requires"] = t.attrib.get("requires", None) + category, requires = t.get("category"), t.get("requires") + name = t.findtext("name") or t.findtext("proto/name") or t.get("name") + type_info = {"category": category, "name": name} # We parse aliases in a second pass when we know more. alias = t.attrib.get("alias") @@ -3182,45 +3182,39 @@ class Generator(object): alias_types.append(t) continue - if type_info["category"] in ["include"]: + if category in ["include"]: continue # video.xml redefines stdint types which we already parsed in vk.xml. # For some reason, it doesn't define them the same way. - if type_info["requires"] == "stdint": + if requires == "stdint": continue - if type_info["category"] == "basetype": - name = t.find("name").text + if category == "basetype": define = VkDefine.from_xml(t) defines.append(define) type_info["data"] = define # Basic C types don't need us to define them, but we do need data for them - elif type_info["requires"] == "vk_platform": - name = t.attrib.get("name") - requires = type_info["requires"] + elif requires == "vk_platform": basic_c = VkBaseType(name, name, requires=requires) type_info["data"] = basic_c - elif type_info["category"] == "bitmask": - name = t.find("name").text + elif category == "bitmask": _type = t.find("type").text # Most bitmasks have a requires attribute used to pull in # required '*FlagBits" enum. - requires = type_info["requires"] bitmask = VkBaseType(name, _type, requires=requires) bitmasks.append(bitmask) type_info["data"] = bitmask - elif type_info["category"] == "define": + elif category == "define": define = VkDefine.from_xml(t) defines.append(define) type_info["data"] = define - elif type_info["category"] == "enum": - name = t.attrib.get("name") + elif category == "enum": # The type section only contains enum names, not the actual definition. # Since we already parsed the enum before, just link it in. try: @@ -3231,17 +3225,17 @@ class Generator(object): # definitions. type_info["data"] = None - elif type_info["category"] == "funcpointer": + elif category == "funcpointer": funcpointer = FunctionPointer.from_xml(t) funcpointers.append(funcpointer) type_info["data"] = funcpointer - elif type_info["category"] == "handle": + elif category == "handle": handle = VkHandle.from_xml(t) handles.append(handle) type_info["data"] = handle - elif type_info["category"] in ["struct", "union"]: + elif category in ["struct", "union"]: # We store unions among structs as some structs depend # on unions. The types are very similar in parsing and # generation anyway. The official Vulkan scripts use @@ -3250,51 +3244,40 @@ class Generator(object): structs.append(struct) type_info["data"] = struct - # Name is in general within a name tag else it is an optional - # attribute on the type tag. - name_elem = t.find("name") - proto_elm = t.find("proto") - if name_elem is not None: - type_info["name"] = name_elem.text - elif proto_elm is not None: - type_info["name"] = proto_elm.find("name").text - else: - type_info["name"] = t.attrib.get("name", None) - # Store all type data in a shared dictionary, so we can easily # look up information for a given type. There are no duplicate # names. - self.types[type_info["name"]] = type_info + self.types[name] = type_info # Second pass for alias types, so we can retrieve all data from # the aliased object. for t in alias_types: - type_info = {} - type_info["category"] = t.attrib.get("category") - type_info["name"] = t.attrib.get("name") + category, requires = t.get("category"), t.get("requires") + name = t.findtext("name") or t.findtext("proto/name") or t.get("name") + type_info = {"category": category, "name": name} - alias = t.attrib.get("alias") + alias = t.get("alias") - if type_info["category"] == "bitmask": - bitmask = VkBaseType(type_info["name"], alias, alias=self.types[alias]["data"]) + if category == "bitmask": + bitmask = VkBaseType(name, alias, alias=self.types[alias]["data"]) bitmasks.append(bitmask) type_info["data"] = bitmask - if type_info["category"] == "enum": + if category == "enum": type_info["data"] = Context.enums[alias] - Context.enums[alias].typedefs += [type_info["name"]] + Context.enums[alias].typedefs += [name] - if type_info["category"] == "handle": + if category == "handle": handle = VkHandle.from_alias(t, self.types[alias]["data"]) handles.append(handle) type_info["data"] = handle - if type_info["category"] == "struct": + if category == "struct": struct = VkStruct.from_alias(t, self.types[alias]["data"]) structs.append(struct) type_info["data"] = struct - self.types[type_info["name"]] = type_info + self.types[name] = type_info # We need detailed type information during code generation # on structs for alignment reasons. Unfortunately structs -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9972
From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/winevulkan/make_vulkan | 138 ++++++++++++++++-------------------- 1 file changed, 60 insertions(+), 78 deletions(-) diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 201e3fed9c3..3d3d4bee7ed 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -26,7 +26,6 @@ import re import urllib.request import xml.etree.ElementTree as ET from collections import OrderedDict -from collections.abc import Sequence from enum import Enum # This script generates code for a Wine Vulkan ICD driver from Vulkan's vk.xml. @@ -418,26 +417,21 @@ def parse_array_lens(element): LOGGER.warning("Ignoring tag <{0}> while trying to parse array sizes".format(e.tag)) return [i.strip('[]') for i in re.findall(r'\[\w+\]', text)] -class VkBaseType(object): - def __init__(self, name, _type, alias=None, requires=None): - """ Vulkan base type class. - - VkBaseType is mostly used by Vulkan to define its own - base types like VkFlags through typedef out of e.g. uint32_t. - Args: - name (:obj:'str'): Name of the base type. - _type (:obj:'str'): Underlying type - alias (bool): type is an alias or not. - requires (:obj:'str', optional): Other types required. - Often bitmask values pull in a *FlagBits type. - """ +class Type(object): + def __init__(self, name): + self.order = 0 + self.required = False self.extensions = set() self.name = name + + +class VkBaseType(Type): + def __init__(self, name, _type, alias=None, requires=None): + Type.__init__(self, name) self.type = _type self.alias = alias self.requires = requires - self.required = False def definition(self): # Definition is similar for alias or non-alias as type @@ -472,35 +466,38 @@ class VkConstant(object): return text -class VkDefine(object): - def __init__(self, value): - self.extensions = set() +class Define(Type): + def __init__(self, name, value): + Type.__init__(self, name) self.value = value @staticmethod def from_xml(define): value = innertext(define) - value = re.sub(r'\s*//.*$', '', value, flags=re.M) + value = re.sub(r"\s*//.*$", "", value, flags=re.M) value = value.strip() if "#define VK_USE_64_BIT_PTR_DEFINES" in value: - return VkDefine("#define VK_USE_64_BIT_PTR_DEFINES 0") - return VkDefine(value) + value = "#define VK_USE_64_BIT_PTR_DEFINES 0" + + name = define.findtext("name") or value.replace("\n", "") + name = re.sub(r"^.*?#define\s+(\w+).*$", r"\1", name) + name = re.sub(r"^.*?typedef\s+[^;]+?(\w+);.*$", r"\1", name) + name = re.sub(r"^.*?struct\s+(\w+);.*$", r"\1", name) + + return Define(name, value) def definition(self): return self.value + '\n' -class Enum(object): +class Enum(Type): def __init__(self, values, name, bitwidth="32", **kwargs): - self.name = name + Type.__init__(self, name) self.values = values self.bitwidth = int(bitwidth) assert self.bitwidth in (32, 64) - - self.extensions = set() self.typedefs = [] - self.required = False @staticmethod def from_xml(node): @@ -592,11 +589,10 @@ class EnumValue(object): return f"{self.name} = {value}{suffix}" -class Function(object): +class Function(Type): def __init__(self, _type, name, params, alias=None): - self.extensions = set() + Type.__init__(self, name) self.platforms = set() - self.name = name self.type = _type self.params = params self.alias = alias @@ -914,11 +910,10 @@ class Function(object): return f"{cast}thunk{bitness}_{self.name}" -class FunctionPointer(object): - def __init__(self, value): - self.extensions = set() +class FunctionPointer(Type): + def __init__(self, name, value): + Type.__init__(self, name) self.value = value - self.required = False @staticmethod def from_xml(xml): @@ -935,7 +930,7 @@ class FunctionPointer(object): value += "void" value += ");" - return FunctionPointer(value) + return FunctionPointer(name, value) def definition(self): return self.value + '\n' @@ -944,27 +939,25 @@ class FunctionPointer(object): return False -class VkHandle(object): +class Handle(Type): def __init__(self, name, _type, parent, alias=None): - self.extensions = set() - self.name = name + Type.__init__(self, name) self.type = _type self.parent = parent self.alias = alias - self.required = False self.object_type = None @staticmethod def from_alias(handle, alias): name = handle.attrib.get("name") - return VkHandle(name, alias.type, alias.parent, alias=alias) + return Handle(name, alias.type, alias.parent, alias=alias) @staticmethod def from_xml(handle): name = handle.find("name").text _type = handle.find("type").text parent = handle.attrib.get("parent") # Most objects have a parent e.g. VkQueue has VkDevice. - return VkHandle(name, _type, parent) + return Handle(name, _type, parent) def dispatch_table(self, param): if not self.is_dispatchable(): @@ -1310,7 +1303,7 @@ class VkMember(VkVariable): return self.dyn_array_len length = self.dyn_array_len - var = parent[parent.index(length)] + var = parent.members[parent.members.index(length)] length = var.value(prefix, conv, deref=True) expr = MEMBER_LENGTH_EXPRESSIONS.get((parent.name, self.name), "{length}") @@ -1583,7 +1576,7 @@ class Parameter(VkVariable): var = params[params.index(param)] prefix = var.value(prefix, conv) - var = var.struct[var.struct.index(length)] + var = var.struct.members[var.struct.members.index(length)] return var.value(f"({prefix})->", conv, deref=True) var = params[params.index(length)] @@ -1781,37 +1774,26 @@ class Parameter(VkVariable): return p -class VkStruct(Sequence): - """ Class which represents the type union and struct. """ - +class Record(Type): def __init__(self, name, members, returnedonly, structextends, alias=None, union=False): - self.extensions = set() - self.name = name + Type.__init__(self, name) self.members = members self.returnedonly = returnedonly self.structextends = structextends - self.required = False self.alias = alias self.union = union self.type_info = None # To be set later. self._struct_extensions = None self.aliased_by = [] - self.order = 0 # struct type is the (only one possible) value of the sType member, if present member = next((x for x in self.members if x.name == "sType"), None) self.struct_type = member.values if member else None - def __getitem__(self, i): - return self.members[i] - - def __len__(self): - return len(self.members) - @staticmethod def from_alias(struct, alias): name = struct.attrib.get("name") - aliasee = VkStruct(name, alias.members, alias.returnedonly, alias.structextends, alias=alias) + aliasee = Record(name, alias.members, alias.returnedonly, alias.structextends, alias=alias) alias.add_aliased_by(aliasee) return aliasee @@ -1842,7 +1824,7 @@ class VkStruct(Sequence): members = filter(is_api_supported, struct.findall("member")) members = [VkMember.from_xml(member, returnedonly) for member in members] - return VkStruct(name, members, returnedonly, structextends, union=union) + return Record(name, members, returnedonly, structextends, union=union) def set_order(self, order, structs): if order < self.order: @@ -1895,7 +1877,7 @@ class VkStruct(Sequence): text += "\n{\n" - for m in self: + for m in self.members: if align and m.needs_alignment(): text += " {0};\n".format(m.definition(align=align, conv=conv)) else: @@ -1946,7 +1928,7 @@ class VkStruct(Sequence): if direction == Direction.INPUT and self.name in STRUCT_CHAIN_CONVERSIONS: return any(struct_extensions) - if not "pNext" in self: + if not "pNext" in self.members: return False is_const = self.members[self.members.index("pNext")].is_const() # VkOpticalFlowSessionCreateInfoNV is missing const in its pNext pointer @@ -2107,7 +2089,7 @@ class StructConversionFunction(object): # It doesn't make sense to generate conversion functions for non-struct variables # which aren't in arrays, as this should be handled by the copy() function - if not isinstance(self.operand, VkStruct): + if not isinstance(self.operand, Record): return "" body = "" @@ -2155,7 +2137,7 @@ class StructConversionFunction(object): needs_extensions = self.operand.needs_extensions_conversion(self.conv, self.direction) - if self.direction == Direction.OUTPUT and not any([any([self.member_needs_copy(ext, m) for m in ext]) for ext in self.operand.struct_extensions]): + if self.direction == Direction.OUTPUT and not any([any([self.member_needs_copy(ext, m) for m in ext.members]) for ext in self.operand.struct_extensions]): needs_extensions = False if len(self.operand.struct_extensions) == 0: needs_extensions = False @@ -2177,7 +2159,7 @@ class StructConversionFunction(object): body += " if (!in) return;\n\n" - for m in self.operand: + for m in self.operand.members: if not self.member_needs_copy(self.operand, m): continue if m.name == "pNext" and (needs_extensions or self.conv): @@ -2212,7 +2194,7 @@ class StructConversionFunction(object): if not ext.required: continue - if self.direction == Direction.OUTPUT and not any([self.member_needs_copy(ext, m) for m in ext]): + if self.direction == Direction.OUTPUT and not any([self.member_needs_copy(ext, m) for m in ext.members]): continue win_type = ext.name + "32" if self.conv and ext.needs_win32_type() else ext.name @@ -2232,10 +2214,10 @@ class StructConversionFunction(object): else: body += f" {out_type} *out_ext = find_next_struct(out_header, {ext.struct_type});\n" - if any(self.member_needs_copy(ext, m) for m in ext if m.name not in ("sType", "pNext")): + if any(self.member_needs_copy(ext, m) for m in ext.members if m.name not in ("sType", "pNext")): body += f" {in_type} *in_ext = ({in_type} *)in_header;\n" - for m in ext: + for m in ext.members: if m.name == "sType": body += f" out_ext->sType = {ext.struct_type};\n" continue @@ -2258,7 +2240,7 @@ class StructConversionFunction(object): body += " break;\n" body += " }\n" body += " }\n" - elif self.conv and self.direction == Direction.INPUT and "pNext" in self.operand: + elif self.conv and self.direction == Direction.INPUT and "pNext" in self.operand.members: body += " if (in->pNext)\n" body += " FIXME(\"Unexpected pNext\\n\");\n" @@ -2325,7 +2307,7 @@ class ArrayConversionFunction(object): return_type = self.type needs_copy = not self.array.is_struct() or self.direction != Direction.INPUT or \ - not self.array.struct.returnedonly or "pNext" in self.array.struct + not self.array.struct.returnedonly or "pNext" in self.array.struct.members # Generate function prototype. if return_type: @@ -2853,10 +2835,10 @@ class Generator(object): types[bitmask.requires]["data"].required = True def mark_struct_dependencies(struct, types): - for m in struct: + for m in struct.members: type_info = types[m.type_name] - # Complex types have a matching definition e.g. VkStruct. + # Complex types have a matching definition e.g. Record. # Not needed for base types such as uint32_t. if "data" in type_info: types[m.type_name]["data"].required = True @@ -2878,7 +2860,7 @@ class Generator(object): for p in func.params: type_info = self.types[p.type_name] - # Check if we are dealing with a complex type e.g. Enum, VkStruct and others. + # Check if we are dealing with a complex type e.g. Enum, Record and others. if "data" not in type_info: continue @@ -3014,10 +2996,10 @@ class Generator(object): @staticmethod def _require_type(type_info): - if type(type_info) not in (VkDefine, Enum) and type_info.is_alias(): + if type(type_info) not in (Define, Enum) and type_info.is_alias(): type_info = type_info.alias type_info.required = True - if type(type_info) == VkStruct: + if type(type_info) == Record: for member in type_info.members: if "data" in member.type_info: Generator._require_type(member.type_info["data"]) @@ -3191,7 +3173,7 @@ class Generator(object): continue if category == "basetype": - define = VkDefine.from_xml(t) + define = Define.from_xml(t) defines.append(define) type_info["data"] = define @@ -3210,7 +3192,7 @@ class Generator(object): type_info["data"] = bitmask elif category == "define": - define = VkDefine.from_xml(t) + define = Define.from_xml(t) defines.append(define) type_info["data"] = define @@ -3231,7 +3213,7 @@ class Generator(object): type_info["data"] = funcpointer elif category == "handle": - handle = VkHandle.from_xml(t) + handle = Handle.from_xml(t) handles.append(handle) type_info["data"] = handle @@ -3240,7 +3222,7 @@ class Generator(object): # on unions. The types are very similar in parsing and # generation anyway. The official Vulkan scripts use # a similar kind of hack. - struct = VkStruct.from_xml(t) + struct = Record.from_xml(t) structs.append(struct) type_info["data"] = struct @@ -3268,12 +3250,12 @@ class Generator(object): Context.enums[alias].typedefs += [name] if category == "handle": - handle = VkHandle.from_alias(t, self.types[alias]["data"]) + handle = Handle.from_alias(t, self.types[alias]["data"]) handles.append(handle) type_info["data"] = handle if category == "struct": - struct = VkStruct.from_alias(t, self.types[alias]["data"]) + struct = Record.from_alias(t, self.types[alias]["data"]) structs.append(struct) type_info["data"] = struct -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9972
From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/winevulkan/make_vulkan | 146 +++++++------------- include/wine/vulkan.h | 267 ++++++++++++++++++++++++++++++++++++ 2 files changed, 318 insertions(+), 95 deletions(-) diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 3d3d4bee7ed..c046bd00feb 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -419,19 +419,44 @@ def parse_array_lens(element): class Type(object): - def __init__(self, name): + types = {} + + def __init__(self, name, requires=[]): self.order = 0 - self.required = False + self._required = False self.extensions = set() + self.requires = requires self.name = name + Type.types[name] = self + + def require(self): + if self._required: + return + self._required = True + + is_other = lambda t: t and t != self + for type in filter(is_other, map(Type.types.get, self.requires)): + type.require() + + def is_required(self): + return self._required + + def set_order(self, order=0): + if order < self.order: + return + self.order = order + 1 + + is_other = lambda t: t and t != self + for type in filter(is_other, map(Type.types.get, self.requires)): + type.set_order(self.order) + class VkBaseType(Type): def __init__(self, name, _type, alias=None, requires=None): - Type.__init__(self, name) + Type.__init__(self, name, requires=[requires] if requires else []) self.type = _type self.alias = alias - self.requires = requires def definition(self): # Definition is similar for alias or non-alias as type @@ -467,8 +492,8 @@ class VkConstant(object): class Define(Type): - def __init__(self, name, value): - Type.__init__(self, name) + def __init__(self, name, value, requires=None): + Type.__init__(self, name, requires=requires if requires else []) self.value = value @staticmethod @@ -485,7 +510,8 @@ class Define(Type): name = re.sub(r"^.*?typedef\s+[^;]+?(\w+);.*$", r"\1", name) name = re.sub(r"^.*?struct\s+(\w+);.*$", r"\1", name) - return Define(name, value) + requires = [elem.text for elem in define.iterfind("type")] + return Define(name, value, requires=requires) def definition(self): return self.value + '\n' @@ -591,7 +617,7 @@ class EnumValue(object): class Function(Type): def __init__(self, _type, name, params, alias=None): - Type.__init__(self, name) + Type.__init__(self, name, [_type] + [p.type_name for p in params]) self.platforms = set() self.type = _type self.params = params @@ -603,7 +629,8 @@ class Function(Type): # Required is set while parsing which APIs and types are required # and is used by the code generation. - self.required = True if func_info else False + if func_info: + self.require() if self.name in MANUAL_UNIX_THUNKS | USER_DRIVER_FUNCS: self.unwrap = Unwrap.NONE @@ -665,9 +692,6 @@ class Function(Type): return True return False - def is_required(self): - return self.required - def returns_longlong(self): return self.type in ["uint64_t", "VkDeviceAddress"] @@ -999,9 +1023,6 @@ class Handle(Type): """ return self.type == "VK_DEFINE_HANDLE" - def is_required(self): - return self.required - def host_handle(self, name): """ Provide access to the host handle of a wrapped object. """ @@ -1776,7 +1797,7 @@ class Parameter(VkVariable): class Record(Type): def __init__(self, name, members, returnedonly, structextends, alias=None, union=False): - Type.__init__(self, name) + Type.__init__(self, name, [m.type_name for m in members]) self.members = members self.returnedonly = returnedonly self.structextends = structextends @@ -1826,20 +1847,6 @@ class Record(Type): members = [VkMember.from_xml(member, returnedonly) for member in members] return Record(name, members, returnedonly, structextends, union=union) - def set_order(self, order, structs): - if order < self.order: - return - - self.order = order + 1 - for member in self.members: - if member.type_name == self.name: - continue - if not member.is_union() and not member.is_struct(): - continue - if structs[member.type_name].is_alias(): - structs[member.type_name].alias.set_order(self.order, structs) - structs[member.type_name].set_order(self.order, structs) - @property def struct_extensions(self): if self._struct_extensions is None: @@ -1937,7 +1944,7 @@ class Record(Type): is_const = True for e in struct_extensions: - if not e.required: + if not e.is_required(): continue if e.needs_conversion(conv, Unwrap.HOST, direction, is_const, check_extensions=False): return True @@ -2191,7 +2198,7 @@ class StructConversionFunction(object): body += ident + "break;\n" for ext in self.operand.struct_extensions: - if not ext.required: + if not ext.is_required(): continue if self.direction == Direction.OUTPUT and not any([self.member_needs_copy(ext, m) for m in ext.members]): @@ -2489,7 +2496,7 @@ class Generator(object): for definition, conversion in enum_conversions(conversions): if isinstance(conversion, StructConversionFunction): for e in conversion.operand.struct_extensions: - if not e.required or not e.needs_win32_type(): + if not e.is_required() or not e.needs_win32_type(): continue win32_structs.append(e) if conversion.operand.needs_win32_type(): @@ -2745,13 +2752,13 @@ class Generator(object): # Define enums, this includes values for some of the bitmask types as well. for enum in Context.enums.values(): - if enum.required: + if enum.is_required(): f.write(enum.definition()) f.write("typedef struct VkDebugUtilsMessengerCallbackDataEXT VkDebugUtilsMessengerCallbackDataEXT;\n") for fp in Context.func_ptrs: - if fp.required: + if fp.is_required(): f.write(fp.definition()) f.write("\n") @@ -2761,7 +2768,7 @@ class Generator(object): # Note: unions are stored in structs for dependency reasons, # see comment in parsing section. for struct in Context.structs: - if struct.required and struct.name != "SECURITY_ATTRIBUTES": + if struct.is_required() and struct.name != "SECURITY_ATTRIBUTES": LOGGER.debug("Generating struct: {0}".format(struct.name)) f.write(struct.definition(align=True)) f.write("\n") @@ -2828,50 +2835,6 @@ class Generator(object): for func in filter(Function.is_core, Context.funcs.values()): f.write(func.spec(symbol=f"winevulkan.{func.name}")) - def _mark_command_required(self, command): - """ Helper function to mark a certain command and the datatypes it needs as required.""" - def mark_bitmask_dependencies(bitmask, types): - if bitmask.requires is not None: - types[bitmask.requires]["data"].required = True - - def mark_struct_dependencies(struct, types): - for m in struct.members: - type_info = types[m.type_name] - - # Complex types have a matching definition e.g. Record. - # Not needed for base types such as uint32_t. - if "data" in type_info: - types[m.type_name]["data"].required = True - - if type_info["category"] == "struct" and struct.name != m.type_name: - # Yay, recurse - mark_struct_dependencies(type_info["data"], types) - elif type_info["category"] == "bitmask": - mark_bitmask_dependencies(type_info["data"], types) - - func = Context.funcs[command] - func.required = True - - # Pull in return type - if func.type != "void": - self.types[func.type]["data"].required = True - - # Analyze parameter dependencies and pull in any type needed. - for p in func.params: - type_info = self.types[p.type_name] - - # Check if we are dealing with a complex type e.g. Enum, Record and others. - if "data" not in type_info: - continue - - # Mark the complex type as required. - type_info["data"].required = True - if type_info["category"] == "struct": - struct = type_info["data"] - mark_struct_dependencies(struct, self.types) - elif type_info["category"] == "bitmask": - mark_bitmask_dependencies(type_info["data"], self.types) - def _match_object_types(self): """ Matches each handle with the correct object type. """ # Use upper case comparison for simplicity. @@ -2994,16 +2957,6 @@ class Generator(object): Context.consts.append(VkConstant(enum_elem.attrib["name"], enum_elem.attrib["alias"])) - @staticmethod - def _require_type(type_info): - if type(type_info) not in (Define, Enum) and type_info.is_alias(): - type_info = type_info.alias - type_info.required = True - if type(type_info) == Record: - for member in type_info.members: - if "data" in member.type_info: - Generator._require_type(member.type_info["data"]) - def _parse_extensions(self, root): """ Parse extensions section and pull in any types and commands for this extension. """ exts = root.findall("./extensions/extension") @@ -3088,13 +3041,13 @@ class Generator(object): if t.attrib["name"] in self.types: type_info = self.types[t.attrib["name"]] type_info["data"].extensions.add(extension) - self._require_type(type_info["data"]) + type_info["data"].require() # Pull in any commands we need. We infer types to pull in from the command # as well. for command in require.findall("command"): cmd_name = command.attrib["name"] - self._mark_command_required(cmd_name) + Context.funcs[cmd_name].require() # Store a list with extensions. @@ -3127,7 +3080,7 @@ class Generator(object): continue elif tag.tag == "command": name = tag.attrib["name"] - self._mark_command_required(name) + Context.funcs[name].require() elif tag.tag == "enum": self._process_require_enum(tag) elif tag.tag == "type": @@ -3138,7 +3091,7 @@ class Generator(object): continue type_info = self.types[name] - type_info["data"].required = True + type_info["data"].require() def _parse_types(self, root): """ Parse types section, which contains all data types e.g. structs, typedefs etcetera. """ @@ -3157,6 +3110,9 @@ class Generator(object): name = t.findtext("name") or t.findtext("proto/name") or t.get("name") type_info = {"category": category, "name": name} + if category is None and name not in Type.types: + Type("extern", name) + # We parse aliases in a second pass when we know more. alias = t.attrib.get("alias") if alias: @@ -3271,7 +3227,7 @@ class Generator(object): struct.set_type_info(self.types) for struct in structs.values(): - struct.set_order(0, structs) + struct.set_order() # Guarantee everything is sorted, so code generation doesn't have # to deal with this. diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 8c0d8320b06..0dca0cca2e5 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -7181,6 +7181,14 @@ typedef enum VkVideoEncodeH264StdFlagBitsKHR VK_VIDEO_ENCODE_H2_64_STD_FLAG_BITS_KHR_MAX_ENUM = 0x7fffffff, } VkVideoEncodeH264StdFlagBitsKHR; +typedef enum VkVideoEncodeH265CtbSizeFlagBitsKHR +{ + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H2_65_CTB_SIZE_FLAG_BITS_KHR_MAX_ENUM = 0x7fffffff, +} VkVideoEncodeH265CtbSizeFlagBitsKHR; + typedef enum VkVideoEncodeIntraRefreshModeFlagBitsKHR { VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0, @@ -10724,6 +10732,7 @@ typedef struct VkAabbPositionsKHR } VkAabbPositionsKHR; typedef VkAabbPositionsKHR VkAabbPositionsNV; + typedef struct VkAccelerationStructureBuildGeometryInfoKHR { VkStructureType sType; @@ -10830,6 +10839,7 @@ typedef struct VkAccelerationStructureGeometrySpheresDataNV VkDeviceSize WINE_VK_ALIGN(8) indexStride; } VkAccelerationStructureGeometrySpheresDataNV; + typedef struct VkAccelerationStructureMemoryRequirementsInfoNV { VkStructureType sType; @@ -10912,6 +10922,7 @@ typedef struct VkAntiLagDataAMD const VkAntiLagPresentationInfoAMD *pPresentationInfo; } VkAntiLagDataAMD; + typedef struct VkAttachmentDescriptionStencilLayout { VkStructureType sType; @@ -10921,6 +10932,7 @@ typedef struct VkAttachmentDescriptionStencilLayout } VkAttachmentDescriptionStencilLayout; typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR; + typedef struct VkAttachmentFeedbackLoopInfoEXT { VkStructureType sType; @@ -10928,6 +10940,7 @@ typedef struct VkAttachmentFeedbackLoopInfoEXT VkBool32 feedbackLoopEnable; } VkAttachmentFeedbackLoopInfoEXT; + typedef struct VkAttachmentReferenceStencilLayout { VkStructureType sType; @@ -10936,6 +10949,7 @@ typedef struct VkAttachmentReferenceStencilLayout } VkAttachmentReferenceStencilLayout; typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR; + typedef struct VkAttachmentSampleCountInfoAMD { VkStructureType sType; @@ -10946,6 +10960,7 @@ typedef struct VkAttachmentSampleCountInfoAMD } VkAttachmentSampleCountInfoAMD; typedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV; + typedef struct VkBaseInStructure { VkStructureType sType; @@ -10984,6 +10999,7 @@ typedef struct VkBindBufferMemoryDeviceGroupInfo } VkBindBufferMemoryDeviceGroupInfo; typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR; + typedef struct VkBindBufferMemoryInfo { VkStructureType sType; @@ -10994,6 +11010,7 @@ typedef struct VkBindBufferMemoryInfo } VkBindBufferMemoryInfo; typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR; + typedef struct VkBindDataGraphPipelineSessionMemoryInfoARM { VkStructureType sType; @@ -11028,6 +11045,7 @@ typedef struct VkBindDescriptorSetsInfo } VkBindDescriptorSetsInfo; typedef VkBindDescriptorSetsInfo VkBindDescriptorSetsInfoKHR; + typedef struct VkBindImageMemoryDeviceGroupInfo { VkStructureType sType; @@ -11039,6 +11057,7 @@ typedef struct VkBindImageMemoryDeviceGroupInfo } VkBindImageMemoryDeviceGroupInfo; typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR; + typedef struct VkBindImageMemoryInfo { VkStructureType sType; @@ -11049,6 +11068,7 @@ typedef struct VkBindImageMemoryInfo } VkBindImageMemoryInfo; typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR; + typedef struct VkBindImageMemorySwapchainInfoKHR { VkStructureType sType; @@ -11065,6 +11085,7 @@ typedef struct VkBindImagePlaneMemoryInfo } VkBindImagePlaneMemoryInfo; typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR; + typedef struct VkBindIndexBufferIndirectCommandEXT { VkDeviceAddress WINE_VK_ALIGN(8) bufferAddress; @@ -11087,6 +11108,7 @@ typedef struct VkBindMemoryStatus } VkBindMemoryStatus; typedef VkBindMemoryStatus VkBindMemoryStatusKHR; + typedef struct VkBindPipelineIndirectCommandNV { VkDeviceAddress WINE_VK_ALIGN(8) pipelineAddress; @@ -11167,6 +11189,7 @@ typedef struct VkBlitImageInfo2 } VkBlitImageInfo2; typedef VkBlitImageInfo2 VkBlitImageInfo2KHR; + typedef struct VkBufferCaptureDescriptorDataInfoEXT { VkStructureType sType; @@ -11181,6 +11204,7 @@ typedef struct VkBufferCopy VkDeviceSize WINE_VK_ALIGN(8) size; } VkBufferCopy; + typedef struct VkBufferDeviceAddressCreateInfoEXT { VkStructureType sType; @@ -11197,6 +11221,8 @@ typedef struct VkBufferDeviceAddressInfo typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR; typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT; + + typedef struct VkBufferImageCopy { VkDeviceSize WINE_VK_ALIGN(8) bufferOffset; @@ -11207,6 +11233,7 @@ typedef struct VkBufferImageCopy VkExtent3D imageExtent; } VkBufferImageCopy; + typedef struct VkBufferMemoryBarrier { VkStructureType sType; @@ -11220,6 +11247,7 @@ typedef struct VkBufferMemoryBarrier VkDeviceSize WINE_VK_ALIGN(8) size; } VkBufferMemoryBarrier; + typedef struct VkBufferMemoryRequirementsInfo2 { VkStructureType sType; @@ -11228,6 +11256,7 @@ typedef struct VkBufferMemoryRequirementsInfo2 } VkBufferMemoryRequirementsInfo2; typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR; + typedef struct VkBufferOpaqueCaptureAddressCreateInfo { VkStructureType sType; @@ -11236,6 +11265,7 @@ typedef struct VkBufferOpaqueCaptureAddressCreateInfo } VkBufferOpaqueCaptureAddressCreateInfo; typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR; + typedef struct VkBufferUsageFlags2CreateInfo { VkStructureType sType; @@ -11244,6 +11274,7 @@ typedef struct VkBufferUsageFlags2CreateInfo } VkBufferUsageFlags2CreateInfo; typedef VkBufferUsageFlags2CreateInfo VkBufferUsageFlags2CreateInfoKHR; + typedef struct VkBufferViewCreateInfo { VkStructureType sType; @@ -11274,6 +11305,7 @@ typedef struct VkBuildPartitionedAccelerationStructureInfoNV VkDeviceAddress WINE_VK_ALIGN(8) srcInfosCount; } VkBuildPartitionedAccelerationStructureInfoNV; + typedef struct VkCalibratedTimestampInfoKHR { VkStructureType sType; @@ -11468,6 +11500,7 @@ typedef struct VkCommandBufferInheritanceRenderingInfo } VkCommandBufferInheritanceRenderingInfo; typedef VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoKHR; + typedef struct VkCommandBufferInheritanceViewportScissorInfoNV { VkStructureType sType; @@ -11477,6 +11510,7 @@ typedef struct VkCommandBufferInheritanceViewportScissorInfoNV const VkViewport *pViewportDepths; } VkCommandBufferInheritanceViewportScissorInfoNV; + typedef struct VkCommandPoolCreateInfo { VkStructureType sType; @@ -11522,6 +11556,7 @@ typedef struct VkConditionalRenderingBeginInfoEXT VkConditionalRenderingFlagsEXT flags; } VkConditionalRenderingBeginInfoEXT; + typedef struct VkConvertCooperativeVectorMatrixInfoNV { VkStructureType sType; @@ -11626,6 +11661,7 @@ typedef struct VkCopyBufferInfo2 } VkCopyBufferInfo2; typedef VkCopyBufferInfo2 VkCopyBufferInfo2KHR; + typedef struct VkCopyBufferToImageInfo2 { VkStructureType sType; @@ -11638,6 +11674,7 @@ typedef struct VkCopyBufferToImageInfo2 } VkCopyBufferToImageInfo2; typedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR; + typedef struct VkCopyCommandTransformInfoQCOM { VkStructureType sType; @@ -11671,6 +11708,7 @@ typedef struct VkCopyImageInfo2 } VkCopyImageInfo2; typedef VkCopyImageInfo2 VkCopyImageInfo2KHR; + typedef struct VkCopyImageToBufferInfo2 { VkStructureType sType; @@ -11683,6 +11721,7 @@ typedef struct VkCopyImageToBufferInfo2 } VkCopyImageToBufferInfo2; typedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR; + typedef struct VkCopyImageToImageInfo { VkStructureType sType; @@ -11697,6 +11736,7 @@ typedef struct VkCopyImageToImageInfo } VkCopyImageToImageInfo; typedef VkCopyImageToImageInfo VkCopyImageToImageInfoEXT; + typedef struct VkCopyImageToMemoryInfo { VkStructureType sType; @@ -11709,6 +11749,7 @@ typedef struct VkCopyImageToMemoryInfo } VkCopyImageToMemoryInfo; typedef VkCopyImageToMemoryInfo VkCopyImageToMemoryInfoEXT; + typedef struct VkCopyMemoryIndirectCommandKHR { VkDeviceAddress WINE_VK_ALIGN(8) srcAddress; @@ -11717,6 +11758,7 @@ typedef struct VkCopyMemoryIndirectCommandKHR } VkCopyMemoryIndirectCommandKHR; typedef VkCopyMemoryIndirectCommandKHR VkCopyMemoryIndirectCommandNV; + typedef struct VkCopyMemoryIndirectInfoKHR { VkStructureType sType; @@ -11747,6 +11789,7 @@ typedef struct VkCopyMemoryToImageIndirectCommandKHR } VkCopyMemoryToImageIndirectCommandKHR; typedef VkCopyMemoryToImageIndirectCommandKHR VkCopyMemoryToImageIndirectCommandNV; + typedef struct VkCopyMemoryToImageIndirectInfoKHR { VkStructureType sType; @@ -11771,6 +11814,7 @@ typedef struct VkCopyMemoryToImageInfo } VkCopyMemoryToImageInfo; typedef VkCopyMemoryToImageInfo VkCopyMemoryToImageInfoEXT; + typedef struct VkCopyMemoryToMicromapInfoEXT { VkStructureType sType; @@ -12116,6 +12160,7 @@ typedef struct VkDependencyInfo } VkDependencyInfo; typedef VkDependencyInfo VkDependencyInfoKHR; + typedef struct VkDepthBiasInfoEXT { VkStructureType sType; @@ -12181,6 +12226,7 @@ typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo } VkDescriptorPoolInlineUniformBlockCreateInfo; typedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoEXT; + typedef struct VkDescriptorSetAllocateInfo { VkStructureType sType; @@ -12207,6 +12253,7 @@ typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo } VkDescriptorSetLayoutBindingFlagsCreateInfo; typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT; + typedef struct VkDescriptorSetLayoutCreateInfo { VkStructureType sType; @@ -12232,6 +12279,7 @@ typedef struct VkDescriptorSetLayoutSupport } VkDescriptorSetLayoutSupport; typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR; + typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo { VkStructureType sType; @@ -12241,6 +12289,7 @@ typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo } VkDescriptorSetVariableDescriptorCountAllocateInfo; typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT; + typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport { VkStructureType sType; @@ -12249,6 +12298,7 @@ typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport } VkDescriptorSetVariableDescriptorCountLayoutSupport; typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT; + typedef struct VkDescriptorUpdateTemplateCreateInfo { VkStructureType sType; @@ -12264,6 +12314,8 @@ typedef struct VkDescriptorUpdateTemplateCreateInfo } VkDescriptorUpdateTemplateCreateInfo; typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR; + + typedef struct VkDeviceAddressBindingCallbackDataEXT { VkStructureType sType; @@ -12282,6 +12334,7 @@ typedef struct VkDeviceBufferMemoryRequirements } VkDeviceBufferMemoryRequirements; typedef VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsKHR; + typedef struct VkDeviceCreateInfo { VkStructureType sType; @@ -12346,6 +12399,7 @@ typedef struct VkDeviceGroupBindSparseInfo } VkDeviceGroupBindSparseInfo; typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR; + typedef struct VkDeviceGroupCommandBufferBeginInfo { VkStructureType sType; @@ -12354,6 +12408,7 @@ typedef struct VkDeviceGroupCommandBufferBeginInfo } VkDeviceGroupCommandBufferBeginInfo; typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR; + typedef struct VkDeviceGroupDeviceCreateInfo { VkStructureType sType; @@ -12363,6 +12418,7 @@ typedef struct VkDeviceGroupDeviceCreateInfo } VkDeviceGroupDeviceCreateInfo; typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR; + typedef struct VkDeviceGroupPresentCapabilitiesKHR { VkStructureType sType; @@ -12390,6 +12446,7 @@ typedef struct VkDeviceGroupRenderPassBeginInfo } VkDeviceGroupRenderPassBeginInfo; typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR; + typedef struct VkDeviceGroupSubmitInfo { VkStructureType sType; @@ -12403,6 +12460,7 @@ typedef struct VkDeviceGroupSubmitInfo } VkDeviceGroupSubmitInfo; typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR; + typedef struct VkDeviceGroupSwapchainCreateInfoKHR { VkStructureType sType; @@ -12419,6 +12477,7 @@ typedef struct VkDeviceImageMemoryRequirements } VkDeviceImageMemoryRequirements; typedef VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsKHR; + typedef struct VkDeviceImageSubresourceInfo { VkStructureType sType; @@ -12428,6 +12487,7 @@ typedef struct VkDeviceImageSubresourceInfo } VkDeviceImageSubresourceInfo; typedef VkDeviceImageSubresourceInfo VkDeviceImageSubresourceInfoKHR; + typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo { VkStructureType sType; @@ -12436,6 +12496,7 @@ typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo } VkDeviceMemoryOpaqueCaptureAddressInfo; typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR; + typedef struct VkDeviceMemoryOverallocationCreateInfoAMD { VkStructureType sType; @@ -12458,6 +12519,7 @@ typedef struct VkDevicePrivateDataCreateInfo } VkDevicePrivateDataCreateInfo; typedef VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoEXT; + typedef struct VkDeviceQueueGlobalPriorityCreateInfo { VkStructureType sType; @@ -12467,6 +12529,8 @@ typedef struct VkDeviceQueueGlobalPriorityCreateInfo typedef VkDeviceQueueGlobalPriorityCreateInfo VkDeviceQueueGlobalPriorityCreateInfoKHR; typedef VkDeviceQueueGlobalPriorityCreateInfo VkDeviceQueueGlobalPriorityCreateInfoEXT; + + typedef struct VkDeviceQueueInfo2 { VkStructureType sType; @@ -12571,6 +12635,7 @@ typedef struct VkExportFenceCreateInfo } VkExportFenceCreateInfo; typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; + typedef struct VkExportFenceWin32HandleInfoKHR { VkStructureType sType; @@ -12588,6 +12653,7 @@ typedef struct VkExportMemoryAllocateInfo } VkExportMemoryAllocateInfo; typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR; + typedef struct VkExportMemoryWin32HandleInfoKHR { VkStructureType sType; @@ -12605,6 +12671,7 @@ typedef struct VkExportSemaphoreCreateInfo } VkExportSemaphoreCreateInfo; typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; + typedef struct VkExportSemaphoreWin32HandleInfoKHR { VkStructureType sType; @@ -12622,6 +12689,7 @@ typedef struct VkExternalBufferProperties } VkExternalBufferProperties; typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR; + typedef struct VkExternalFenceProperties { VkStructureType sType; @@ -12632,6 +12700,7 @@ typedef struct VkExternalFenceProperties } VkExternalFenceProperties; typedef VkExternalFenceProperties VkExternalFencePropertiesKHR; + typedef struct VkExternalImageFormatProperties { VkStructureType sType; @@ -12640,6 +12709,7 @@ typedef struct VkExternalImageFormatProperties } VkExternalImageFormatProperties; typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR; + typedef struct VkExternalMemoryAcquireUnmodifiedEXT { VkStructureType sType; @@ -12655,6 +12725,7 @@ typedef struct VkExternalMemoryBufferCreateInfo } VkExternalMemoryBufferCreateInfo; typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR; + typedef struct VkExternalMemoryImageCreateInfo { VkStructureType sType; @@ -12663,6 +12734,8 @@ typedef struct VkExternalMemoryImageCreateInfo } VkExternalMemoryImageCreateInfo; typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR; + + typedef struct VkExternalMemoryTensorCreateInfoARM { VkStructureType sType; @@ -12680,6 +12753,7 @@ typedef struct VkExternalSemaphoreProperties } VkExternalSemaphoreProperties; typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR; + typedef struct VkExternalTensorPropertiesARM { VkStructureType sType; @@ -12726,6 +12800,7 @@ typedef struct VkFormatProperties2 } VkFormatProperties2; typedef VkFormatProperties2 VkFormatProperties2KHR; + typedef struct VkFormatProperties3 { VkStructureType sType; @@ -12736,6 +12811,7 @@ typedef struct VkFormatProperties3 } VkFormatProperties3; typedef VkFormatProperties3 VkFormatProperties3KHR; + typedef struct VkFragmentShadingRateAttachmentInfoKHR { VkStructureType sType; @@ -12767,6 +12843,7 @@ typedef struct VkFrameBoundaryTensorsARM const VkTensorARM *pTensors; } VkFrameBoundaryTensorsARM; + typedef struct VkFramebufferAttachmentsCreateInfo { VkStructureType sType; @@ -12776,6 +12853,7 @@ typedef struct VkFramebufferAttachmentsCreateInfo } VkFramebufferAttachmentsCreateInfo; typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR; + typedef struct VkFramebufferCreateInfo { VkStructureType sType; @@ -12961,6 +13039,7 @@ typedef struct VkHostImageCopyDevicePerformanceQuery } VkHostImageCopyDevicePerformanceQuery; typedef VkHostImageCopyDevicePerformanceQuery VkHostImageCopyDevicePerformanceQueryEXT; + typedef struct VkHostImageLayoutTransitionInfo { VkStructureType sType; @@ -12972,6 +13051,7 @@ typedef struct VkHostImageLayoutTransitionInfo } VkHostImageLayoutTransitionInfo; typedef VkHostImageLayoutTransitionInfo VkHostImageLayoutTransitionInfoEXT; + typedef struct VkImageAlignmentControlCreateInfoMESA { VkStructureType sType; @@ -12987,6 +13067,7 @@ typedef struct VkImageBlit VkOffset3D dstOffsets[2]; } VkImageBlit; + typedef struct VkImageCaptureDescriptorDataInfoEXT { VkStructureType sType; @@ -13020,6 +13101,7 @@ typedef struct VkImageCopy VkExtent3D extent; } VkImageCopy; + typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT { VkStructureType sType; @@ -13053,6 +13135,7 @@ typedef struct VkImageFormatListCreateInfo } VkImageFormatListCreateInfo; typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR; + typedef struct VkImageFormatProperties2 { VkStructureType sType; @@ -13061,6 +13144,7 @@ typedef struct VkImageFormatProperties2 } VkImageFormatProperties2; typedef VkImageFormatProperties2 VkImageFormatProperties2KHR; + typedef struct VkImageMemoryBarrier { VkStructureType sType; @@ -13075,6 +13159,7 @@ typedef struct VkImageMemoryBarrier VkImageSubresourceRange subresourceRange; } VkImageMemoryBarrier; + typedef struct VkImageMemoryRequirementsInfo2 { VkStructureType sType; @@ -13083,6 +13168,7 @@ typedef struct VkImageMemoryRequirementsInfo2 } VkImageMemoryRequirementsInfo2; typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR; + typedef struct VkImagePlaneMemoryRequirementsInfo { VkStructureType sType; @@ -13091,6 +13177,7 @@ typedef struct VkImagePlaneMemoryRequirementsInfo } VkImagePlaneMemoryRequirementsInfo; typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR; + typedef struct VkImageResolve { VkImageSubresourceLayers srcSubresource; @@ -13100,6 +13187,7 @@ typedef struct VkImageResolve VkExtent3D extent; } VkImageResolve; + typedef struct VkImageSparseMemoryRequirementsInfo2 { VkStructureType sType; @@ -13108,6 +13196,7 @@ typedef struct VkImageSparseMemoryRequirementsInfo2 } VkImageSparseMemoryRequirementsInfo2; typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR; + typedef struct VkImageStencilUsageCreateInfo { VkStructureType sType; @@ -13116,6 +13205,9 @@ typedef struct VkImageStencilUsageCreateInfo } VkImageStencilUsageCreateInfo; typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT; + + + typedef struct VkImageSwapchainCreateInfoKHR { VkStructureType sType; @@ -13123,6 +13215,7 @@ typedef struct VkImageSwapchainCreateInfoKHR VkSwapchainKHR WINE_VK_ALIGN(8) swapchain; } VkImageSwapchainCreateInfoKHR; + typedef struct VkImageViewASTCDecodeModeEXT { VkStructureType sType; @@ -13186,6 +13279,7 @@ typedef struct VkImageViewUsageCreateInfo } VkImageViewUsageCreateInfo; typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR; + typedef struct VkImportFenceFdInfoKHR { VkStructureType sType; @@ -13308,6 +13402,7 @@ typedef struct VkInitializePerformanceApiInfoINTEL void *pUserData; } VkInitializePerformanceApiInfoINTEL; + typedef struct VkInstanceCreateInfo { VkStructureType sType; @@ -13394,6 +13489,7 @@ typedef struct VkMemoryAllocateFlagsInfo } VkMemoryAllocateFlagsInfo; typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR; + typedef struct VkMemoryAllocateInfo { VkStructureType sType; @@ -13410,6 +13506,7 @@ typedef struct VkMemoryBarrier VkAccessFlags dstAccessMask; } VkMemoryBarrier; + typedef struct VkMemoryBarrierAccessFlags3KHR { VkStructureType sType; @@ -13427,6 +13524,7 @@ typedef struct VkMemoryDedicatedAllocateInfo } VkMemoryDedicatedAllocateInfo; typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; + typedef struct VkMemoryDedicatedAllocateInfoTensorARM { VkStructureType sType; @@ -13443,6 +13541,7 @@ typedef struct VkMemoryDedicatedRequirements } VkMemoryDedicatedRequirements; typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR; + typedef struct VkMemoryFdPropertiesKHR { VkStructureType sType; @@ -13492,6 +13591,7 @@ typedef struct VkMemoryMapInfo } VkMemoryMapInfo; typedef VkMemoryMapInfo VkMemoryMapInfoKHR; + typedef struct VkMemoryMapPlacedInfoEXT { VkStructureType sType; @@ -13514,6 +13614,7 @@ typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo } VkMemoryOpaqueCaptureAddressAllocateInfo; typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR; + typedef struct VkMemoryPriorityAllocateInfoEXT { VkStructureType sType; @@ -13530,6 +13631,7 @@ typedef struct VkMemoryRequirements2 typedef VkMemoryRequirements2 VkMemoryRequirements2KHR; + typedef struct VkMemoryUnmapInfo { VkStructureType sType; @@ -13539,6 +13641,7 @@ typedef struct VkMemoryUnmapInfo } VkMemoryUnmapInfo; typedef VkMemoryUnmapInfo VkMemoryUnmapInfoKHR; + typedef struct VkMemoryWin32HandlePropertiesKHR { VkStructureType sType; @@ -13651,6 +13754,8 @@ typedef struct VkMutableDescriptorTypeCreateInfoEXT } VkMutableDescriptorTypeCreateInfoEXT; typedef VkMutableDescriptorTypeCreateInfoEXT VkMutableDescriptorTypeCreateInfoVALVE; + + typedef struct VkOpaqueCaptureDataCreateInfoEXT { VkStructureType sType; @@ -13870,6 +13975,7 @@ typedef struct VkPhysicalDevice16BitStorageFeatures } VkPhysicalDevice16BitStorageFeatures; typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR; + typedef struct VkPhysicalDevice4444FormatsFeaturesEXT { VkStructureType sType; @@ -13888,6 +13994,7 @@ typedef struct VkPhysicalDevice8BitStorageFeatures } VkPhysicalDevice8BitStorageFeatures; typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR; + typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT { VkStructureType sType; @@ -13975,6 +14082,7 @@ typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT VkBool32 borderColorSwizzleFromImage; } VkPhysicalDeviceBorderColorSwizzleFeaturesEXT; + typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures { VkStructureType sType; @@ -13995,6 +14103,7 @@ typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT } VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT; + typedef struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV { VkStructureType sType; @@ -14078,6 +14187,7 @@ typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR } VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR; typedef VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR VkPhysicalDeviceComputeShaderDerivativesFeaturesNV; + typedef struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR { VkStructureType sType; @@ -14201,6 +14311,7 @@ typedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR } VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR; typedef VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR VkPhysicalDeviceCopyMemoryIndirectPropertiesNV; + typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { VkStructureType sType; @@ -14293,6 +14404,7 @@ typedef struct VkPhysicalDeviceDepthClampControlFeaturesEXT VkBool32 depthClampControl; } VkPhysicalDeviceDepthClampControlFeaturesEXT; + typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR { VkStructureType sType; @@ -14326,6 +14438,7 @@ typedef struct VkPhysicalDeviceDepthStencilResolveProperties } VkPhysicalDeviceDepthStencilResolveProperties; typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR; + typedef struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT { VkStructureType sType; @@ -14467,6 +14580,7 @@ typedef struct VkPhysicalDeviceDescriptorIndexingFeatures } VkPhysicalDeviceDescriptorIndexingFeatures; typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT; + typedef struct VkPhysicalDeviceDescriptorIndexingProperties { VkStructureType sType; @@ -14497,6 +14611,7 @@ typedef struct VkPhysicalDeviceDescriptorIndexingProperties } VkPhysicalDeviceDescriptorIndexingProperties; typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT; + typedef struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV { VkStructureType sType; @@ -14593,6 +14708,7 @@ typedef struct VkPhysicalDeviceDriverProperties } VkPhysicalDeviceDriverProperties; typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR; + typedef struct VkPhysicalDeviceDynamicRenderingFeatures { VkStructureType sType; @@ -14601,6 +14717,7 @@ typedef struct VkPhysicalDeviceDynamicRenderingFeatures } VkPhysicalDeviceDynamicRenderingFeatures; typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR; + typedef struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures { VkStructureType sType; @@ -14609,6 +14726,7 @@ typedef struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures } VkPhysicalDeviceDynamicRenderingLocalReadFeatures; typedef VkPhysicalDeviceDynamicRenderingLocalReadFeatures VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR; + typedef struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT { VkStructureType sType; @@ -14709,6 +14827,7 @@ typedef struct VkPhysicalDeviceExternalBufferInfo } VkPhysicalDeviceExternalBufferInfo; typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR; + typedef struct VkPhysicalDeviceExternalFenceInfo { VkStructureType sType; @@ -14717,6 +14836,7 @@ typedef struct VkPhysicalDeviceExternalFenceInfo } VkPhysicalDeviceExternalFenceInfo; typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR; + typedef struct VkPhysicalDeviceExternalImageFormatInfo { VkStructureType sType; @@ -14725,6 +14845,7 @@ typedef struct VkPhysicalDeviceExternalImageFormatInfo } VkPhysicalDeviceExternalImageFormatInfo; typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR; + typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT { VkStructureType sType; @@ -14740,6 +14861,7 @@ typedef struct VkPhysicalDeviceExternalSemaphoreInfo } VkPhysicalDeviceExternalSemaphoreInfo; typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR; + typedef struct VkPhysicalDeviceExternalTensorInfoARM { VkStructureType sType; @@ -14765,6 +14887,8 @@ typedef struct VkPhysicalDeviceFeatures2 } VkPhysicalDeviceFeatures2; typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR; + + typedef struct VkPhysicalDeviceFloatControlsProperties { VkStructureType sType; @@ -14789,6 +14913,7 @@ typedef struct VkPhysicalDeviceFloatControlsProperties } VkPhysicalDeviceFloatControlsProperties; typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR; + typedef struct VkPhysicalDeviceFormatPackFeaturesARM { VkStructureType sType; @@ -14844,6 +14969,7 @@ typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT } VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; typedef VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT { VkStructureType sType; @@ -14852,6 +14978,7 @@ typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT } VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; typedef VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT { VkStructureType sType; @@ -14869,6 +14996,7 @@ typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR } VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR; typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; + typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR { VkStructureType sType; @@ -14957,6 +15085,8 @@ typedef struct VkPhysicalDeviceGlobalPriorityQueryFeatures typedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR; typedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT; + + typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT { VkStructureType sType; @@ -14982,6 +15112,7 @@ typedef struct VkPhysicalDeviceGroupProperties } VkPhysicalDeviceGroupProperties; typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR; + typedef struct VkPhysicalDeviceHdrVividFeaturesHUAWEI { VkStructureType sType; @@ -14997,6 +15128,7 @@ typedef struct VkPhysicalDeviceHostImageCopyFeatures } VkPhysicalDeviceHostImageCopyFeatures; typedef VkPhysicalDeviceHostImageCopyFeatures VkPhysicalDeviceHostImageCopyFeaturesEXT; + typedef struct VkPhysicalDeviceHostImageCopyProperties { VkStructureType sType; @@ -15010,6 +15142,7 @@ typedef struct VkPhysicalDeviceHostImageCopyProperties } VkPhysicalDeviceHostImageCopyProperties; typedef VkPhysicalDeviceHostImageCopyProperties VkPhysicalDeviceHostImageCopyPropertiesEXT; + typedef struct VkPhysicalDeviceHostQueryResetFeatures { VkStructureType sType; @@ -15018,6 +15151,7 @@ typedef struct VkPhysicalDeviceHostQueryResetFeatures } VkPhysicalDeviceHostQueryResetFeatures; typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT; + typedef struct VkPhysicalDeviceIDProperties { VkStructureType sType; @@ -15030,6 +15164,7 @@ typedef struct VkPhysicalDeviceIDProperties } VkPhysicalDeviceIDProperties; typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR; + typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT { VkStructureType sType; @@ -15088,6 +15223,7 @@ typedef struct VkPhysicalDeviceImageFormatInfo2 } VkPhysicalDeviceImageFormatInfo2; typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR; + typedef struct VkPhysicalDeviceImageProcessing2FeaturesQCOM { VkStructureType sType; @@ -15129,6 +15265,7 @@ typedef struct VkPhysicalDeviceImageRobustnessFeatures } VkPhysicalDeviceImageRobustnessFeatures; typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT; + typedef struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT { VkStructureType sType; @@ -15158,6 +15295,7 @@ typedef struct VkPhysicalDeviceImagelessFramebufferFeatures } VkPhysicalDeviceImagelessFramebufferFeatures; typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR; + typedef struct VkPhysicalDeviceIndexTypeUint8Features { VkStructureType sType; @@ -15167,6 +15305,8 @@ typedef struct VkPhysicalDeviceIndexTypeUint8Features typedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesKHR; typedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesEXT; + + typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV { VkStructureType sType; @@ -15183,6 +15323,7 @@ typedef struct VkPhysicalDeviceInlineUniformBlockFeatures } VkPhysicalDeviceInlineUniformBlockFeatures; typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT; + typedef struct VkPhysicalDeviceInlineUniformBlockProperties { VkStructureType sType; @@ -15195,6 +15336,7 @@ typedef struct VkPhysicalDeviceInlineUniformBlockProperties } VkPhysicalDeviceInlineUniformBlockProperties; typedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT; + typedef struct VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR { VkStructureType sType; @@ -15266,6 +15408,8 @@ typedef struct VkPhysicalDeviceLineRasterizationFeatures typedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesKHR; typedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesEXT; + + typedef struct VkPhysicalDeviceLineRasterizationProperties { VkStructureType sType; @@ -15275,6 +15419,8 @@ typedef struct VkPhysicalDeviceLineRasterizationProperties typedef VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesKHR; typedef VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesEXT; + + typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV { VkStructureType sType; @@ -15307,6 +15453,7 @@ typedef struct VkPhysicalDeviceMaintenance3Properties } VkPhysicalDeviceMaintenance3Properties; typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR; + typedef struct VkPhysicalDeviceMaintenance4Features { VkStructureType sType; @@ -15315,6 +15462,7 @@ typedef struct VkPhysicalDeviceMaintenance4Features } VkPhysicalDeviceMaintenance4Features; typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR; + typedef struct VkPhysicalDeviceMaintenance4Properties { VkStructureType sType; @@ -15323,6 +15471,7 @@ typedef struct VkPhysicalDeviceMaintenance4Properties } VkPhysicalDeviceMaintenance4Properties; typedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR; + typedef struct VkPhysicalDeviceMaintenance5Features { VkStructureType sType; @@ -15331,6 +15480,7 @@ typedef struct VkPhysicalDeviceMaintenance5Features } VkPhysicalDeviceMaintenance5Features; typedef VkPhysicalDeviceMaintenance5Features VkPhysicalDeviceMaintenance5FeaturesKHR; + typedef struct VkPhysicalDeviceMaintenance5Properties { VkStructureType sType; @@ -15344,6 +15494,7 @@ typedef struct VkPhysicalDeviceMaintenance5Properties } VkPhysicalDeviceMaintenance5Properties; typedef VkPhysicalDeviceMaintenance5Properties VkPhysicalDeviceMaintenance5PropertiesKHR; + typedef struct VkPhysicalDeviceMaintenance6Features { VkStructureType sType; @@ -15352,6 +15503,7 @@ typedef struct VkPhysicalDeviceMaintenance6Features } VkPhysicalDeviceMaintenance6Features; typedef VkPhysicalDeviceMaintenance6Features VkPhysicalDeviceMaintenance6FeaturesKHR; + typedef struct VkPhysicalDeviceMaintenance6Properties { VkStructureType sType; @@ -15362,6 +15514,7 @@ typedef struct VkPhysicalDeviceMaintenance6Properties } VkPhysicalDeviceMaintenance6Properties; typedef VkPhysicalDeviceMaintenance6Properties VkPhysicalDeviceMaintenance6PropertiesKHR; + typedef struct VkPhysicalDeviceMaintenance7FeaturesKHR { VkStructureType sType; @@ -15437,6 +15590,7 @@ typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesEXT } VkPhysicalDeviceMemoryDecompressionFeaturesEXT; typedef VkPhysicalDeviceMemoryDecompressionFeaturesEXT VkPhysicalDeviceMemoryDecompressionFeaturesNV; + typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesEXT { VkStructureType sType; @@ -15446,6 +15600,7 @@ typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesEXT } VkPhysicalDeviceMemoryDecompressionPropertiesEXT; typedef VkPhysicalDeviceMemoryDecompressionPropertiesEXT VkPhysicalDeviceMemoryDecompressionPropertiesNV; + typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT { VkStructureType sType; @@ -15461,6 +15616,7 @@ typedef struct VkPhysicalDeviceMemoryProperties2 } VkPhysicalDeviceMemoryProperties2; typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR; + typedef struct VkPhysicalDeviceMeshShaderFeaturesEXT { VkStructureType sType; @@ -15564,6 +15720,7 @@ typedef struct VkPhysicalDeviceMultiviewFeatures } VkPhysicalDeviceMultiviewFeatures; typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR; + typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM { VkStructureType sType; @@ -15587,6 +15744,7 @@ typedef struct VkPhysicalDeviceMultiviewProperties } VkPhysicalDeviceMultiviewProperties; typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR; + typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT { VkStructureType sType; @@ -15595,6 +15753,7 @@ typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT } VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT; typedef VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + typedef struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT { VkStructureType sType; @@ -15764,6 +15923,7 @@ typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures } VkPhysicalDevicePipelineCreationCacheControlFeatures; typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT; + typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR { VkStructureType sType; @@ -15800,6 +15960,7 @@ typedef struct VkPhysicalDevicePipelineProtectedAccessFeatures } VkPhysicalDevicePipelineProtectedAccessFeatures; typedef VkPhysicalDevicePipelineProtectedAccessFeatures VkPhysicalDevicePipelineProtectedAccessFeaturesEXT; + typedef struct VkPhysicalDevicePipelineRobustnessFeatures { VkStructureType sType; @@ -15808,6 +15969,7 @@ typedef struct VkPhysicalDevicePipelineRobustnessFeatures } VkPhysicalDevicePipelineRobustnessFeatures; typedef VkPhysicalDevicePipelineRobustnessFeatures VkPhysicalDevicePipelineRobustnessFeaturesEXT; + typedef struct VkPhysicalDevicePipelineRobustnessProperties { VkStructureType sType; @@ -15819,6 +15981,7 @@ typedef struct VkPhysicalDevicePipelineRobustnessProperties } VkPhysicalDevicePipelineRobustnessProperties; typedef VkPhysicalDevicePipelineRobustnessProperties VkPhysicalDevicePipelineRobustnessPropertiesEXT; + typedef struct VkPhysicalDevicePointClippingProperties { VkStructureType sType; @@ -15827,6 +15990,7 @@ typedef struct VkPhysicalDevicePointClippingProperties } VkPhysicalDevicePointClippingProperties; typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR; + typedef struct VkPhysicalDevicePresentBarrierFeaturesNV { VkStructureType sType; @@ -15848,6 +16012,7 @@ typedef struct VkPhysicalDevicePresentIdFeaturesKHR VkBool32 presentId; } VkPhysicalDevicePresentIdFeaturesKHR; + typedef struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR { VkStructureType sType; @@ -15895,6 +16060,8 @@ typedef struct VkPhysicalDevicePrivateDataFeatures } VkPhysicalDevicePrivateDataFeatures; typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT; + + typedef struct VkPhysicalDeviceProtectedMemoryFeatures { VkStructureType sType; @@ -15950,6 +16117,7 @@ typedef struct VkPhysicalDevicePushDescriptorProperties } VkPhysicalDevicePushDescriptorProperties; typedef VkPhysicalDevicePushDescriptorProperties VkPhysicalDevicePushDescriptorPropertiesKHR; + typedef struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM { VkStructureType sType; @@ -15965,6 +16133,7 @@ typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT VkBool32 formatRgba10x6WithoutYCbCrSampler; } VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT; + typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT { VkStructureType sType; @@ -16124,6 +16293,7 @@ typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV VkBool32 representativeFragmentTest; } VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV; + typedef struct VkPhysicalDeviceRobustness2FeaturesKHR { VkStructureType sType; @@ -16134,6 +16304,7 @@ typedef struct VkPhysicalDeviceRobustness2FeaturesKHR } VkPhysicalDeviceRobustness2FeaturesKHR; typedef VkPhysicalDeviceRobustness2FeaturesKHR VkPhysicalDeviceRobustness2FeaturesEXT; + typedef struct VkPhysicalDeviceRobustness2PropertiesKHR { VkStructureType sType; @@ -16163,6 +16334,7 @@ typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties } VkPhysicalDeviceSamplerFilterMinmaxProperties; typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT; + typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures { VkStructureType sType; @@ -16171,6 +16343,7 @@ typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures } VkPhysicalDeviceSamplerYcbcrConversionFeatures; typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR; + typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures { VkStructureType sType; @@ -16179,6 +16352,7 @@ typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures } VkPhysicalDeviceScalarBlockLayoutFeatures; typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT; + typedef struct VkPhysicalDeviceSchedulingControlsFeaturesARM { VkStructureType sType; @@ -16201,6 +16375,7 @@ typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures } VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR; + typedef struct VkPhysicalDeviceShader64BitIndexingFeaturesEXT { VkStructureType sType; @@ -16260,6 +16435,7 @@ typedef struct VkPhysicalDeviceShaderAtomicInt64Features } VkPhysicalDeviceShaderAtomicInt64Features; typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR; + typedef struct VkPhysicalDeviceShaderBfloat16FeaturesKHR { VkStructureType sType; @@ -16339,6 +16515,7 @@ typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; + typedef struct VkPhysicalDeviceShaderDrawParametersFeatures { VkStructureType sType; @@ -16362,6 +16539,7 @@ typedef struct VkPhysicalDeviceShaderExpectAssumeFeatures } VkPhysicalDeviceShaderExpectAssumeFeatures; typedef VkPhysicalDeviceShaderExpectAssumeFeatures VkPhysicalDeviceShaderExpectAssumeFeaturesKHR; + typedef struct VkPhysicalDeviceShaderFloat16Int8Features { VkStructureType sType; @@ -16372,6 +16550,7 @@ typedef struct VkPhysicalDeviceShaderFloat16Int8Features typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR; typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR; + typedef struct VkPhysicalDeviceShaderFloat8FeaturesEXT { VkStructureType sType; @@ -16388,6 +16567,7 @@ typedef struct VkPhysicalDeviceShaderFloatControls2Features } VkPhysicalDeviceShaderFloatControls2Features; typedef VkPhysicalDeviceShaderFloatControls2Features VkPhysicalDeviceShaderFloatControls2FeaturesKHR; + typedef struct VkPhysicalDeviceShaderFmaFeaturesKHR { VkStructureType sType; @@ -16420,6 +16600,7 @@ typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures } VkPhysicalDeviceShaderIntegerDotProductFeatures; typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR; + typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties { VkStructureType sType; @@ -16457,6 +16638,7 @@ typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties } VkPhysicalDeviceShaderIntegerDotProductProperties; typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR; + typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL { VkStructureType sType; @@ -16558,6 +16740,7 @@ typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures } VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR; + typedef struct VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT { VkStructureType sType; @@ -16574,6 +16757,7 @@ typedef struct VkPhysicalDeviceShaderSubgroupRotateFeatures } VkPhysicalDeviceShaderSubgroupRotateFeatures; typedef VkPhysicalDeviceShaderSubgroupRotateFeatures VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR; + typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR { VkStructureType sType; @@ -16589,6 +16773,7 @@ typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures } VkPhysicalDeviceShaderTerminateInvocationFeatures; typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR; + typedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT { VkStructureType sType; @@ -16650,6 +16835,7 @@ typedef struct VkPhysicalDeviceSparseImageFormatInfo2 } VkPhysicalDeviceSparseImageFormatInfo2; typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR; + typedef struct VkPhysicalDeviceSubgroupProperties { VkStructureType sType; @@ -16669,6 +16855,7 @@ typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures } VkPhysicalDeviceSubgroupSizeControlFeatures; typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT; + typedef struct VkPhysicalDeviceSubgroupSizeControlProperties { VkStructureType sType; @@ -16680,6 +16867,7 @@ typedef struct VkPhysicalDeviceSubgroupSizeControlProperties } VkPhysicalDeviceSubgroupSizeControlProperties; typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT; + typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT { VkStructureType sType; @@ -16708,6 +16896,7 @@ typedef struct VkPhysicalDeviceSurfaceInfo2KHR VkSurfaceKHR WINE_VK_ALIGN(8) surface; } VkPhysicalDeviceSurfaceInfo2KHR; + typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR { VkStructureType sType; @@ -16724,6 +16913,7 @@ typedef struct VkPhysicalDeviceSynchronization2Features } VkPhysicalDeviceSynchronization2Features; typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR; + typedef struct VkPhysicalDeviceTensorFeaturesARM { VkStructureType sType; @@ -16773,6 +16963,7 @@ typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties } VkPhysicalDeviceTexelBufferAlignmentProperties; typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT; + typedef struct VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT { VkStructureType sType; @@ -16788,6 +16979,7 @@ typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures } VkPhysicalDeviceTextureCompressionASTCHDRFeatures; typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; + typedef struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM { VkStructureType sType; @@ -16848,6 +17040,7 @@ typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures } VkPhysicalDeviceTimelineSemaphoreFeatures; typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR; + typedef struct VkPhysicalDeviceTimelineSemaphoreProperties { VkStructureType sType; @@ -16856,6 +17049,7 @@ typedef struct VkPhysicalDeviceTimelineSemaphoreProperties } VkPhysicalDeviceTimelineSemaphoreProperties; typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR; + typedef struct VkPhysicalDeviceToolProperties { VkStructureType sType; @@ -16868,6 +17062,7 @@ typedef struct VkPhysicalDeviceToolProperties } VkPhysicalDeviceToolProperties; typedef VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesEXT; + typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { VkStructureType sType; @@ -16909,6 +17104,8 @@ typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; + + typedef struct VkPhysicalDeviceVariablePointersFeatures { VkStructureType sType; @@ -16920,6 +17117,7 @@ typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointer typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR; typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures; + typedef struct VkPhysicalDeviceVertexAttributeDivisorFeatures { VkStructureType sType; @@ -16930,6 +17128,8 @@ typedef struct VkPhysicalDeviceVertexAttributeDivisorFeatures typedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR; typedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT; + + typedef struct VkPhysicalDeviceVertexAttributeDivisorProperties { VkStructureType sType; @@ -16946,6 +17146,7 @@ typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT uint32_t maxVertexAttribDivisor; } VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT; + typedef struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT { VkStructureType sType; @@ -17307,6 +17508,7 @@ typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures } VkPhysicalDeviceVulkanMemoryModelFeatures; typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR; + typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR { VkStructureType sType; @@ -17353,6 +17555,7 @@ typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures } VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; + typedef struct VkPipelineBinaryCreateInfoKHR { VkStructureType sType; @@ -17454,6 +17657,7 @@ typedef struct VkPipelineCreateFlags2CreateInfo } VkPipelineCreateFlags2CreateInfo; typedef VkPipelineCreateFlags2CreateInfo VkPipelineCreateFlags2CreateInfoKHR; + typedef struct VkPipelineCreationFeedbackCreateInfo { VkStructureType sType; @@ -17464,6 +17668,8 @@ typedef struct VkPipelineCreationFeedbackCreateInfo } VkPipelineCreationFeedbackCreateInfo; typedef VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoEXT; + + typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT { VkStructureType sType; @@ -17601,6 +17807,8 @@ typedef struct VkPipelineRasterizationLineStateCreateInfo typedef VkPipelineRasterizationLineStateCreateInfo VkPipelineRasterizationLineStateCreateInfoKHR; typedef VkPipelineRasterizationLineStateCreateInfo VkPipelineRasterizationLineStateCreateInfoEXT; + + typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT { VkStructureType sType; @@ -17635,6 +17843,7 @@ typedef struct VkPipelineRenderingCreateInfo } VkPipelineRenderingCreateInfo; typedef VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoKHR; + typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV { VkStructureType sType; @@ -17653,6 +17862,7 @@ typedef struct VkPipelineRobustnessCreateInfo } VkPipelineRobustnessCreateInfo; typedef VkPipelineRobustnessCreateInfo VkPipelineRobustnessCreateInfoEXT; + typedef struct VkPipelineSampleLocationsStateCreateInfoEXT { VkStructureType sType; @@ -17678,6 +17888,7 @@ typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkShaderRequiredSubgroupSizeCreateInfoEXT; + typedef struct VkPipelineTessellationDomainOriginStateCreateInfo { VkStructureType sType; @@ -17686,6 +17897,7 @@ typedef struct VkPipelineTessellationDomainOriginStateCreateInfo } VkPipelineTessellationDomainOriginStateCreateInfo; typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR; + typedef struct VkPipelineVertexInputDivisorStateCreateInfo { VkStructureType sType; @@ -17696,6 +17908,8 @@ typedef struct VkPipelineVertexInputDivisorStateCreateInfo typedef VkPipelineVertexInputDivisorStateCreateInfo VkPipelineVertexInputDivisorStateCreateInfoKHR; typedef VkPipelineVertexInputDivisorStateCreateInfo VkPipelineVertexInputDivisorStateCreateInfoEXT; + + typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV { VkStructureType sType; @@ -17807,6 +18021,7 @@ typedef struct VkPrivateDataSlotCreateInfo } VkPrivateDataSlotCreateInfo; typedef VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoEXT; + typedef struct VkProtectedSubmitInfo { VkStructureType sType; @@ -17833,6 +18048,7 @@ typedef struct VkPushConstantsInfo } VkPushConstantsInfo; typedef VkPushConstantsInfo VkPushConstantsInfoKHR; + typedef struct VkPushDataInfoEXT { VkStructureType sType; @@ -17853,6 +18069,7 @@ typedef struct VkPushDescriptorSetInfo } VkPushDescriptorSetInfo; typedef VkPushDescriptorSetInfo VkPushDescriptorSetInfoKHR; + typedef struct VkPushDescriptorSetWithTemplateInfo { VkStructureType sType; @@ -17864,6 +18081,7 @@ typedef struct VkPushDescriptorSetWithTemplateInfo } VkPushDescriptorSetWithTemplateInfo; typedef VkPushDescriptorSetWithTemplateInfo VkPushDescriptorSetWithTemplateInfoKHR; + typedef struct VkQueryLowLatencySupportNV { VkStructureType sType; @@ -17881,6 +18099,7 @@ typedef struct VkQueryPoolCreateInfo VkQueryPipelineStatisticFlags pipelineStatistics; } VkQueryPoolCreateInfo; + typedef struct VkQueryPoolPerformanceCreateInfoKHR { VkStructureType sType; @@ -17945,6 +18164,8 @@ typedef struct VkQueueFamilyGlobalPriorityProperties typedef VkQueueFamilyGlobalPriorityProperties VkQueueFamilyGlobalPriorityPropertiesKHR; typedef VkQueueFamilyGlobalPriorityProperties VkQueueFamilyGlobalPriorityPropertiesEXT; + + typedef struct VkQueueFamilyOwnershipTransferPropertiesKHR { VkStructureType sType; @@ -17960,6 +18181,7 @@ typedef struct VkQueueFamilyProperties2 } VkQueueFamilyProperties2; typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR; + typedef struct VkQueueFamilyQueryResultStatusPropertiesKHR { VkStructureType sType; @@ -18021,6 +18243,7 @@ typedef struct VkReleaseCapturedPipelineDataInfoKHR VkPipeline WINE_VK_ALIGN(8) pipeline; } VkReleaseCapturedPipelineDataInfoKHR; + typedef struct VkReleaseSwapchainImagesInfoKHR { VkStructureType sType; @@ -18040,6 +18263,7 @@ typedef struct VkRenderPassAttachmentBeginInfo } VkRenderPassAttachmentBeginInfo; typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR; + typedef struct VkRenderPassBeginInfo { VkStructureType sType; @@ -18080,6 +18304,7 @@ typedef struct VkRenderPassCreateInfo2 } VkRenderPassCreateInfo2; typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR; + typedef struct VkRenderPassCreationControlEXT { VkStructureType sType; @@ -18119,6 +18344,7 @@ typedef struct VkRenderPassInputAttachmentAspectCreateInfo } VkRenderPassInputAttachmentAspectCreateInfo; typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR; + typedef struct VkRenderPassMultiviewCreateInfo { VkStructureType sType; @@ -18132,6 +18358,7 @@ typedef struct VkRenderPassMultiviewCreateInfo } VkRenderPassMultiviewCreateInfo; typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR; + typedef struct VkRenderPassPerformanceCountersByRegionBeginInfoARM { VkStructureType sType; @@ -18203,6 +18430,7 @@ typedef struct VkRenderingAreaInfo } VkRenderingAreaInfo; typedef VkRenderingAreaInfo VkRenderingAreaInfoKHR; + typedef struct VkRenderingAttachmentFlagsInfoKHR { VkStructureType sType; @@ -18210,6 +18438,7 @@ typedef struct VkRenderingAttachmentFlagsInfoKHR VkRenderingAttachmentFlagsKHR flags; } VkRenderingAttachmentFlagsInfoKHR; + typedef struct VkRenderingAttachmentLocationInfo { VkStructureType sType; @@ -18219,6 +18448,8 @@ typedef struct VkRenderingAttachmentLocationInfo } VkRenderingAttachmentLocationInfo; typedef VkRenderingAttachmentLocationInfo VkRenderingAttachmentLocationInfoKHR; + + typedef struct VkRenderingEndInfoKHR { VkStructureType sType; @@ -18258,6 +18489,7 @@ typedef struct VkRenderingInfo } VkRenderingInfo; typedef VkRenderingInfo VkRenderingInfoKHR; + typedef struct VkRenderingInputAttachmentIndexInfo { VkStructureType sType; @@ -18269,6 +18501,7 @@ typedef struct VkRenderingInputAttachmentIndexInfo } VkRenderingInputAttachmentIndexInfo; typedef VkRenderingInputAttachmentIndexInfo VkRenderingInputAttachmentIndexInfoKHR; + typedef struct VkResolveImageInfo2 { VkStructureType sType; @@ -18282,6 +18515,7 @@ typedef struct VkResolveImageInfo2 } VkResolveImageInfo2; typedef VkResolveImageInfo2 VkResolveImageInfo2KHR; + typedef struct VkResolveImageModeInfoKHR { VkStructureType sType; @@ -18352,6 +18586,7 @@ typedef struct VkSamplerReductionModeCreateInfo } VkSamplerReductionModeCreateInfo; typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT; + typedef struct VkSamplerYcbcrConversionCreateInfo { VkStructureType sType; @@ -18367,6 +18602,7 @@ typedef struct VkSamplerYcbcrConversionCreateInfo } VkSamplerYcbcrConversionCreateInfo; typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR; + typedef struct VkSamplerYcbcrConversionImageFormatProperties { VkStructureType sType; @@ -18375,6 +18611,7 @@ typedef struct VkSamplerYcbcrConversionImageFormatProperties } VkSamplerYcbcrConversionImageFormatProperties; typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR; + typedef struct VkSamplerYcbcrConversionInfo { VkStructureType sType; @@ -18383,6 +18620,7 @@ typedef struct VkSamplerYcbcrConversionInfo } VkSamplerYcbcrConversionInfo; typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR; + typedef struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM { VkStructureType sType; @@ -18423,6 +18661,8 @@ typedef struct VkSemaphoreSignalInfo } VkSemaphoreSignalInfo; typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR; + + typedef struct VkSemaphoreTypeCreateInfo { VkStructureType sType; @@ -18432,6 +18672,7 @@ typedef struct VkSemaphoreTypeCreateInfo } VkSemaphoreTypeCreateInfo; typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR; + typedef struct VkSemaphoreWaitInfo { VkStructureType sType; @@ -18443,6 +18684,7 @@ typedef struct VkSemaphoreWaitInfo } VkSemaphoreWaitInfo; typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR; + typedef struct VkSetDescriptorBufferOffsetsInfoEXT { VkStructureType sType; @@ -18518,6 +18760,7 @@ typedef struct VkShaderModuleValidationCacheCreateInfoEXT VkValidationCacheEXT WINE_VK_ALIGN(8) validationCache; } VkShaderModuleValidationCacheCreateInfoEXT; + typedef struct VkShaderStatisticsInfoAMD { VkShaderStageFlags shaderStageMask; @@ -18537,6 +18780,7 @@ typedef struct VkSparseImageFormatProperties2 } VkSparseImageFormatProperties2; typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR; + typedef struct VkSparseImageMemoryRequirements2 { VkStructureType sType; @@ -18545,6 +18789,7 @@ typedef struct VkSparseImageMemoryRequirements2 } VkSparseImageMemoryRequirements2; typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR; + typedef struct VkSubmitInfo { VkStructureType sType; @@ -18572,6 +18817,7 @@ typedef struct VkSubmitInfo2 } VkSubmitInfo2; typedef VkSubmitInfo2 VkSubmitInfo2KHR; + typedef struct VkSubpassBeginInfo { VkStructureType sType; @@ -18580,6 +18826,9 @@ typedef struct VkSubpassBeginInfo } VkSubpassBeginInfo; typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR; + + + typedef struct VkSubpassDescriptionDepthStencilResolve { VkStructureType sType; @@ -18590,6 +18839,7 @@ typedef struct VkSubpassDescriptionDepthStencilResolve } VkSubpassDescriptionDepthStencilResolve; typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR; + typedef struct VkSubpassEndInfo { VkStructureType sType; @@ -18597,6 +18847,8 @@ typedef struct VkSubpassEndInfo } VkSubpassEndInfo; typedef VkSubpassEndInfo VkSubpassEndInfoKHR; + + typedef struct VkSubpassResolvePerformanceQueryEXT { VkStructureType sType; @@ -18620,6 +18872,7 @@ typedef struct VkSubresourceHostMemcpySize } VkSubresourceHostMemcpySize; typedef VkSubresourceHostMemcpySize VkSubresourceHostMemcpySizeEXT; + typedef struct VkSubresourceLayout2 { VkStructureType sType; @@ -18629,6 +18882,8 @@ typedef struct VkSubresourceLayout2 typedef VkSubresourceLayout2 VkSubresourceLayout2KHR; typedef VkSubresourceLayout2 VkSubresourceLayout2EXT; + + typedef struct VkSubsampledImageFormatPropertiesEXT { VkStructureType sType; @@ -18671,6 +18926,7 @@ typedef struct VkSurfaceFormat2KHR VkSurfaceFormatKHR surfaceFormat; } VkSurfaceFormat2KHR; + typedef struct VkSurfacePresentModeCompatibilityKHR { VkStructureType sType; @@ -18680,6 +18936,7 @@ typedef struct VkSurfacePresentModeCompatibilityKHR } VkSurfacePresentModeCompatibilityKHR; typedef VkSurfacePresentModeCompatibilityKHR VkSurfacePresentModeCompatibilityEXT; + typedef struct VkSurfacePresentModeKHR { VkStructureType sType; @@ -18688,6 +18945,7 @@ typedef struct VkSurfacePresentModeKHR } VkSurfacePresentModeKHR; typedef VkSurfacePresentModeKHR VkSurfacePresentModeEXT; + typedef struct VkSurfacePresentScalingCapabilitiesKHR { VkStructureType sType; @@ -18736,6 +18994,7 @@ typedef struct VkSwapchainPresentBarrierCreateInfoNV VkBool32 presentBarrierEnable; } VkSwapchainPresentBarrierCreateInfoNV; + typedef struct VkSwapchainPresentFenceInfoKHR { VkStructureType sType; @@ -18745,6 +19004,7 @@ typedef struct VkSwapchainPresentFenceInfoKHR } VkSwapchainPresentFenceInfoKHR; typedef VkSwapchainPresentFenceInfoKHR VkSwapchainPresentFenceInfoEXT; + typedef struct VkSwapchainPresentModeInfoKHR { VkStructureType sType; @@ -18754,6 +19014,7 @@ typedef struct VkSwapchainPresentModeInfoKHR } VkSwapchainPresentModeInfoKHR; typedef VkSwapchainPresentModeInfoKHR VkSwapchainPresentModeInfoEXT; + typedef struct VkSwapchainPresentModesCreateInfoKHR { VkStructureType sType; @@ -18763,6 +19024,7 @@ typedef struct VkSwapchainPresentModesCreateInfoKHR } VkSwapchainPresentModesCreateInfoKHR; typedef VkSwapchainPresentModesCreateInfoKHR VkSwapchainPresentModesCreateInfoEXT; + typedef struct VkSwapchainPresentScalingCreateInfoKHR { VkStructureType sType; @@ -18859,6 +19121,7 @@ typedef struct VkTimelineSemaphoreSubmitInfo } VkTimelineSemaphoreSubmitInfo; typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR; + typedef struct VkTraceRaysIndirectCommand2KHR { VkDeviceAddress WINE_VK_ALIGN(8) raygenShaderRecordAddress; @@ -18884,6 +19147,7 @@ typedef struct VkTraceRaysIndirectCommandKHR uint32_t depth; } VkTraceRaysIndirectCommandKHR; + typedef struct VkValidationCacheCreateInfoEXT { VkStructureType sType; @@ -18931,6 +19195,8 @@ typedef struct VkVertexInputBindingDescription2EXT uint32_t divisor; } VkVertexInputBindingDescription2EXT; + + typedef struct VkVideoBeginCodingInfoKHR { VkStructureType sType; @@ -19690,6 +19956,7 @@ typedef struct VkWriteDescriptorSetInlineUniformBlock } VkWriteDescriptorSetInlineUniformBlock; typedef VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockEXT; + typedef struct VkWriteDescriptorSetPartitionedAccelerationStructureNV { VkStructureType sType; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9972
From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/winevulkan/make_vulkan | 77 +++++++++++++-------------------- dlls/winevulkan/vulkan_thunks.c | 4 +- include/wine/vulkan.h | 10 ++--- 3 files changed, 36 insertions(+), 55 deletions(-) diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index c046bd00feb..cb0d22b3171 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -420,6 +420,7 @@ def parse_array_lens(element): class Type(object): types = {} + alias = {} def __init__(self, name, requires=[]): self.order = 0 @@ -429,6 +430,7 @@ class Type(object): self.name = name Type.types[name] = self + Type.alias[name] = [] def require(self): if self._required: @@ -436,7 +438,7 @@ class Type(object): self._required = True is_other = lambda t: t and t != self - for type in filter(is_other, map(Type.types.get, self.requires)): + for type in filter(is_other, map(Type.get, self.requires)): type.require() def is_required(self): @@ -448,26 +450,35 @@ class Type(object): self.order = order + 1 is_other = lambda t: t and t != self - for type in filter(is_other, map(Type.types.get, self.requires)): + for type in filter(is_other, map(Type.get, self.requires)): type.set_order(self.order) + def definition(self): + aliases = ", ".join(Type.alias[self.name]) + return f"typedef {self.name} {aliases};\n" if len(aliases) else "" + + @staticmethod + def get(name): + if name in Type.types: + return Type.types[name] + if name in Type.alias: + return Type.get(Type.alias[name]) + if name not in ("vk_platform"): + print(f'Type {name} not found') + return None + class VkBaseType(Type): - def __init__(self, name, _type, alias=None, requires=None): + def __init__(self, name, _type, requires=None): Type.__init__(self, name, requires=[requires] if requires else []) self.type = _type - self.alias = alias def definition(self): - # Definition is similar for alias or non-alias as type - # is already set to alias. - if not self.type is None: - return "typedef {0} {1};\n".format(self.type, self.name) - else: - return "struct {0};\n".format(self.name) + type = f"typedef {self.type}" if self.type else "struct" + return f"{type} {self.name};\n" + Type.definition(self) def is_alias(self): - return bool(self.alias) + return False class Extension(object): @@ -523,7 +534,6 @@ class Enum(Type): self.values = values self.bitwidth = int(bitwidth) assert self.bitwidth in (32, 64) - self.typedefs = [] @staticmethod def from_xml(node): @@ -579,11 +589,7 @@ class Enum(Type): for value in values: text += f"static const {self.name} {value.definition(size=8)};\n" - for name in self.typedefs: - text += f"typedef {self.name} {name};\n" - - text += "\n" - return text + return text + Type.definition(self) + "\n" class EnumValue(object): @@ -964,18 +970,12 @@ class FunctionPointer(Type): class Handle(Type): - def __init__(self, name, _type, parent, alias=None): + def __init__(self, name, _type, parent): Type.__init__(self, name) self.type = _type self.parent = parent - self.alias = alias self.object_type = None - @staticmethod - def from_alias(handle, alias): - name = handle.attrib.get("name") - return Handle(name, alias.type, alias.parent, alias=alias) - @staticmethod def from_xml(handle): name = handle.find("name").text @@ -1006,16 +1006,10 @@ class Handle(Type): LOGGER.error("Unhandled dispatchable parent: {0}".format(self.parent)) def definition(self): - """ Generates handle definition e.g. VK_DEFINE_HANDLE(vkInstance) """ - - # Legacy types are typedef'ed to the new type if they are aliases. - if self.is_alias(): - return "typedef {0} {1};\n".format(self.alias.name, self.name) - - return "{0}({1})\n".format(self.type, self.name) + return f"{self.type}({self.name})\n" + Type.definition(self) def is_alias(self): - return self.alias is not None + return False def is_dispatchable(self): """ Some handles like VkInstance, VkDevice are dispatchable objects, @@ -3111,7 +3105,7 @@ class Generator(object): type_info = {"category": category, "name": name} if category is None and name not in Type.types: - Type("extern", name) + Type(name) # We parse aliases in a second pass when we know more. alias = t.attrib.get("alias") @@ -3195,20 +3189,9 @@ class Generator(object): type_info = {"category": category, "name": name} alias = t.get("alias") - - if category == "bitmask": - bitmask = VkBaseType(name, alias, alias=self.types[alias]["data"]) - bitmasks.append(bitmask) - type_info["data"] = bitmask - - if category == "enum": - type_info["data"] = Context.enums[alias] - Context.enums[alias].typedefs += [name] - - if category == "handle": - handle = Handle.from_alias(t, self.types[alias]["data"]) - handles.append(handle) - type_info["data"] = handle + Type.alias[alias].append(name) + Type.alias[name] = alias + type_info["data"] = Type.get(alias) if category == "struct": struct = Record.from_alias(t, self.types[alias]["data"]) diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index d6370c8c8af..deb8f818517 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -2790,7 +2790,7 @@ typedef struct VkDataGraphPipelineCreateInfoARM32 { VkStructureType sType; PTR32 pNext; - VkPipelineCreateFlags2KHR flags; + VkPipelineCreateFlags2KHR DECLSPEC_ALIGN(8) flags; VkPipelineLayout DECLSPEC_ALIGN(8) layout; uint32_t resourceInfoCount; PTR32 pResourceInfos; @@ -2970,7 +2970,7 @@ typedef struct VkDecompressMemoryRegionNV32 VkDeviceAddress DECLSPEC_ALIGN(8) dstAddress; VkDeviceSize DECLSPEC_ALIGN(8) compressedSize; VkDeviceSize DECLSPEC_ALIGN(8) decompressedSize; - VkMemoryDecompressionMethodFlagsNV decompressionMethod; + VkMemoryDecompressionMethodFlagsNV DECLSPEC_ALIGN(8) decompressionMethod; } VkDecompressMemoryRegionNV32; typedef struct VkDedicatedAllocationBufferCreateInfoNV32 diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 0dca0cca2e5..a2c7a4fe47f 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -4115,8 +4115,7 @@ typedef enum VkLineRasterizationMode VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = VK_LINE_RASTERIZATION_MODE_BRESENHAM, VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, } VkLineRasterizationMode; -typedef VkLineRasterizationMode VkLineRasterizationModeKHR; -typedef VkLineRasterizationMode VkLineRasterizationModeEXT; +typedef VkLineRasterizationMode VkLineRasterizationModeKHR, VkLineRasterizationModeEXT; typedef enum VkLogicOp { @@ -5023,8 +5022,7 @@ typedef enum VkQueueGlobalPriority VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = VK_QUEUE_GLOBAL_PRIORITY_HIGH, VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = VK_QUEUE_GLOBAL_PRIORITY_REALTIME, } VkQueueGlobalPriority; -typedef VkQueueGlobalPriority VkQueueGlobalPriorityKHR; -typedef VkQueueGlobalPriority VkQueueGlobalPriorityEXT; +typedef VkQueueGlobalPriority VkQueueGlobalPriorityKHR, VkQueueGlobalPriorityEXT; typedef enum VkRasterizationOrderAMD { @@ -11941,7 +11939,7 @@ typedef struct VkDataGraphPipelineCreateInfoARM { VkStructureType sType; const void *pNext; - VkPipelineCreateFlags2KHR flags; + VkPipelineCreateFlags2KHR WINE_VK_ALIGN(8) flags; VkPipelineLayout WINE_VK_ALIGN(8) layout; uint32_t resourceInfoCount; const VkDataGraphPipelineResourceInfoARM *pResourceInfos; @@ -12121,7 +12119,7 @@ typedef struct VkDecompressMemoryRegionNV VkDeviceAddress WINE_VK_ALIGN(8) dstAddress; VkDeviceSize WINE_VK_ALIGN(8) compressedSize; VkDeviceSize WINE_VK_ALIGN(8) decompressedSize; - VkMemoryDecompressionMethodFlagsNV decompressionMethod; + VkMemoryDecompressionMethodFlagsNV WINE_VK_ALIGN(8) decompressionMethod; } VkDecompressMemoryRegionNV; typedef struct VkDedicatedAllocationBufferCreateInfoNV -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9972
From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/winevulkan/make_vulkan | 196 +++++++++++------------------------- include/wine/vulkan.h | 1 - 2 files changed, 58 insertions(+), 139 deletions(-) diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index cb0d22b3171..9eed7ff3f5e 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -463,15 +463,13 @@ class Type(object): return Type.types[name] if name in Type.alias: return Type.get(Type.alias[name]) - if name not in ("vk_platform"): - print(f'Type {name} not found') return None -class VkBaseType(Type): - def __init__(self, name, _type, requires=None): +class Flags(Type): + def __init__(self, name, type, requires=None): Type.__init__(self, name, requires=[requires] if requires else []) - self.type = _type + self.type = type def definition(self): type = f"typedef {self.type}" if self.type else "struct" @@ -649,13 +647,13 @@ class Function(Type): return Function(alias.type, func_name, alias.params, alias=alias) @staticmethod - def from_xml(command, types): + def from_xml(command): proto = command.find("proto") func_name = proto.find("name").text func_type = proto.find("type").text params = filter(is_api_supported, command.findall("param")) - params = [Parameter.from_xml(param, types) for param in params] + params = [Parameter.from_xml(param) for param in params] return Function(func_type, func_name, params) def is_alias(self): @@ -1064,11 +1062,10 @@ class Handle(Type): class VkVariable(object): - def __init__(self, const=False, type_info=None, type=None, name=None, pointer=None, array_lens=[], + def __init__(self, const=False, type=None, name=None, pointer=None, array_lens=[], dyn_array_len=None, object_type=None, optional=False, returnedonly=False, selection=None, selector=None): self.const = const - self.type_info = type_info self.type_name = type self.name = name self.object_type = object_type @@ -1076,6 +1073,7 @@ class VkVariable(object): self.returnedonly = returnedonly self.selection = selection self.selector = selector + self._type = None self.pointer = pointer self.array_lens = array_lens @@ -1087,21 +1085,23 @@ class VkVariable(object): self.dyn_array_len = dyn_array_len[0:i] self.pointer_array = True - if type_info: - self.set_type_info(type_info) - def __eq__(self, other): """ Compare member based on name against a string. """ return self.name == other - def set_type_info(self, type_info): - """ Helper function to set type information from the type registry. - This is needed, because not all type data is available at time of - parsing. - """ - self.type_info = type_info - self.handle = type_info["data"] if type_info["category"] == "handle" else None - self.struct = type_info["data"] if type_info["category"] == "struct" or type_info["category"] == "union" else None + @property + def type(self): + if not self._type: + self._type = Type.get(self.type_name) + return self._type + + @property + def handle(self): + return self.type if type(self.type) is Handle else None + + @property + def struct(self): + return self.type if type(self.type) is Record else None def is_const(self): return "const" in self.const @@ -1122,19 +1122,19 @@ class VkVariable(object): return self.is_pointer_pointer() def is_handle(self): - return self.handle is not None + return type(self.type) is Handle def is_struct(self): - return self.type_info["category"] == "struct" + return type(self.type) is Record and not self.struct.union def is_union(self): - return self.type_info["category"] == "union" + return type(self.type) is Record and self.struct.union - def is_bitmask(self): - return self.type_info["category"] == "bitmask" + def is_flags(self): + return type(self.type) is Flags def is_enum(self): - return self.type_info["category"] == "enum" + return type(self.type) is Enum def is_dynamic_array(self): """ Returns if the member is an array element. @@ -1168,12 +1168,12 @@ class VkVariable(object): return False elif self.type_name in ["uint64_t", "VkDeviceAddress", "VkDeviceSize"]: return True - elif self.is_bitmask(): - return self.type_info["data"].type == "VkFlags64" + elif self.is_flags(): + return self.type.type == "VkFlags64" elif self.is_enum(): - return self.type_info["data"].bitwidth == 64 + return self.type.bitwidth == 64 elif self.is_struct() or self.is_union(): - return self.type_info["data"].needs_alignment() + return self.type.needs_alignment() elif self.is_handle(): # Dispatchable handles are pointers to objects, while # non-dispatchable are uint64_t and hence need alignment. @@ -1356,15 +1356,14 @@ class VkMember(VkVariable): LOGGER.warn("TODO: implement copying of static array for {0}.{1}".format(self.type_name, self.name)) elif self.is_handle() and self.is_wrapped(): - handle = self.type_info["data"] if direction == Direction.OUTPUT: LOGGER.error("OUTPUT parameter {0}.{1} cannot be unwrapped".format(self.type_name, self.name)) elif self.optional: return "{0}{1} = {2} ? {3} : 0;\n".format(output, self.name, self.value(input, conv), - handle.unwrap_handle(self.value(input, conv), unwrap)) + self.handle.unwrap_handle(self.value(input, conv), unwrap)) else: return "{0}{1} = {2};\n".format(output, self.name, - handle.unwrap_handle(self.value(input, conv), unwrap)) + self.handle.unwrap_handle(self.value(input, conv), unwrap)) elif self.is_generic_handle(): if direction == Direction.OUTPUT: @@ -1488,16 +1487,16 @@ class VkMember(VkVariable): class Parameter(VkVariable): """ Helper class which describes a parameter to a function call. """ - def __init__(self, type_info, const=None, pointer=None, name=None, array_lens=None, + def __init__(self, type, const=None, pointer=None, name=None, array_lens=None, dyn_array_len=None, object_type=None, optional=False): - VkVariable.__init__(self, const=const, type_info=type_info, type=type_info["name"], name=name, + VkVariable.__init__(self, const=const, type=type, name=name, pointer=pointer, array_lens=array_lens, dyn_array_len=dyn_array_len, object_type=object_type, optional=optional) self._set_format_string() @staticmethod - def from_xml(param, types): + def from_xml(param): # Parameter parsing is slightly tricky. All the data is contained within # a param tag, but some data is within subtags while others are text # before or after the type tag. @@ -1524,12 +1523,7 @@ class Parameter(VkVariable): # Some uint64_t are actually handles with a separate type param object_type = param.get("objecttype", None) - # Since we have parsed all types before hand, this should not happen. - type_info = types.get(type_elem.text, None) - if type_info is None: - LOGGER.error("type info not found for: {0}".format(type_elem.text)) - - return Parameter(type_info, const=const, pointer=pointer, name=name, array_lens=array_lens, + return Parameter(type_elem.text, const=const, pointer=pointer, name=name, array_lens=array_lens, dyn_array_len=dyn_array_len, object_type=object_type, optional=optional) def _set_format_string(self): @@ -1541,14 +1535,14 @@ class Parameter(VkVariable): if self.is_static_array() or self.is_pointer(): self.format_str = "%p" else: - if self.type_info["category"] in ["bitmask"]: + if self.is_flags(): # Since 1.2.170 bitmasks can be 32 or 64-bit, check the basetype. - if self.type_info["data"].type == "VkFlags64": + if self.type.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"]: + elif self.is_enum(): self.format_str = "%#x" elif self.is_handle(): # We use uint64_t for non-dispatchable handles as opposed to pointers @@ -1578,7 +1572,7 @@ class Parameter(VkVariable): # Don't care about specific types for non-Windows platforms. self.format_str = "" else: - LOGGER.warn("Unhandled type: {0}".format(self.type_info)) + LOGGER.warn("Unhandled type: {0}".format(self.type_name)) def get_dyn_array_len(self, params, prefix, conv): if isinstance(self.dyn_array_len, int): @@ -1729,13 +1723,13 @@ class Parameter(VkVariable): return "str" if self.is_dispatchable() or self.is_pointer() or self.is_static_array(): return "ptr" - if self.type_info["category"] in ["bitmask"]: + if self.is_flags(): # Since 1.2.170 bitmasks can be 32 or 64-bit, check the basetype. - if self.type_info["data"].type == "VkFlags64": + if self.type.type == "VkFlags64": return "int64" else: return "long" - if self.type_info["category"] in ["enum"]: + if self.is_enum(): return "long" if self.is_handle() and not self.is_dispatchable(): return "int64" @@ -1797,7 +1791,6 @@ class Record(Type): self.structextends = structextends self.alias = alias self.union = union - self.type_info = None # To be set later. self._struct_extensions = None self.aliased_by = [] @@ -2042,15 +2035,6 @@ class Record(Type): if (m.is_struct() or m.is_union()) and m.struct.needs_win32_type(): return True - def set_type_info(self, types): - """ Helper function to set type information from the type registry. - This is needed, because not all type data is available at time of - parsing. - """ - for m in self.members: - type_info = types[m.type_name] - m.set_type_info(type_info) - class StructConversionFunction(object): def __init__(self, struct, direction, conv, unwrap, const): @@ -2405,7 +2389,6 @@ class ArrayConversionFunction(object): class Generator(object): def __init__(self, vk_xml, video_xml): # We aggregate all types in here for cross-referencing. - self.types = {} self.surface_extensions = [] # Overall strategy for parsing the registry is to first @@ -2729,10 +2712,6 @@ class Generator(object): f.write(handle.definition()) f.write("\n") - for base_type in Context.base_types: - f.write(base_type.definition()) - f.write("\n") - # Reorder bitmasks to handle aliases correctly. remaining_bitmasks = list(Context.bitmasks) while len(remaining_bitmasks) > 0: @@ -2862,7 +2841,7 @@ class Generator(object): alias_commands.append(command) continue - func = Function.from_xml(command, self.types) + func = Function.from_xml(command) funcs[func.name] = func for command in alias_commands: @@ -2900,19 +2879,17 @@ class Generator(object): def _process_require_enum(self, enum_elem, ext=None, only_aliased=False): if "extends" in enum_elem.keys(): - enum = self.types[enum_elem.attrib["extends"]]["data"] + enum = Type.get(enum_elem.attrib["extends"]) # Need to define EnumValues which were aliased to by another value. This is necessary # from VK spec version 1.2.135 where the provisional VK_KHR_ray_tracing extension was # added which altered VK_NV_ray_tracing's EnumValues to alias to the provisional # extension. aliased = False - for _, t in self.types.items(): - if t["category"] != "enum": + for t in Type.types.values(): + if type(t) is not Enum: continue - if not t["data"]: - continue - for value in t["data"].values: + for value in t.values: if value.alias == enum_elem.attrib["name"]: aliased = True @@ -3032,10 +3009,9 @@ class Generator(object): # specific vk_video/* headers (which we don't use). # We don't even parse <type category="include"> tags. # Therefore just skip any types that aren't found. - if t.attrib["name"] in self.types: - type_info = self.types[t.attrib["name"]] - type_info["data"].extensions.add(extension) - type_info["data"].require() + if type := Type.get(t.get("name")): + type.extensions.add(extension) + type.require() # Pull in any commands we need. We infer types to pull in from the command # as well. @@ -3072,20 +3048,10 @@ class Generator(object): for tag in require: if tag.tag == "comment": continue - elif tag.tag == "command": - name = tag.attrib["name"] - Context.funcs[name].require() - elif tag.tag == "enum": + if type := Type.get(tag.get("name")): + type.require() + if tag.tag == "enum": self._process_require_enum(tag) - elif tag.tag == "type": - name = tag.attrib["name"] - - # Skip pull in for vk_platform.h for now. - if name == "vk_platform": - continue - - type_info = self.types[name] - type_info["data"].require() def _parse_types(self, root): """ Parse types section, which contains all data types e.g. structs, typedefs etcetera. """ @@ -3102,10 +3068,6 @@ class Generator(object): for t in filter(is_api_supported, types): category, requires = t.get("category"), t.get("requires") name = t.findtext("name") or t.findtext("proto/name") or t.get("name") - type_info = {"category": category, "name": name} - - if category is None and name not in Type.types: - Type(name) # We parse aliases in a second pass when we know more. alias = t.attrib.get("alias") @@ -3114,58 +3076,27 @@ class Generator(object): alias_types.append(t) continue - if category in ["include"]: - continue - - # video.xml redefines stdint types which we already parsed in vk.xml. - # For some reason, it doesn't define them the same way. - if requires == "stdint": - continue - if category == "basetype": define = Define.from_xml(t) defines.append(define) - type_info["data"] = define - - # Basic C types don't need us to define them, but we do need data for them - elif requires == "vk_platform": - basic_c = VkBaseType(name, name, requires=requires) - type_info["data"] = basic_c elif category == "bitmask": - _type = t.find("type").text - # Most bitmasks have a requires attribute used to pull in # required '*FlagBits" enum. - bitmask = VkBaseType(name, _type, requires=requires) + bitmask = Flags(name, t.findtext("type"), requires=requires) bitmasks.append(bitmask) - type_info["data"] = bitmask elif category == "define": define = Define.from_xml(t) defines.append(define) - type_info["data"] = define - - elif category == "enum": - # The type section only contains enum names, not the actual definition. - # Since we already parsed the enum before, just link it in. - try: - type_info["data"] = Context.enums[name] - except KeyError: - # Not all enums seem to be defined yet, typically that's for - # ones ending in 'FlagBits' where future extensions may add - # definitions. - type_info["data"] = None elif category == "funcpointer": funcpointer = FunctionPointer.from_xml(t) funcpointers.append(funcpointer) - type_info["data"] = funcpointer elif category == "handle": handle = Handle.from_xml(t) handles.append(handle) - type_info["data"] = handle elif category in ["struct", "union"]: # We store unions among structs as some structs depend @@ -3174,31 +3105,23 @@ class Generator(object): # a similar kind of hack. struct = Record.from_xml(t) structs.append(struct) - type_info["data"] = struct - # Store all type data in a shared dictionary, so we can easily - # look up information for a given type. There are no duplicate - # names. - self.types[name] = type_info + elif name not in Type.types: + Type(name) # Second pass for alias types, so we can retrieve all data from # the aliased object. for t in alias_types: category, requires = t.get("category"), t.get("requires") name = t.findtext("name") or t.findtext("proto/name") or t.get("name") - type_info = {"category": category, "name": name} alias = t.get("alias") Type.alias[alias].append(name) Type.alias[name] = alias - type_info["data"] = Type.get(alias) if category == "struct": - struct = Record.from_alias(t, self.types[alias]["data"]) + struct = Record.from_alias(t, Type.get(alias)) structs.append(struct) - type_info["data"] = struct - - self.types[name] = type_info # We need detailed type information during code generation # on structs for alignment reasons. Unfortunately structs @@ -3206,9 +3129,6 @@ class Generator(object): # that any types needed have been parsed already, so set # the data now. structs = {struct.name: struct for struct in structs} - for struct in structs.values(): - struct.set_type_info(self.types) - for struct in structs.values(): struct.set_order() diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index a2c7a4fe47f..c50c65a1424 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -1108,7 +1108,6 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) - typedef VkFlags VkAccelerationStructureCreateFlagsKHR; typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV; typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9972
participants (2)
-
Rémi Bernon -
Rémi Bernon (@rbernon)