Remove indirection for vertexStage
This is to match the work in progress webgpu.h header.
Also contains a fix for the wire where it wouldn't GetExtraRequiredSize
for structures that are by-value members of other structures.
BUG=dawn:22
Change-Id: I3c706bf9cd7a550d40fd667877f032c860d0a032
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/9382
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/generator/templates/dawn_wire/WireCmd.cpp b/generator/templates/dawn_wire/WireCmd.cpp
index c465ae0..c07e35d 100644
--- a/generator/templates/dawn_wire/WireCmd.cpp
+++ b/generator/templates/dawn_wire/WireCmd.cpp
@@ -123,23 +123,27 @@
{% endfor %}
//* Gather how much space will be needed for pointer members.
- {% for member in members if member.annotation != "value" and member.length != "strlen" and not member.skip_serialize %}
+ {% for member in members if member.length != "strlen" and not member.skip_serialize %}
{% if member.type.category != "object" and member.optional %}
if (record.{{as_varName(member.name)}} != nullptr)
{% endif %}
{
- size_t memberLength = {{member_length(member, "record.")}};
- result += memberLength * {{member_transfer_sizeof(member)}};
-
- //* Structures might contain more pointers so we need to add their extra size as well.
- {% if member.type.category == "structure" %}
- for (size_t i = 0; i < memberLength; ++i) {
- {% if member.annotation == "const*const*" %}
- result += {{as_cType(member.type.name)}}GetExtraRequiredSize(*record.{{as_varName(member.name)}}[i]);
- {% else %}
- result += {{as_cType(member.type.name)}}GetExtraRequiredSize(record.{{as_varName(member.name)}}[i]);
- {% endif %}
- }
+ {% if member.annotation != "value" %}
+ size_t memberLength = {{member_length(member, "record.")}};
+ result += memberLength * {{member_transfer_sizeof(member)}};
+ //* Structures might contain more pointers so we need to add their extra size as well.
+ {% if member.type.category == "structure" %}
+ for (size_t i = 0; i < memberLength; ++i) {
+ {% if member.annotation == "const*const*" %}
+ result += {{as_cType(member.type.name)}}GetExtraRequiredSize(*record.{{as_varName(member.name)}}[i]);
+ {% else %}
+ {{assert(member.annotation == "const*")}}
+ result += {{as_cType(member.type.name)}}GetExtraRequiredSize(record.{{as_varName(member.name)}}[i]);
+ {% endif %}
+ }
+ {% endif %}
+ {% elif member.type.category == "structure" %}
+ result += {{as_cType(member.type.name)}}GetExtraRequiredSize(record.{{as_varName(member.name)}});
{% endif %}
}
{% endfor %}
@@ -192,8 +196,8 @@
{
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]" )}}
}