-
Notifications
You must be signed in to change notification settings - Fork 862
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
HLSL: phase 1: add RWTexture and RWBuffer
There's a lot to do for RWTexture and RWBuffer, so it will be broken up into several PRs. This is #1. This adds RWTexture and RWBuffer support, with the following limitations: * Only 4 component formats supported * No operator[] yet Those will be added in other PRs. This PR supports declarations and the Load & GetDimensions methods. New tests are added.
- Loading branch information
steve-lunarg
committed
Oct 6, 2016
1 parent
9065ed8
commit bb0183f
Showing
14 changed files
with
2,483 additions
and
39 deletions.
There are no files selected for viewing
1,082 changes: 1,082 additions & 0 deletions
1,082
Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
Large diffs are not rendered by default.
Oops, something went wrong.
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,200 @@ | ||
hlsl.load.rwbuffer.dx10.frag | ||
Shader version: 450 | ||
gl_FragCoord origin is upper left | ||
0:? Sequence | ||
0:22 Function Definition: main( (temp structure{temp 4-component vector of float Color}) | ||
0:22 Function Parameters: | ||
0:? Sequence | ||
0:25 imageLoad (global 4-component vector of float) | ||
0:25 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) | ||
0:25 c1: direct index for structure (layout(offset=0 ) uniform int) | ||
0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) | ||
0:25 Constant: | ||
0:25 0 (const uint) | ||
0:26 imageLoad (global 4-component vector of uint) | ||
0:26 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) | ||
0:26 c1: direct index for structure (layout(offset=0 ) uniform int) | ||
0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) | ||
0:26 Constant: | ||
0:26 0 (const uint) | ||
0:27 imageLoad (global 4-component vector of int) | ||
0:27 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) | ||
0:27 c1: direct index for structure (layout(offset=0 ) uniform int) | ||
0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) | ||
0:27 Constant: | ||
0:27 0 (const uint) | ||
0:29 move second child to first child (temp 4-component vector of float) | ||
0:29 Color: direct index for structure (temp 4-component vector of float) | ||
0:29 'psout' (temp structure{temp 4-component vector of float Color}) | ||
0:29 Constant: | ||
0:29 0 (const int) | ||
0:29 Constant: | ||
0:29 1.000000 | ||
0:29 1.000000 | ||
0:29 1.000000 | ||
0:29 1.000000 | ||
0:31 Sequence | ||
0:31 Sequence | ||
0:31 move second child to first child (temp 4-component vector of float) | ||
0:? 'Color' (layout(location=0 ) out 4-component vector of float) | ||
0:31 Color: direct index for structure (temp 4-component vector of float) | ||
0:31 'psout' (temp structure{temp 4-component vector of float Color}) | ||
0:31 Constant: | ||
0:31 0 (const int) | ||
0:31 Branch: Return | ||
0:? Linker Objects | ||
0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) | ||
0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) | ||
0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) | ||
0:? 'Color' (layout(location=0 ) out 4-component vector of float) | ||
0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) | ||
|
||
|
||
Linked fragment stage: | ||
|
||
|
||
Shader version: 450 | ||
gl_FragCoord origin is upper left | ||
0:? Sequence | ||
0:22 Function Definition: main( (temp structure{temp 4-component vector of float Color}) | ||
0:22 Function Parameters: | ||
0:? Sequence | ||
0:25 imageLoad (global 4-component vector of float) | ||
0:25 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) | ||
0:25 c1: direct index for structure (layout(offset=0 ) uniform int) | ||
0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) | ||
0:25 Constant: | ||
0:25 0 (const uint) | ||
0:26 imageLoad (global 4-component vector of uint) | ||
0:26 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) | ||
0:26 c1: direct index for structure (layout(offset=0 ) uniform int) | ||
0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) | ||
0:26 Constant: | ||
0:26 0 (const uint) | ||
0:27 imageLoad (global 4-component vector of int) | ||
0:27 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) | ||
0:27 c1: direct index for structure (layout(offset=0 ) uniform int) | ||
0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) | ||
0:27 Constant: | ||
0:27 0 (const uint) | ||
0:29 move second child to first child (temp 4-component vector of float) | ||
0:29 Color: direct index for structure (temp 4-component vector of float) | ||
0:29 'psout' (temp structure{temp 4-component vector of float Color}) | ||
0:29 Constant: | ||
0:29 0 (const int) | ||
0:29 Constant: | ||
0:29 1.000000 | ||
0:29 1.000000 | ||
0:29 1.000000 | ||
0:29 1.000000 | ||
0:31 Sequence | ||
0:31 Sequence | ||
0:31 move second child to first child (temp 4-component vector of float) | ||
0:? 'Color' (layout(location=0 ) out 4-component vector of float) | ||
0:31 Color: direct index for structure (temp 4-component vector of float) | ||
0:31 'psout' (temp structure{temp 4-component vector of float Color}) | ||
0:31 Constant: | ||
0:31 0 (const int) | ||
0:31 Branch: Return | ||
0:? Linker Objects | ||
0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) | ||
0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) | ||
0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) | ||
0:? 'Color' (layout(location=0 ) out 4-component vector of float) | ||
0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) | ||
|
||
// Module Version 10000 | ||
// Generated by (magic number): 80001 | ||
// Id's are bound by 52 | ||
|
||
Capability Shader | ||
Capability SampledBuffer | ||
1: ExtInstImport "GLSL.std.450" | ||
MemoryModel Logical GLSL450 | ||
EntryPoint Fragment 4 "main" 48 | ||
ExecutionMode 4 OriginUpperLeft | ||
Name 4 "main" | ||
Name 9 "g_tBuffF" | ||
Name 15 "$Global" | ||
MemberName 15($Global) 0 "c1" | ||
MemberName 15($Global) 1 "c2" | ||
MemberName 15($Global) 2 "c3" | ||
MemberName 15($Global) 3 "c4" | ||
MemberName 15($Global) 4 "o1" | ||
MemberName 15($Global) 5 "o2" | ||
MemberName 15($Global) 6 "o3" | ||
MemberName 15($Global) 7 "o4" | ||
Name 17 "" | ||
Name 27 "g_tBuffU" | ||
Name 35 "g_tBuffI" | ||
Name 40 "PS_OUTPUT" | ||
MemberName 40(PS_OUTPUT) 0 "Color" | ||
Name 42 "psout" | ||
Name 48 "Color" | ||
Decorate 9(g_tBuffF) DescriptorSet 0 | ||
MemberDecorate 15($Global) 0 Offset 0 | ||
MemberDecorate 15($Global) 1 Offset 8 | ||
MemberDecorate 15($Global) 2 Offset 16 | ||
MemberDecorate 15($Global) 3 Offset 32 | ||
MemberDecorate 15($Global) 4 Offset 48 | ||
MemberDecorate 15($Global) 5 Offset 56 | ||
MemberDecorate 15($Global) 6 Offset 64 | ||
MemberDecorate 15($Global) 7 Offset 80 | ||
Decorate 15($Global) Block | ||
Decorate 17 DescriptorSet 0 | ||
Decorate 27(g_tBuffU) DescriptorSet 0 | ||
Decorate 35(g_tBuffI) DescriptorSet 0 | ||
Decorate 48(Color) Location 0 | ||
2: TypeVoid | ||
3: TypeFunction 2 | ||
6: TypeFloat 32 | ||
7: TypeImage 6(float) Buffer nonsampled format:Rgba32f | ||
8: TypePointer UniformConstant 7 | ||
9(g_tBuffF): 8(ptr) Variable UniformConstant | ||
11: TypeInt 32 1 | ||
12: TypeVector 11(int) 2 | ||
13: TypeVector 11(int) 3 | ||
14: TypeVector 11(int) 4 | ||
15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) | ||
16: TypePointer Uniform 15($Global) | ||
17: 16(ptr) Variable Uniform | ||
18: 11(int) Constant 0 | ||
19: TypePointer Uniform 11(int) | ||
22: TypeVector 6(float) 4 | ||
24: TypeInt 32 0 | ||
25: TypeImage 24(int) Buffer nonsampled format:Rgba32ui | ||
26: TypePointer UniformConstant 25 | ||
27(g_tBuffU): 26(ptr) Variable UniformConstant | ||
31: TypeVector 24(int) 4 | ||
33: TypeImage 11(int) Buffer nonsampled format:Rgba32i | ||
34: TypePointer UniformConstant 33 | ||
35(g_tBuffI): 34(ptr) Variable UniformConstant | ||
40(PS_OUTPUT): TypeStruct 22(fvec4) | ||
41: TypePointer Function 40(PS_OUTPUT) | ||
43: 6(float) Constant 1065353216 | ||
44: 22(fvec4) ConstantComposite 43 43 43 43 | ||
45: TypePointer Function 22(fvec4) | ||
47: TypePointer Output 22(fvec4) | ||
48(Color): 47(ptr) Variable Output | ||
4(main): 2 Function None 3 | ||
5: Label | ||
42(psout): 41(ptr) Variable Function | ||
10: 7 Load 9(g_tBuffF) | ||
20: 19(ptr) AccessChain 17 18 | ||
21: 11(int) Load 20 | ||
23: 22(fvec4) ImageRead 10 21 | ||
28: 25 Load 27(g_tBuffU) | ||
29: 19(ptr) AccessChain 17 18 | ||
30: 11(int) Load 29 | ||
32: 31(ivec4) ImageRead 28 30 | ||
36: 33 Load 35(g_tBuffI) | ||
37: 19(ptr) AccessChain 17 18 | ||
38: 11(int) Load 37 | ||
39: 14(ivec4) ImageRead 36 38 | ||
46: 45(ptr) AccessChain 42(psout) 18 | ||
Store 46 44 | ||
49: 45(ptr) AccessChain 42(psout) 18 | ||
50: 22(fvec4) Load 49 | ||
Store 48(Color) 50 | ||
Return | ||
FunctionEnd |
Oops, something went wrong.