test: Add missing stage attributes to IO test

Change-Id: I7f69de9c3b6fe226e0688f56a8d076dc6ec4a81f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/55281
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
James Price 2021-06-19 01:12:45 +00:00 committed by Tint LUCI CQ
parent 960aa2ee75
commit a865b375aa
5 changed files with 108 additions and 41 deletions

View File

@ -7,10 +7,12 @@ fn foo(x : f32) -> VertexOutput {
return VertexOutput(vec4<f32>(x, x, x, 1.0), 42); return VertexOutput(vec4<f32>(x, x, x, 1.0), 42);
} }
[[stage(vertex)]]
fn vert_main1() -> VertexOutput { fn vert_main1() -> VertexOutput {
return foo(0.5); return foo(0.5);
} }
[[stage(vertex)]]
fn vert_main2() -> VertexOutput { fn vert_main2() -> VertexOutput {
return foo(0.25); return foo(0.25);
} }

View File

@ -1,22 +1,31 @@
[numthreads(1, 1, 1)]
void unused_entry_point() {
return;
}
struct VertexOutput { struct VertexOutput {
float4 pos; float4 pos;
int loc0; int loc0;
}; };
VertexOutput foo(float x) { VertexOutput foo(float x) {
const VertexOutput tint_symbol = {float4(x, x, x, 1.0f), 42}; const VertexOutput tint_symbol_4 = {float4(x, x, x, 1.0f), 42};
return tint_symbol; return tint_symbol_4;
} }
VertexOutput vert_main1() { struct tint_symbol {
return foo(0.5f); int loc0 : TEXCOORD0;
float4 pos : SV_Position;
};
tint_symbol vert_main1() {
const VertexOutput tint_symbol_1 = foo(0.5f);
const tint_symbol tint_symbol_5 = {tint_symbol_1.loc0, tint_symbol_1.pos};
return tint_symbol_5;
} }
VertexOutput vert_main2() { struct tint_symbol_2 {
return foo(0.25f); int loc0 : TEXCOORD0;
float4 pos : SV_Position;
};
tint_symbol_2 vert_main2() {
const VertexOutput tint_symbol_3 = foo(0.25f);
const tint_symbol_2 tint_symbol_6 = {tint_symbol_3.loc0, tint_symbol_3.pos};
return tint_symbol_6;
} }

View File

@ -5,17 +5,29 @@ struct VertexOutput {
float4 pos; float4 pos;
int loc0; int loc0;
}; };
struct tint_symbol {
int loc0 [[user(locn0)]];
float4 pos [[position]];
};
struct tint_symbol_2 {
int loc0 [[user(locn0)]];
float4 pos [[position]];
};
VertexOutput foo(float x) { VertexOutput foo(float x) {
VertexOutput const tint_symbol = {.pos=float4(x, x, x, 1.0f), .loc0=42}; VertexOutput const tint_symbol_4 = {.pos=float4(x, x, x, 1.0f), .loc0=42};
return tint_symbol; return tint_symbol_4;
} }
VertexOutput vert_main1() { vertex tint_symbol vert_main1() {
return foo(0.5f); VertexOutput const tint_symbol_1 = foo(0.5f);
tint_symbol const tint_symbol_5 = {.loc0=tint_symbol_1.loc0, .pos=tint_symbol_1.pos};
return tint_symbol_5;
} }
VertexOutput vert_main2() { vertex tint_symbol_2 vert_main2() {
return foo(0.25f); VertexOutput const tint_symbol_3 = foo(0.25f);
tint_symbol_2 const tint_symbol_6 = {.loc0=tint_symbol_3.loc0, .pos=tint_symbol_3.pos};
return tint_symbol_6;
} }

View File

@ -1,52 +1,94 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 26 ; Bound: 47
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %unused_entry_point "unused_entry_point" OpEntryPoint Vertex %vert_main1 "vert_main1" %tint_pointsize %tint_symbol_1 %tint_symbol_2
OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpEntryPoint Vertex %vert_main2 "vert_main2" %tint_pointsize %tint_symbol_5 %tint_symbol_6
OpName %unused_entry_point "unused_entry_point" OpName %tint_pointsize "tint_pointsize"
OpName %tint_symbol_1 "tint_symbol_1"
OpName %tint_symbol_2 "tint_symbol_2"
OpName %tint_symbol_5 "tint_symbol_5"
OpName %tint_symbol_6 "tint_symbol_6"
OpName %VertexOutput "VertexOutput" OpName %VertexOutput "VertexOutput"
OpMemberName %VertexOutput 0 "pos" OpMemberName %VertexOutput 0 "pos"
OpMemberName %VertexOutput 1 "loc0" OpMemberName %VertexOutput 1 "loc0"
OpName %foo "foo" OpName %foo "foo"
OpName %x "x" OpName %x "x"
OpName %tint_symbol_3 "tint_symbol_3"
OpName %tint_symbol "tint_symbol"
OpName %vert_main1 "vert_main1" OpName %vert_main1 "vert_main1"
OpName %tint_symbol_7 "tint_symbol_7"
OpName %tint_symbol_4 "tint_symbol_4"
OpName %vert_main2 "vert_main2" OpName %vert_main2 "vert_main2"
OpDecorate %tint_pointsize BuiltIn PointSize
OpDecorate %tint_symbol_1 BuiltIn Position
OpDecorate %tint_symbol_2 Location 0
OpDecorate %tint_symbol_5 BuiltIn Position
OpDecorate %tint_symbol_6 Location 0
OpMemberDecorate %VertexOutput 0 Offset 0 OpMemberDecorate %VertexOutput 0 Offset 0
OpMemberDecorate %VertexOutput 1 Offset 16 OpMemberDecorate %VertexOutput 1 Offset 16
%void = OpTypeVoid
%1 = OpTypeFunction %void
%float = OpTypeFloat 32 %float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%v4float = OpTypeVector %float 4 %v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%8 = OpConstantNull %v4float
%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%_ptr_Output_int = OpTypePointer Output %int
%12 = OpConstantNull %int
%tint_symbol_2 = OpVariable %_ptr_Output_int Output %12
%tint_symbol_5 = OpVariable %_ptr_Output_v4float Output %8
%tint_symbol_6 = OpVariable %_ptr_Output_int Output %12
%VertexOutput = OpTypeStruct %v4float %int %VertexOutput = OpTypeStruct %v4float %int
%5 = OpTypeFunction %VertexOutput %float %15 = OpTypeFunction %VertexOutput %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%int_42 = OpConstant %int 42 %int_42 = OpConstant %int 42
%17 = OpTypeFunction %VertexOutput %void = OpTypeVoid
%24 = OpTypeFunction %void %VertexOutput
%31 = OpTypeFunction %void
%float_0_5 = OpConstant %float 0.5 %float_0_5 = OpConstant %float 0.5
%float_0_25 = OpConstant %float 0.25 %float_0_25 = OpConstant %float 0.25
%unused_entry_point = OpFunction %void None %1 %foo = OpFunction %VertexOutput None %15
%4 = OpLabel %x = OpFunctionParameter %float
%19 = OpLabel
%21 = OpCompositeConstruct %v4float %x %x %x %float_1
%23 = OpCompositeConstruct %VertexOutput %21 %int_42
OpReturnValue %23
OpFunctionEnd
%tint_symbol_3 = OpFunction %void None %24
%tint_symbol = OpFunctionParameter %VertexOutput
%28 = OpLabel
%29 = OpCompositeExtract %v4float %tint_symbol 0
OpStore %tint_symbol_1 %29
%30 = OpCompositeExtract %int %tint_symbol 1
OpStore %tint_symbol_2 %30
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%foo = OpFunction %VertexOutput None %5 %vert_main1 = OpFunction %void None %31
%x = OpFunctionParameter %float %33 = OpLabel
%12 = OpLabel OpStore %tint_pointsize %float_1
%14 = OpCompositeConstruct %v4float %x %x %x %float_1 %35 = OpFunctionCall %VertexOutput %foo %float_0_5
%16 = OpCompositeConstruct %VertexOutput %14 %int_42 %34 = OpFunctionCall %void %tint_symbol_3 %35
OpReturnValue %16 OpReturn
OpFunctionEnd OpFunctionEnd
%vert_main1 = OpFunction %VertexOutput None %17 %tint_symbol_7 = OpFunction %void None %24
%19 = OpLabel %tint_symbol_4 = OpFunctionParameter %VertexOutput
%20 = OpFunctionCall %VertexOutput %foo %float_0_5 %39 = OpLabel
OpReturnValue %20 %40 = OpCompositeExtract %v4float %tint_symbol_4 0
OpStore %tint_symbol_5 %40
%41 = OpCompositeExtract %int %tint_symbol_4 1
OpStore %tint_symbol_6 %41
OpReturn
OpFunctionEnd OpFunctionEnd
%vert_main2 = OpFunction %VertexOutput None %17 %vert_main2 = OpFunction %void None %31
%23 = OpLabel %43 = OpLabel
%24 = OpFunctionCall %VertexOutput %foo %float_0_25 OpStore %tint_pointsize %float_1
OpReturnValue %24 %45 = OpFunctionCall %VertexOutput %foo %float_0_25
%44 = OpFunctionCall %void %tint_symbol_7 %45
OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -9,10 +9,12 @@ fn foo(x : f32) -> VertexOutput {
return VertexOutput(vec4<f32>(x, x, x, 1.0), 42); return VertexOutput(vec4<f32>(x, x, x, 1.0), 42);
} }
[[stage(vertex)]]
fn vert_main1() -> VertexOutput { fn vert_main1() -> VertexOutput {
return foo(0.5); return foo(0.5);
} }
[[stage(vertex)]]
fn vert_main2() -> VertexOutput { fn vert_main2() -> VertexOutput {
return foo(0.25); return foo(0.25);
} }