mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-09 21:47:47 +00:00
Use a descriptor for PipelineLayout (#206)
Adds support for structures inside descriptors.
This commit is contained in:
@@ -155,8 +155,18 @@ def link_structure(struct, types):
|
||||
def make_member(m):
|
||||
return StructureMember(Name(m['name']), types[m['type']], m.get('annotation', 'value'))
|
||||
|
||||
# TODO(cwallez@chromium.org): Handle pointer members and their length
|
||||
struct.members = [make_member(m) for m in struct.record['members']]
|
||||
members = []
|
||||
members_by_name = {}
|
||||
for m in struct.record['members']:
|
||||
member = make_member(m)
|
||||
members.append(member)
|
||||
members_by_name[member.name.canonical_case()] = member
|
||||
struct.members = members
|
||||
|
||||
for (member, m) in zip(members, struct.record['members']):
|
||||
# TODO(kainino@chromium.org): More robust pointer/length handling?
|
||||
if 'length' in m:
|
||||
member.length = members_by_name[m['length']]
|
||||
|
||||
def parse_json(json):
|
||||
category_to_parser = {
|
||||
|
||||
@@ -176,10 +176,10 @@
|
||||
size_t memberLength = {{member_length(member, "record.")}};
|
||||
auto memberBuffer = reinterpret_cast<{{member_transfer_type(member)}}*>(buffer);
|
||||
|
||||
buffer += memberLength * {{member_transfer_sizeof(member)}};
|
||||
for (size_t i = 0; i < memberLength; ++i) {
|
||||
{{serialize_member(member, "record." + memberName + "[i]", "memberBuffer[i]" )}}
|
||||
}
|
||||
buffer += memberLength * {{member_transfer_sizeof(member)}};
|
||||
}
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user