-
Notifications
You must be signed in to change notification settings - Fork 853
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
spirv: Support initializers on uniforms
If a uniform has an initializer it will now be given as the optional initializer operand to the OpVariable instruction. Fixes: #1259 Signed-off-by: Neil Roberts <nroberts@igalia.com> (the code) Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com> (the tests) Signed-off-by: Arcady Goldmints-Orlov <agoldmints@igalia.com>
- Loading branch information
Showing
8 changed files
with
193 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
spv.uniformInitializer.frag | ||
// Module Version 10000 | ||
// Generated by (magic number): 80008 | ||
// Id's are bound by 16 | ||
|
||
Capability Shader | ||
1: ExtInstImport "GLSL.std.450" | ||
MemoryModel Logical GLSL450 | ||
EntryPoint Fragment 4 "main" 9 | ||
ExecutionMode 4 OriginLowerLeft | ||
Source GLSL 450 | ||
Name 4 "main" | ||
Name 9 "color" | ||
Name 14 "in_color" | ||
Decorate 9(color) Location 0 | ||
Decorate 14(in_color) Location 0 | ||
2: TypeVoid | ||
3: TypeFunction 2 | ||
6: TypeFloat 32 | ||
7: TypeVector 6(float) 4 | ||
8: TypePointer Output 7(fvec4) | ||
9(color): 8(ptr) Variable Output | ||
10: 6(float) Constant 0 | ||
11: 6(float) Constant 1065353216 | ||
12: 7(fvec4) ConstantComposite 10 11 10 11 | ||
13: TypePointer UniformConstant 7(fvec4) | ||
14(in_color): 13(ptr) Variable UniformConstant 12 | ||
4(main): 2 Function None 3 | ||
5: Label | ||
15: 7(fvec4) Load 14(in_color) | ||
Store 9(color) 15 | ||
Return | ||
FunctionEnd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
spv.uniformInitializerSpecConstant.frag | ||
ERROR: 0:9: '=' : uniform initializers must be constant 'layout( location=4) uniform float' | ||
ERROR: 1 compilation errors. No code generated. | ||
|
||
|
||
SPIR-V is not generated for failed compile or link |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
spv.uniformInitializerStruct.frag | ||
// Module Version 10000 | ||
// Generated by (magic number): 80008 | ||
// Id's are bound by 63 | ||
|
||
Capability Shader | ||
1: ExtInstImport "GLSL.std.450" | ||
MemoryModel Logical GLSL450 | ||
EntryPoint Fragment 4 "main" 9 | ||
ExecutionMode 4 OriginLowerLeft | ||
Source GLSL 450 | ||
Name 4 "main" | ||
Name 9 "color" | ||
Name 15 "i" | ||
Name 26 "" | ||
MemberName 26 0 "r" | ||
MemberName 26 1 "g" | ||
MemberName 26 2 "b" | ||
Name 34 "parts" | ||
Decorate 9(color) Location 0 | ||
Decorate 34(parts) Location 0 | ||
2: TypeVoid | ||
3: TypeFunction 2 | ||
6: TypeFloat 32 | ||
7: TypeVector 6(float) 4 | ||
8: TypePointer Output 7(fvec4) | ||
9(color): 8(ptr) Variable Output | ||
10: 6(float) Constant 0 | ||
11: 6(float) Constant 1065353216 | ||
12: 7(fvec4) ConstantComposite 10 10 10 11 | ||
13: TypeInt 32 1 | ||
14: TypePointer Function 13(int) | ||
16: 13(int) Constant 0 | ||
23: 13(int) Constant 2 | ||
24: TypeBool | ||
26: TypeStruct 6(float) 6(float) 6(float) | ||
27: TypeInt 32 0 | ||
28: 27(int) Constant 2 | ||
29: TypeArray 26(struct) 28 | ||
30: 26(struct) ConstantComposite 11 11 11 | ||
31: 26(struct) ConstantComposite 10 11 10 | ||
32: 29 ConstantComposite 30 31 | ||
33: TypePointer UniformConstant 29 | ||
34(parts): 33(ptr) Variable UniformConstant 32 | ||
36: TypePointer UniformConstant 6(float) | ||
39: 27(int) Constant 0 | ||
40: TypePointer Output 6(float) | ||
46: 13(int) Constant 1 | ||
49: 27(int) Constant 1 | ||
4(main): 2 Function None 3 | ||
5: Label | ||
15(i): 14(ptr) Variable Function | ||
Store 9(color) 12 | ||
Store 15(i) 16 | ||
Branch 17 | ||
17: Label | ||
LoopMerge 19 20 None | ||
Branch 21 | ||
21: Label | ||
22: 13(int) Load 15(i) | ||
25: 24(bool) SLessThan 22 23 | ||
BranchConditional 25 18 19 | ||
18: Label | ||
35: 13(int) Load 15(i) | ||
37: 36(ptr) AccessChain 34(parts) 35 16 | ||
38: 6(float) Load 37 | ||
41: 40(ptr) AccessChain 9(color) 39 | ||
42: 6(float) Load 41 | ||
43: 6(float) FAdd 42 38 | ||
44: 40(ptr) AccessChain 9(color) 39 | ||
Store 44 43 | ||
45: 13(int) Load 15(i) | ||
47: 36(ptr) AccessChain 34(parts) 45 46 | ||
48: 6(float) Load 47 | ||
50: 40(ptr) AccessChain 9(color) 49 | ||
51: 6(float) Load 50 | ||
52: 6(float) FAdd 51 48 | ||
53: 40(ptr) AccessChain 9(color) 49 | ||
Store 53 52 | ||
54: 13(int) Load 15(i) | ||
55: 36(ptr) AccessChain 34(parts) 54 23 | ||
56: 6(float) Load 55 | ||
57: 40(ptr) AccessChain 9(color) 28 | ||
58: 6(float) Load 57 | ||
59: 6(float) FAdd 58 56 | ||
60: 40(ptr) AccessChain 9(color) 28 | ||
Store 60 59 | ||
Branch 20 | ||
20: Label | ||
61: 13(int) Load 15(i) | ||
62: 13(int) IAdd 61 46 | ||
Store 15(i) 62 | ||
Branch 17 | ||
19: Label | ||
Return | ||
FunctionEnd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#version 450 | ||
|
||
layout (location = 0) out vec4 color; | ||
|
||
layout (location = 0) uniform vec4 in_color = vec4(0.0, 1.0, 0.0, 1.0); | ||
|
||
void main() | ||
{ | ||
color = in_color; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#version 450 | ||
|
||
layout (location = 0) out vec4 color; | ||
|
||
layout (constant_id = 1) const float opacity = 0.5; | ||
|
||
layout (location = 0) uniform vec3 in_color = vec3(1.0, 0.5, 0); | ||
|
||
layout (location = 4) uniform float foo = opacity; | ||
|
||
void main() | ||
{ | ||
color = vec4(in_color, foo); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
#version 450 | ||
|
||
layout (location = 0) out vec4 color; | ||
|
||
layout (location = 0) uniform struct { | ||
float r; | ||
float g; | ||
float b; | ||
} parts[2] = { { 1.0, 1.0, 1.0}, { 0.0, 1.0, 0.0 } }; | ||
|
||
void main() { | ||
color = vec4(0.0, 0.0, 0.0, 1.0); | ||
|
||
for (int i = 0; i < 2; i++) { | ||
color.r += parts[i].r; | ||
color.g += parts[i].g; | ||
color.b += parts[i].b; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters