forked from mirror/vulkan-zig
dont write default structure type if there is none
This commit is contained in:
@@ -181,6 +181,7 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
registry: *const reg.Registry,
|
registry: *const reg.Registry,
|
||||||
id_renderer: *IdRenderer,
|
id_renderer: *IdRenderer,
|
||||||
declarations_by_name: std.StringHashMap(*const reg.DeclarationType),
|
declarations_by_name: std.StringHashMap(*const reg.DeclarationType),
|
||||||
|
structure_types: std.StringHashMap(void),
|
||||||
|
|
||||||
fn init(writer: WriterType, allocator: Allocator, registry: *const reg.Registry, id_renderer: *IdRenderer) !Self {
|
fn init(writer: WriterType, allocator: Allocator, registry: *const reg.Registry, id_renderer: *IdRenderer) !Self {
|
||||||
var declarations_by_name = std.StringHashMap(*const reg.DeclarationType).init(allocator);
|
var declarations_by_name = std.StringHashMap(*const reg.DeclarationType).init(allocator);
|
||||||
@@ -195,12 +196,25 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
result.value_ptr.* = &decl.decl_type;
|
result.value_ptr.* = &decl.decl_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const vk_structure_type_decl = declarations_by_name.get("VkStructureType") orelse return error.InvalidRegistry;
|
||||||
|
const vk_structure_type = switch (vk_structure_type_decl.*) {
|
||||||
|
.enumeration => |e| e,
|
||||||
|
else => return error.InvalidRegistry,
|
||||||
|
};
|
||||||
|
var structure_types = std.StringHashMap(void).init(allocator);
|
||||||
|
errdefer structure_types.deinit();
|
||||||
|
|
||||||
|
for (vk_structure_type.fields) |field| {
|
||||||
|
try structure_types.put(field.name, {});
|
||||||
|
}
|
||||||
|
|
||||||
return Self{
|
return Self{
|
||||||
.writer = writer,
|
.writer = writer,
|
||||||
.allocator = allocator,
|
.allocator = allocator,
|
||||||
.registry = registry,
|
.registry = registry,
|
||||||
.id_renderer = id_renderer,
|
.id_renderer = id_renderer,
|
||||||
.declarations_by_name = declarations_by_name,
|
.declarations_by_name = declarations_by_name,
|
||||||
|
.structure_types = structure_types,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -748,6 +762,10 @@ fn Renderer(comptime WriterType: type) type {
|
|||||||
return error.InvalidRegistry;
|
return error.InvalidRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Some structures dont have a VK_STRUCTURE_TYPE for some reason apparently...
|
||||||
|
// See https://github.com/KhronosGroup/Vulkan-Docs/issues/1225
|
||||||
|
_ = self.structure_types.get(stype) orelse return;
|
||||||
|
|
||||||
try self.writer.writeAll(" = .");
|
try self.writer.writeAll(" = .");
|
||||||
try self.writeIdentifierWithCase(.snake, stype["VK_STRUCTURE_TYPE_".len..]);
|
try self.writeIdentifierWithCase(.snake, stype["VK_STRUCTURE_TYPE_".len..]);
|
||||||
} else if (field.field_type == .name and !container.is_union and mem.eql(u8, "VkBool32", field.field_type.name) and isFeatureStruct(name, container.extends)) {
|
} else if (field.field_type == .name and !container.is_union and mem.eql(u8, "VkBool32", field.field_type.name) and isFeatureStruct(name, container.extends)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user