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]" )}}
                 }