forked from KhronosGroup/glslang
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement extension GL_AMD_shader_image_load_store_lod
- Loading branch information
Showing
12 changed files
with
298 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
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,135 @@ | ||
spv.imageLoadStoreLod.frag | ||
// Module Version 10000 | ||
// Generated by (magic number): 80001 | ||
// Id's are bound by 82 | ||
|
||
Capability Shader | ||
Capability ImageCubeArray | ||
Capability SparseResidency | ||
Capability Image1D | ||
Capability ImageReadWriteLodAMD | ||
Extension "SPV_AMD_shader_image_load_store_lod" | ||
1: ExtInstImport "GLSL.std.450" | ||
MemoryModel Logical GLSL450 | ||
EntryPoint Fragment 4 "main" 77 | ||
ExecutionMode 4 OriginUpperLeft | ||
Source GLSL 450 | ||
SourceExtension "GL_AMD_shader_image_load_store_lod" | ||
Name 4 "main" | ||
Name 9 "f4" | ||
Name 14 "i1D" | ||
Name 24 "i2D" | ||
Name 34 "i3D" | ||
Name 46 "iiCube" | ||
Name 53 "ii1DArray" | ||
Name 60 "ui2DArray" | ||
Name 64 "u4" | ||
Name 65 "ResType" | ||
Name 71 "uiCubeArray" | ||
Name 77 "fragColor" | ||
Decorate 14(i1D) DescriptorSet 0 | ||
Decorate 14(i1D) Binding 0 | ||
Decorate 24(i2D) DescriptorSet 0 | ||
Decorate 24(i2D) Binding 1 | ||
Decorate 34(i3D) DescriptorSet 0 | ||
Decorate 34(i3D) Binding 2 | ||
Decorate 46(iiCube) DescriptorSet 0 | ||
Decorate 46(iiCube) Binding 3 | ||
Decorate 53(ii1DArray) DescriptorSet 0 | ||
Decorate 53(ii1DArray) Binding 4 | ||
Decorate 60(ui2DArray) DescriptorSet 0 | ||
Decorate 60(ui2DArray) Binding 5 | ||
Decorate 71(uiCubeArray) DescriptorSet 0 | ||
Decorate 71(uiCubeArray) Binding 6 | ||
Decorate 77(fragColor) Location 0 | ||
2: TypeVoid | ||
3: TypeFunction 2 | ||
6: TypeFloat 32 | ||
7: TypeVector 6(float) 4 | ||
8: TypePointer Function 7(fvec4) | ||
10: 6(float) Constant 0 | ||
11: 7(fvec4) ConstantComposite 10 10 10 10 | ||
12: TypeImage 6(float) 1D nonsampled format:Rgba32f | ||
13: TypePointer UniformConstant 12 | ||
14(i1D): 13(ptr) Variable UniformConstant | ||
16: TypeInt 32 1 | ||
17: 16(int) Constant 1 | ||
18: 16(int) Constant 3 | ||
22: TypeImage 6(float) 2D nonsampled format:Rgba32f | ||
23: TypePointer UniformConstant 22 | ||
24(i2D): 23(ptr) Variable UniformConstant | ||
26: TypeVector 16(int) 2 | ||
27: 16(int) Constant 2 | ||
28: 26(ivec2) ConstantComposite 27 18 | ||
32: TypeImage 6(float) 3D nonsampled format:Rgba32f | ||
33: TypePointer UniformConstant 32 | ||
34(i3D): 33(ptr) Variable UniformConstant | ||
36: TypeVector 16(int) 3 | ||
37: 16(int) Constant 4 | ||
38: 16(int) Constant 5 | ||
39: 16(int) Constant 6 | ||
40: 36(ivec3) ConstantComposite 37 38 39 | ||
44: TypeImage 16(int) Cube nonsampled format:Rgba32i | ||
45: TypePointer UniformConstant 44 | ||
46(iiCube): 45(ptr) Variable UniformConstant | ||
49: TypeVector 16(int) 4 | ||
51: TypeImage 16(int) 1D array nonsampled format:Rgba32i | ||
52: TypePointer UniformConstant 51 | ||
53(ii1DArray): 52(ptr) Variable UniformConstant | ||
57: TypeInt 32 0 | ||
58: TypeImage 57(int) 2D array nonsampled format:Rgba32ui | ||
59: TypePointer UniformConstant 58 | ||
60(ui2DArray): 59(ptr) Variable UniformConstant | ||
62: TypeVector 57(int) 4 | ||
63: TypePointer Function 62(ivec4) | ||
65(ResType): TypeStruct 16(int) 62(ivec4) | ||
69: TypeImage 57(int) Cube array nonsampled format:Rgba32ui | ||
70: TypePointer UniformConstant 69 | ||
71(uiCubeArray): 70(ptr) Variable UniformConstant | ||
76: TypePointer Output 7(fvec4) | ||
77(fragColor): 76(ptr) Variable Output | ||
4(main): 2 Function None 3 | ||
5: Label | ||
9(f4): 8(ptr) Variable Function | ||
64(u4): 63(ptr) Variable Function | ||
Store 9(f4) 11 | ||
15: 12 Load 14(i1D) | ||
19: 7(fvec4) ImageRead 15 17 Lod 18 | ||
20: 7(fvec4) Load 9(f4) | ||
21: 7(fvec4) FAdd 20 19 | ||
Store 9(f4) 21 | ||
25: 22 Load 24(i2D) | ||
29: 7(fvec4) ImageRead 25 28 Lod 18 | ||
30: 7(fvec4) Load 9(f4) | ||
31: 7(fvec4) FAdd 30 29 | ||
Store 9(f4) 31 | ||
35: 32 Load 34(i3D) | ||
41: 7(fvec4) ImageRead 35 40 Lod 18 | ||
42: 7(fvec4) Load 9(f4) | ||
43: 7(fvec4) FAdd 42 41 | ||
Store 9(f4) 43 | ||
47: 44 Load 46(iiCube) | ||
48: 7(fvec4) Load 9(f4) | ||
50: 49(ivec4) ConvertFToS 48 | ||
ImageWrite 47 40 50 Lod 18 | ||
54: 51 Load 53(ii1DArray) | ||
55: 7(fvec4) Load 9(f4) | ||
56: 49(ivec4) ConvertFToS 55 | ||
ImageWrite 54 28 56 Lod 18 | ||
61: 58 Load 60(ui2DArray) | ||
66: 65(ResType) ImageSparseRead 61 40 Lod 18 | ||
67: 62(ivec4) CompositeExtract 66 1 | ||
Store 64(u4) 67 | ||
68: 16(int) CompositeExtract 66 0 | ||
72: 69 Load 71(uiCubeArray) | ||
73: 65(ResType) ImageSparseRead 72 40 Lod 18 | ||
74: 62(ivec4) CompositeExtract 73 1 | ||
Store 64(u4) 74 | ||
75: 16(int) CompositeExtract 73 0 | ||
78: 7(fvec4) Load 9(f4) | ||
79: 62(ivec4) Load 64(u4) | ||
80: 7(fvec4) ConvertUToF 79 | ||
81: 7(fvec4) FAdd 78 80 | ||
Store 77(fragColor) 81 | ||
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,36 @@ | ||
#version 450 core | ||
|
||
#extension GL_AMD_shader_image_load_store_lod: enable | ||
|
||
layout(rgba32f, binding = 0) uniform image1D i1D; | ||
layout(rgba32f, binding = 1) uniform image2D i2D; | ||
layout(rgba32f, binding = 2) uniform image3D i3D; | ||
layout(rgba32i, binding = 3) uniform iimageCube iiCube; | ||
layout(rgba32i, binding = 4) uniform iimage1DArray ii1DArray; | ||
layout(rgba32ui, binding = 5) uniform uimage2DArray ui2DArray; | ||
layout(rgba32ui, binding = 6) uniform uimageCubeArray uiCubeArray; | ||
|
||
layout(location = 0) out vec4 fragColor; | ||
|
||
void main() | ||
{ | ||
const int c1 = 1; | ||
const ivec2 c2 = ivec2(2, 3); | ||
const ivec3 c3 = ivec3(4, 5, 6); | ||
|
||
const int lod = 3; | ||
|
||
vec4 f4 = vec4(0.0); | ||
f4 += imageLoadLodAMD(i1D, c1, lod); | ||
f4 += imageLoadLodAMD(i2D, c2, lod); | ||
f4 += imageLoadLodAMD(i3D, c3, lod); | ||
|
||
imageStoreLodAMD(iiCube, c3, lod, ivec4(f4)); | ||
imageStoreLodAMD(ii1DArray, c2, lod, ivec4(f4)); | ||
|
||
uvec4 u4; | ||
sparseImageLoadLodAMD(ui2DArray, c3, lod, u4); | ||
sparseImageLoadLodAMD(uiCubeArray, c3, lod, u4); | ||
|
||
fragColor = f4 + vec4(u4); | ||
} |
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
Oops, something went wrong.