[tint] Comment the fields of core::type::StructMemberAttributes
It's near impossible to tell what std::nullopt represents without
looking up the type.
Change-Id: I9c2cfb55324532ac98c41e0c39e1c748533258b4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/159840
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/tint/lang/core/ir/transform/shader_io.cc b/src/tint/lang/core/ir/transform/shader_io.cc
index 0fd0ac8..368dcf0 100644
--- a/src/tint/lang/core/ir/transform/shader_io.cc
+++ b/src/tint/lang/core/ir/transform/shader_io.cc
@@ -119,7 +119,13 @@
if (func->Stage() == Function::PipelineStage::kVertex && backend->NeedsVertexPointSize()) {
vertex_point_size_index =
backend->AddOutput(ir.symbols.New("vertex_point_size"), ty.f32(),
- {{}, {}, {BuiltinValue::kPointSize}, {}, false});
+ core::type::StructMemberAttributes{
+ /* location */ {},
+ /* index */ {},
+ /* builtin */ core::BuiltinValue::kPointSize,
+ /* interpolation */ {},
+ /* invariant */ false,
+ });
}
auto new_params = backend->FinalizeInputs();
diff --git a/src/tint/lang/core/ir/transform/zero_init_workgroup_memory_test.cc b/src/tint/lang/core/ir/transform/zero_init_workgroup_memory_test.cc
index 0cf6dc4..e16f35e 100644
--- a/src/tint/lang/core/ir/transform/zero_init_workgroup_memory_test.cc
+++ b/src/tint/lang/core/ir/transform/zero_init_workgroup_memory_test.cc
@@ -1486,20 +1486,31 @@
TEST_F(IR_ZeroInitWorkgroupMemoryTest, ExistingLocalInvocationIndexInStruct) {
auto* var = MakeVar("wgvar", ty.bool_());
- auto* structure =
- ty.Struct(mod.symbols.New("MyStruct"),
- {
- {
- mod.symbols.New("global_id"),
- ty.vec3<u32>(),
- {{}, {}, core::BuiltinValue::kGlobalInvocationId, {}, false},
- },
- {
- mod.symbols.New("index"),
- ty.u32(),
- {{}, {}, core::BuiltinValue::kLocalInvocationIndex, {}, false},
- },
- });
+ auto* structure = ty.Struct(mod.symbols.New("MyStruct"),
+ {
+ {
+ mod.symbols.New("global_id"),
+ ty.vec3<u32>(),
+ core::type::StructMemberAttributes{
+ /* location */ {},
+ /* index */ {},
+ /* builtin */ core::BuiltinValue::kGlobalInvocationId,
+ /* interpolation */ {},
+ /* invariant */ false,
+ },
+ },
+ {
+ mod.symbols.New("index"),
+ ty.u32(),
+ core::type::StructMemberAttributes{
+ /* location */ {},
+ /* index */ {},
+ /* builtin */ core::BuiltinValue::kLocalInvocationIndex,
+ /* interpolation */ {},
+ /* invariant */ false,
+ },
+ },
+ });
auto* func = MakeEntryPoint("main", 1, 1, 1);
func->SetParams({b.FunctionParam("params", structure)});
b.Append(func->Block(), [&] { //
diff --git a/src/tint/lang/spirv/writer/function_test.cc b/src/tint/lang/spirv/writer/function_test.cc
index 890ddff..fc66154 100644
--- a/src/tint/lang/spirv/writer/function_test.cc
+++ b/src/tint/lang/spirv/writer/function_test.cc
@@ -347,11 +347,31 @@
}
TEST_F(SpirvWriterTest, Function_ShaderIO_DualSourceBlend) {
- auto* outputs = ty.Struct(mod.symbols.New("Outputs"),
- {
- {mod.symbols.Register("a"), ty.f32(), {0u, 0u, {}, {}, false}},
- {mod.symbols.Register("b"), ty.f32(), {0u, 1u, {}, {}, false}},
- });
+ auto* outputs =
+ ty.Struct(mod.symbols.New("Outputs"), {
+ {
+ mod.symbols.Register("a"),
+ ty.f32(),
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ 0u,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
+ },
+ {
+ mod.symbols.Register("b"),
+ ty.f32(),
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ 1u,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
+ },
+ });
auto* func = b.Function("main", outputs, core::ir::Function::PipelineStage::kFragment);
b.Append(func->Block(), [&] { //
diff --git a/src/tint/lang/spirv/writer/raise/shader_io_test.cc b/src/tint/lang/spirv/writer/raise/shader_io_test.cc
index 4dcd4a3..edbde41 100644
--- a/src/tint/lang/spirv/writer/raise/shader_io_test.cc
+++ b/src/tint/lang/spirv/writer/raise/shader_io_test.cc
@@ -151,27 +151,50 @@
{
mod.symbols.New("front_facing"),
ty.bool_(),
- {{}, {}, core::BuiltinValue::kFrontFacing, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ std::nullopt,
+ /* index */ std::nullopt,
+ /* builtin */ core::BuiltinValue::kFrontFacing,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
{
mod.symbols.New("position"),
ty.vec4<f32>(),
- {{}, {}, core::BuiltinValue::kPosition, {}, true},
+ core::type::StructMemberAttributes{
+ /* location */ std::nullopt,
+ /* index */ std::nullopt,
+ /* builtin */ core::BuiltinValue::kPosition,
+ /* interpolation */ std::nullopt,
+ /* invariant */ true,
+ },
},
{
mod.symbols.New("color1"),
ty.f32(),
- {0u, {}, {}, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
{
mod.symbols.New("color2"),
ty.f32(),
- {1u,
- {},
- {},
- core::Interpolation{core::InterpolationType::kLinear,
- core::InterpolationSampling::kSample},
- false},
+ core::type::StructMemberAttributes{
+ /* location */ 1u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */
+ core::Interpolation{
+ core::InterpolationType::kLinear,
+ core::InterpolationSampling::kSample,
+ },
+ /* invariant */ false,
+ },
},
});
@@ -276,12 +299,24 @@
{
mod.symbols.New("position"),
ty.vec4<f32>(),
- {{}, {}, core::BuiltinValue::kPosition, {}, true},
+ core::type::StructMemberAttributes{
+ /* location */ std::nullopt,
+ /* index */ std::nullopt,
+ /* builtin */ core::BuiltinValue::kPosition,
+ /* interpolation */ std::nullopt,
+ /* invariant */ true,
+ },
},
{
mod.symbols.New("color1"),
ty.f32(),
- {0u, {}, {}, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
});
@@ -476,22 +511,39 @@
{
mod.symbols.New("position"),
ty.vec4<f32>(),
- {{}, {}, core::BuiltinValue::kPosition, {}, true},
+ core::type::StructMemberAttributes{
+ /* location */ std::nullopt,
+ /* index */ std::nullopt,
+ /* builtin */ core::BuiltinValue::kPosition,
+ /* interpolation */ std::nullopt,
+ /* invariant */ true,
+ },
},
{
mod.symbols.New("color1"),
ty.f32(),
- {0u, {}, {}, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
{
mod.symbols.New("color2"),
ty.f32(),
- {1u,
- {},
- {},
- core::Interpolation{core::InterpolationType::kLinear,
- core::InterpolationSampling::kSample},
- false},
+ core::type::StructMemberAttributes{
+ /* location */ 1u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */
+ core::Interpolation{
+ core::InterpolationType::kLinear,
+ core::InterpolationSampling::kSample,
+ },
+ /* invariant */ false,
+ },
},
});
@@ -561,18 +613,31 @@
}
TEST_F(SpirvWriter_ShaderIOTest, ReturnValue_DualSourceBlending) {
- auto* str_ty = ty.Struct(mod.symbols.New("Output"), {
- {
- mod.symbols.New("color1"),
- ty.f32(),
- {0u, 0u, {}, {}, false},
- },
- {
- mod.symbols.New("color2"),
- ty.f32(),
- {0u, 1u, {}, {}, false},
- },
- });
+ auto* str_ty =
+ ty.Struct(mod.symbols.New("Output"), {
+ {
+ mod.symbols.New("color1"),
+ ty.f32(),
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ 0u,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
+ },
+ {
+ mod.symbols.New("color2"),
+ ty.f32(),
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ 1u,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
+ },
+ });
auto* ep = b.Function("foo", str_ty);
ep->SetStage(core::ir::Function::PipelineStage::kFragment);
@@ -639,12 +704,24 @@
{
mod.symbols.New("position"),
vec4f,
- {{}, {}, core::BuiltinValue::kPosition, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ std::nullopt,
+ /* index */ std::nullopt,
+ /* builtin */ core::BuiltinValue::kPosition,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
{
mod.symbols.New("color"),
vec4f,
- {0u, {}, {}, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
});
@@ -766,12 +843,24 @@
{
mod.symbols.New("position"),
vec4f,
- {{}, {}, core::BuiltinValue::kPosition, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ std::nullopt,
+ /* index */ std::nullopt,
+ /* builtin */ core::BuiltinValue::kPosition,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
{
mod.symbols.New("color"),
vec4f,
- {0u, {}, {}, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
});
@@ -847,12 +936,24 @@
{
mod.symbols.New("color"),
ty.f32(),
- {0u, {}, {}, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
{
mod.symbols.New("mask"),
ty.u32(),
- {{}, {}, core::BuiltinValue::kSampleMask, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ std::nullopt,
+ /* index */ std::nullopt,
+ /* builtin */ core::BuiltinValue::kSampleMask,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
});
@@ -924,19 +1025,24 @@
// Test that interpolation attributes are stripped from vertex inputs and fragment outputs.
TEST_F(SpirvWriter_ShaderIOTest, InterpolationOnVertexInputOrFragmentOutput) {
- auto* str_ty = ty.Struct(mod.symbols.New("MyStruct"),
- {
- {
- mod.symbols.New("color"),
- ty.f32(),
- {1u,
- {},
- {},
- core::Interpolation{core::InterpolationType::kLinear,
- core::InterpolationSampling::kSample},
- false},
- },
- });
+ auto* str_ty =
+ ty.Struct(mod.symbols.New("MyStruct"), {
+ {
+ mod.symbols.New("color"),
+ ty.f32(),
+ core::type::StructMemberAttributes{
+ /* location */ 1u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */
+ core::Interpolation{
+ core::InterpolationType::kLinear,
+ core::InterpolationSampling::kSample,
+ },
+ /* invariant */ false,
+ },
+ },
+ });
// Vertex shader.
{
@@ -1071,12 +1177,24 @@
{
mod.symbols.New("color"),
ty.f32(),
- {0u, {}, {}, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ 0u,
+ /* index */ std::nullopt,
+ /* builtin */ std::nullopt,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
{
mod.symbols.New("depth"),
ty.f32(),
- {{}, {}, core::BuiltinValue::kFragDepth, {}, false},
+ core::type::StructMemberAttributes{
+ /* location */ std::nullopt,
+ /* index */ std::nullopt,
+ /* builtin */ core::BuiltinValue::kFragDepth,
+ /* interpolation */ std::nullopt,
+ /* invariant */ false,
+ },
},
});