Declare nextInChain as ChainedStructOut when extensible is out
This patch changes the type of the structure member nextInChain in
AdapterProperties and SupportedLimits as "ChainedStructOut *" instead
of "ChainedStruct * const" as all members of these structures should
be writable when they are used as the outputs of Dawn APIs.
Bug: dawn:1516
Change-Id: I185a0b5846ac6009717ac722df67bf7170354947
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/101802
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/generator/templates/dawn/native/api_structs.h b/generator/templates/dawn/native/api_structs.h
index 232d286..84a6404 100644
--- a/generator/templates/dawn/native/api_structs.h
+++ b/generator/templates/dawn/native/api_structs.h
@@ -49,9 +49,15 @@
{{namespace}}::SType sType = {{namespace}}::SType::Invalid;
};
+ struct ChainedStructOut {
+ ChainedStructOut * nextInChain = nullptr;
+ {{namespace}}::SType sType = {{namespace}}::SType::Invalid;
+ };
+
{% for type in by_category["structure"] %}
{% if type.chained %}
- struct {{as_cppType(type.name)}} : ChainedStruct {
+ {% set chainedStructType = "ChainedStructOut" if type.chained == "out" else "ChainedStruct" %}
+ struct {{as_cppType(type.name)}} : {{chainedStructType}} {
{{as_cppType(type.name)}}() {
sType = {{namespace}}::SType::{{type.name.CamelCase()}};
}
@@ -59,7 +65,8 @@
struct {{as_cppType(type.name)}} {
{% endif %}
{% if type.extensible %}
- ChainedStruct const * nextInChain = nullptr;
+ {% set chainedStructType = "ChainedStructOut" if type.output else "ChainedStruct const" %}
+ {{chainedStructType}} * nextInChain = nullptr;
{% endif %}
{% for member in type.members %}
{% set member_declaration = as_annotated_frontendType(member) + render_cpp_default_value(member) %}