aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Neto <dneto@google.com>2022-02-16 17:10:29 -0500
committerDavid Neto <dneto@google.com>2022-02-16 17:17:08 -0500
commit63dbacaa9431b48fb1a6fc83632095a3b4d7dfd7 (patch)
tree766a8cb4bae7487717310b583eec6211ba8e76be
parent90d4bd05cd77ef5782a6779a0fe3d084440dc80d (diff)
downloadglslang-63dbacaa9431b48fb1a6fc83632095a3b4d7dfd7.tar.gz
Fix Test/hlsl.namespace.frag test case
Before this change, the example is rejected by DXC: $ dxc -T ps_6_0 hlsl.namespace.frag hlsl.namespace.frag:22:73: error: call to non-static member function without an object argument return N1::getVec() + N2::getVec() + N2::N3::getVec() + N2::N3::C1::getVec() * N2::gf; ~~~~~~~~~~~~^~~~~~ The call to the class member function requires an object, or we ned to make the function static. This update makes the function static. This also fixes SPIR-V validation: without this change the call to that getVec does not have enough arguments: error: line 69: OpFunctionCall Function <id>'s parameter count does not match the argument count. %43 = OpFunctionCall %v4float %N2__N3__C1__getVec_
-rw-r--r--Test/baseResults/hlsl.namespace.frag.out97
-rw-r--r--Test/hlsl.namespace.frag2
2 files changed, 45 insertions, 54 deletions
diff --git a/Test/baseResults/hlsl.namespace.frag.out b/Test/baseResults/hlsl.namespace.frag.out
index 5346c44a..e224eb92 100644
--- a/Test/baseResults/hlsl.namespace.frag.out
+++ b/Test/baseResults/hlsl.namespace.frag.out
@@ -17,9 +17,8 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 Branch: Return with expression
0:12 'v2' ( global 4-component vector of float)
-0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:15 Function Definition: N2::N3::C1::getVec( ( global 4-component vector of float)
0:15 Function Parameters:
-0:15 '@this' ( temp structure{})
0:? Sequence
0:15 Branch: Return with expression
0:15 'v2' ( global 4-component vector of float)
@@ -34,7 +33,7 @@ gl_FragCoord origin is upper left
0:22 Function Call: N2::getVec( ( temp 4-component vector of float)
0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float)
0:22 vector-scale ( temp 4-component vector of float)
-0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:22 Function Call: N2::N3::C1::getVec( ( global 4-component vector of float)
0:22 'N2::gf' ( global float)
0:21 Function Definition: main( ( temp void)
0:21 Function Parameters:
@@ -70,9 +69,8 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 Branch: Return with expression
0:12 'v2' ( global 4-component vector of float)
-0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:15 Function Definition: N2::N3::C1::getVec( ( global 4-component vector of float)
0:15 Function Parameters:
-0:15 '@this' ( temp structure{})
0:? Sequence
0:15 Branch: Return with expression
0:15 'v2' ( global 4-component vector of float)
@@ -87,7 +85,7 @@ gl_FragCoord origin is upper left
0:22 Function Call: N2::getVec( ( temp 4-component vector of float)
0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float)
0:22 vector-scale ( temp 4-component vector of float)
-0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:22 Function Call: N2::N3::C1::getVec( ( global 4-component vector of float)
0:22 'N2::gf' ( global float)
0:21 Function Definition: main( ( temp void)
0:21 Function Parameters:
@@ -101,82 +99,75 @@ gl_FragCoord origin is upper left
0:? 'N2::gf' ( global float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
-// Id's are bound by 54
+// Id's are bound by 50
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 52
+ EntryPoint Fragment 4 "main" 48
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 9 "N1::getVec("
Name 11 "N2::getVec("
Name 13 "N2::N3::getVec("
- Name 15 "C1"
- Name 19 "N2::N3::C1::getVec("
- Name 18 "@this"
- Name 21 "@main("
- Name 24 "v1"
- Name 28 "v2"
- Name 45 "N2::gf"
- Name 52 "@entryPointOutput"
- Decorate 52(@entryPointOutput) Location 0
+ Name 15 "N2::N3::C1::getVec("
+ Name 17 "@main("
+ Name 20 "v1"
+ Name 24 "v2"
+ Name 41 "N2::gf"
+ Name 48 "@entryPointOutput"
+ Decorate 48(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeFunction 7(fvec4)
- 15(C1): TypeStruct
- 16: TypePointer Function 15(C1)
- 17: TypeFunction 7(fvec4) 16(ptr)
- 23: TypePointer Private 7(fvec4)
- 24(v1): 23(ptr) Variable Private
- 28(v2): 23(ptr) Variable Private
- 44: TypePointer Private 6(float)
- 45(N2::gf): 44(ptr) Variable Private
- 51: TypePointer Output 7(fvec4)
-52(@entryPointOutput): 51(ptr) Variable Output
+ 19: TypePointer Private 7(fvec4)
+ 20(v1): 19(ptr) Variable Private
+ 24(v2): 19(ptr) Variable Private
+ 40: TypePointer Private 6(float)
+ 41(N2::gf): 40(ptr) Variable Private
+ 47: TypePointer Output 7(fvec4)
+48(@entryPointOutput): 47(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 53: 7(fvec4) FunctionCall 21(@main()
- Store 52(@entryPointOutput) 53
+ 49: 7(fvec4) FunctionCall 17(@main()
+ Store 48(@entryPointOutput) 49
Return
FunctionEnd
9(N1::getVec(): 7(fvec4) Function None 8
10: Label
- 25: 7(fvec4) Load 24(v1)
- ReturnValue 25
+ 21: 7(fvec4) Load 20(v1)
+ ReturnValue 21
FunctionEnd
11(N2::getVec(): 7(fvec4) Function None 8
12: Label
- 29: 7(fvec4) Load 28(v2)
- ReturnValue 29
+ 25: 7(fvec4) Load 24(v2)
+ ReturnValue 25
FunctionEnd
13(N2::N3::getVec(): 7(fvec4) Function None 8
14: Label
- 32: 7(fvec4) Load 28(v2)
- ReturnValue 32
+ 28: 7(fvec4) Load 24(v2)
+ ReturnValue 28
FunctionEnd
-19(N2::N3::C1::getVec(): 7(fvec4) Function None 17
- 18(@this): 16(ptr) FunctionParameter
- 20: Label
- 35: 7(fvec4) Load 28(v2)
- ReturnValue 35
+15(N2::N3::C1::getVec(): 7(fvec4) Function None 8
+ 16: Label
+ 31: 7(fvec4) Load 24(v2)
+ ReturnValue 31
FunctionEnd
- 21(@main(): 7(fvec4) Function None 8
- 22: Label
- 38: 7(fvec4) FunctionCall 9(N1::getVec()
- 39: 7(fvec4) FunctionCall 11(N2::getVec()
- 40: 7(fvec4) FAdd 38 39
- 41: 7(fvec4) FunctionCall 13(N2::N3::getVec()
- 42: 7(fvec4) FAdd 40 41
- 43: 7(fvec4) FunctionCall 19(N2::N3::C1::getVec()
- 46: 6(float) Load 45(N2::gf)
- 47: 7(fvec4) VectorTimesScalar 43 46
- 48: 7(fvec4) FAdd 42 47
- ReturnValue 48
+ 17(@main(): 7(fvec4) Function None 8
+ 18: Label
+ 34: 7(fvec4) FunctionCall 9(N1::getVec()
+ 35: 7(fvec4) FunctionCall 11(N2::getVec()
+ 36: 7(fvec4) FAdd 34 35
+ 37: 7(fvec4) FunctionCall 13(N2::N3::getVec()
+ 38: 7(fvec4) FAdd 36 37
+ 39: 7(fvec4) FunctionCall 15(N2::N3::C1::getVec()
+ 42: 6(float) Load 41(N2::gf)
+ 43: 7(fvec4) VectorTimesScalar 39 42
+ 44: 7(fvec4) FAdd 38 43
+ ReturnValue 44
FunctionEnd
diff --git a/Test/hlsl.namespace.frag b/Test/hlsl.namespace.frag
index 76c3062d..d2b04458 100644
--- a/Test/hlsl.namespace.frag
+++ b/Test/hlsl.namespace.frag
@@ -12,7 +12,7 @@ namespace N2 {
float4 getVec() { return v2; }
class C1 {
- float4 getVec() { return v2; }
+ static float4 getVec() { return v2; }
};
}
}