diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out new file mode 100644 index 0000000000000000000000000000000000000000..c5f915410c943833b215c903c2c9d322b3565302 --- /dev/null +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -0,0 +1,89 @@ +spv.buffer.autoassign.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 45 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 41 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "PS_OUTPUT" + MemberName 8(PS_OUTPUT) 0 "Color" + Name 10 "psout" + Name 13 "" + MemberName 13 0 "g_a" + MemberName 13 1 "g_b" + Name 15 "" + Name 25 "" + MemberName 25 0 "g_c" + Name 27 "" + Name 31 "" + MemberName 31 0 "g_d" + Name 33 "" + Name 41 "Color" + MemberDecorate 13 0 Offset 0 + MemberDecorate 13 1 Offset 4 + Decorate 13 Block + Decorate 15 DescriptorSet 0 + Decorate 15 Binding 20 + MemberDecorate 25 0 Offset 0 + Decorate 25 Block + Decorate 27 DescriptorSet 0 + Decorate 27 Binding 1 + MemberDecorate 31 0 Offset 0 + Decorate 31 Block + Decorate 33 DescriptorSet 0 + Decorate 33 Binding 2 + Decorate 41(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8(PS_OUTPUT): TypeStruct 7(fvec4) + 9: TypePointer Function 8(PS_OUTPUT) + 11: TypeInt 32 1 + 12: 11(int) Constant 0 + 13: TypeStruct 6(float) 11(int) + 14: TypePointer Uniform 13(struct) + 15: 14(ptr) Variable Uniform + 16: TypePointer Uniform 6(float) + 19: 11(int) Constant 1 + 20: TypePointer Uniform 11(int) + 25: TypeStruct 6(float) + 26: TypePointer Uniform 25(struct) + 27: 26(ptr) Variable Uniform + 31: TypeStruct 6(float) + 32: TypePointer Uniform 31(struct) + 33: 32(ptr) Variable Uniform + 38: TypePointer Function 7(fvec4) + 40: TypePointer Output 7(fvec4) + 41(Color): 40(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(psout): 9(ptr) Variable Function + 17: 16(ptr) AccessChain 15 12 + 18: 6(float) Load 17 + 21: 20(ptr) AccessChain 15 19 + 22: 11(int) Load 21 + 23: 6(float) ConvertSToF 22 + 24: 6(float) FAdd 18 23 + 28: 16(ptr) AccessChain 27 12 + 29: 6(float) Load 28 + 30: 6(float) FAdd 24 29 + 34: 16(ptr) AccessChain 33 12 + 35: 6(float) Load 34 + 36: 6(float) FAdd 30 35 + 37: 7(fvec4) CompositeConstruct 36 36 36 36 + 39: 38(ptr) AccessChain 10(psout) 12 + Store 39 37 + 42: 38(ptr) AccessChain 10(psout) 12 + 43: 7(fvec4) Load 42 + Store 41(Color) 43 + Return + FunctionEnd diff --git a/Test/spv.buffer.autoassign.frag b/Test/spv.buffer.autoassign.frag new file mode 100644 index 0000000000000000000000000000000000000000..464426095d8a8a24db794a8f50fd5a617879a695 --- /dev/null +++ b/Test/spv.buffer.autoassign.frag @@ -0,0 +1,28 @@ + +cbuffer MyUB1 : register(b5) // explicitly assigned & offsetted +{ + float g_a; + int g_b; +}; + +cbuffer MyUB2 // implicitly assigned +{ + float g_c; +}; + +cbuffer MyUB3 // implicitly assigned +{ + float g_d; +}; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + psout.Color = g_a + g_b + g_c + g_d; + return psout; +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 25caa7edc1b8734b6f8a05cb4b3c1736ace5ab62..2fe3c4da770013e171a08b940f99f75cbf0ae734 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -284,6 +284,7 @@ INSTANTIATE_TEST_CASE_P( { "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false }, { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, { "spv.register.autoassign-2.frag", "main", 5, 10, 15, true, true }, + { "spv.buffer.autoassign.frag", "main", 5, 10, 15, true, true }, }), FileNameAsCustomTestSuffixIoMap );