Implement extension GL_AMD_shader_image_load_store_lod
This commit is contained in:
135
Test/baseResults/spv.imageLoadStoreLod.frag.out
Normal file
135
Test/baseResults/spv.imageLoadStoreLod.frag.out
Normal file
@@ -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
|
||||
36
Test/spv.imageLoadStoreLod.frag
Normal file
36
Test/spv.imageLoadStoreLod.frag
Normal file
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user