mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
WIP: SPV Remapper: add remapper test framework
This commit is contained in:
parent
4c3a7fd100
commit
a8456415b8
@ -98,7 +98,7 @@ options. See REMAPPING AND OPTIMIZATION OPTIONS.
|
||||
On error, the function supplied to registerErrorHandler() will be invoked.
|
||||
This can be a standard C/C++ function, a lambda function, or a functor.
|
||||
The default handler simply calls exit(5); The error handler is a static
|
||||
members, so need only be set up once, not once per spirvbin_t instance.
|
||||
member, so need only be set up once, not once per spirvbin_t instance.
|
||||
|
||||
Log messages are supplied to registerLogHandler(). By default, log
|
||||
messages are eaten silently. The log handler is also a static member.
|
||||
|
@ -3,21 +3,27 @@ set(SOURCES
|
||||
InReadableOrder.cpp
|
||||
Logger.cpp
|
||||
SpvBuilder.cpp
|
||||
SPVRemapper.cpp
|
||||
doc.cpp
|
||||
disassemble.cpp)
|
||||
|
||||
set(SPVREMAP_SOURCES
|
||||
SPVRemapper.cpp
|
||||
doc.cpp)
|
||||
|
||||
set(HEADERS
|
||||
spirv.hpp
|
||||
GLSL.std.450.h
|
||||
GlslangToSpv.h
|
||||
Logger.h
|
||||
SpvBuilder.h
|
||||
SPVRemapper.h
|
||||
spvIR.h
|
||||
doc.h
|
||||
disassemble.h)
|
||||
|
||||
set(SPVREMAP_HEADERS
|
||||
SPVRemapper.h
|
||||
doc.h)
|
||||
|
||||
if(ENABLE_AMD_EXTENSIONS)
|
||||
set(HEADERS
|
||||
GLSL.ext.AMD.h)
|
||||
@ -26,9 +32,13 @@ endif(ENABLE_AMD_EXTENSIONS)
|
||||
add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
|
||||
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
|
||||
|
||||
add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
||||
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
|
||||
|
||||
if(WIN32)
|
||||
source_group("Source" FILES ${SOURCES} ${HEADERS})
|
||||
source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
||||
endif(WIN32)
|
||||
|
||||
install(TARGETS SPIRV
|
||||
install(TARGETS SPIRV SPVRemapper
|
||||
ARCHIVE DESTINATION lib)
|
||||
|
@ -82,7 +82,7 @@ class spirvbin_t : public spirvbin_base_t
|
||||
public:
|
||||
spirvbin_t(int /*verbose = 0*/) { }
|
||||
|
||||
void remap(std::vector<unsigned int>& /*spv*/, unsigned int /*opts = 0*/)
|
||||
void remap(std::vector<std::uint32_t>& /*spv*/, unsigned int /*opts = 0*/)
|
||||
{
|
||||
printf("Tool not compiled for C++11, which is required for SPIR-V remapping.\n");
|
||||
exit(5);
|
||||
|
@ -217,10 +217,12 @@ void SpirvStream::outputIndent()
|
||||
|
||||
void SpirvStream::formatId(Id id, std::stringstream& idStream)
|
||||
{
|
||||
if (id >= bound)
|
||||
Kill(out, "Bad <id>");
|
||||
|
||||
if (id != 0) {
|
||||
// On instructions with no IDs, this is called with "0", which does not
|
||||
// have to be within ID bounds on null shaders.
|
||||
if (id >= bound)
|
||||
Kill(out, "Bad <id>");
|
||||
|
||||
idStream << id;
|
||||
if (idDescriptor[id].size() > 0)
|
||||
idStream << "(" << idDescriptor[id] << ")";
|
||||
@ -334,7 +336,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
||||
idDescriptor[resultId] = (const char*)(&stream[word]);
|
||||
}
|
||||
else {
|
||||
if (idDescriptor[resultId].size() == 0) {
|
||||
if (resultId != 0 && idDescriptor[resultId].size() == 0) {
|
||||
switch (opCode) {
|
||||
case OpTypeInt:
|
||||
idDescriptor[resultId] = "int";
|
||||
|
@ -24,6 +24,7 @@ set(LIBRARIES
|
||||
OSDependent
|
||||
HLSL
|
||||
SPIRV
|
||||
SPVRemapper
|
||||
glslang-default-resource-limits)
|
||||
|
||||
if(WIN32)
|
||||
|
40
Test/baseResults/remap.basic.dcefunc.frag.out
Normal file
40
Test/baseResults/remap.basic.dcefunc.frag.out
Normal file
@ -0,0 +1,40 @@
|
||||
remap.basic.dcefunc.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 19
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 14 16
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 9 "dead_fn("
|
||||
Name 14 "outf4"
|
||||
Name 16 "inf"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 3
|
||||
8: TypeFunction 7(fvec3)
|
||||
10: 6(float) Constant 0
|
||||
11: 7(fvec3) ConstantComposite 10 10 10
|
||||
12: TypeVector 6(float) 4
|
||||
13: TypePointer Output 12(fvec4)
|
||||
14(outf4): 13(ptr) Variable Output
|
||||
15: TypePointer Input 6(float)
|
||||
16(inf): 15(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
17: 6(float) Load 16(inf)
|
||||
18: 12(fvec4) CompositeConstruct 17 17 17 17
|
||||
Store 14(outf4) 18
|
||||
Return
|
||||
FunctionEnd
|
12
Test/baseResults/remap.basic.dcevartype.frag.out
Normal file
12
Test/baseResults/remap.basic.dcevartype.frag.out
Normal file
@ -0,0 +1,12 @@
|
||||
remap.basic.dcevartype.frag
|
||||
ERROR: #version: ES shaders for Vulkan SPIR-V require version 310 or higher
|
||||
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
31
Test/baseResults/remap.basic.everything.frag.out
Normal file
31
Test/baseResults/remap.basic.everything.frag.out
Normal file
@ -0,0 +1,31 @@
|
||||
remap.basic.everything.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 24969
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5663 "main" 4539 3773
|
||||
ExecutionMode 5663 OriginUpperLeft
|
||||
8: TypeVoid
|
||||
1282: TypeFunction 8
|
||||
13: TypeFloat 32
|
||||
29: TypeVector 13(float) 4
|
||||
666: TypePointer Output 29(fvec4)
|
||||
4539: 666(ptr) Variable Output
|
||||
650: TypePointer Input 13(float)
|
||||
3773: 650(ptr) Variable Input
|
||||
5663: 8 Function None 1282
|
||||
24968: Label
|
||||
17486: 13(float) Load 3773
|
||||
17691: 29(fvec4) CompositeConstruct 17486 17486 17486 17486
|
||||
Store 4539 17691
|
||||
Return
|
||||
FunctionEnd
|
44
Test/baseResults/remap.basic.none.frag.out
Normal file
44
Test/baseResults/remap.basic.none.frag.out
Normal file
@ -0,0 +1,44 @@
|
||||
remap.basic.none.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 20
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 15 17
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 9 "dead_fn("
|
||||
Name 15 "outf4"
|
||||
Name 17 "inf"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 3
|
||||
8: TypeFunction 7(fvec3)
|
||||
11: 6(float) Constant 0
|
||||
12: 7(fvec3) ConstantComposite 11 11 11
|
||||
13: TypeVector 6(float) 4
|
||||
14: TypePointer Output 13(fvec4)
|
||||
15(outf4): 14(ptr) Variable Output
|
||||
16: TypePointer Input 6(float)
|
||||
17(inf): 16(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
18: 6(float) Load 17(inf)
|
||||
19: 13(fvec4) CompositeConstruct 18 18 18 18
|
||||
Store 15(outf4) 19
|
||||
Return
|
||||
FunctionEnd
|
||||
9(dead_fn(): 7(fvec3) Function None 8
|
||||
10: Label
|
||||
ReturnValue 12
|
||||
FunctionEnd
|
39
Test/baseResults/remap.basic.strip.frag.out
Normal file
39
Test/baseResults/remap.basic.strip.frag.out
Normal file
@ -0,0 +1,39 @@
|
||||
remap.basic.strip.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 20
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 15 17
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 3
|
||||
8: TypeFunction 7(fvec3)
|
||||
11: 6(float) Constant 0
|
||||
12: 7(fvec3) ConstantComposite 11 11 11
|
||||
13: TypeVector 6(float) 4
|
||||
14: TypePointer Output 13(fvec4)
|
||||
15: 14(ptr) Variable Output
|
||||
16: TypePointer Input 6(float)
|
||||
17: 16(ptr) Variable Input
|
||||
4: 2 Function None 3
|
||||
5: Label
|
||||
18: 6(float) Load 17
|
||||
19: 13(fvec4) CompositeConstruct 18 18 18 18
|
||||
Store 15 19
|
||||
Return
|
||||
FunctionEnd
|
||||
9: 7(fvec3) Function None 8
|
||||
10: Label
|
||||
ReturnValue 12
|
||||
FunctionEnd
|
213
Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
Normal file
213
Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
Normal file
@ -0,0 +1,213 @@
|
||||
remap.hlsl.sample.basic.everything.frag
|
||||
WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 24916
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5663 "main"
|
||||
ExecutionMode 5663 OriginUpperLeft
|
||||
Decorate 4727 DescriptorSet 0
|
||||
Decorate 4727 Binding 0
|
||||
Decorate 3305 DescriptorSet 0
|
||||
Decorate 3305 Binding 0
|
||||
Decorate 4743 DescriptorSet 0
|
||||
Decorate 4807 DescriptorSet 0
|
||||
Decorate 5042 DescriptorSet 0
|
||||
Decorate 5058 DescriptorSet 0
|
||||
Decorate 5122 DescriptorSet 0
|
||||
Decorate 3967 DescriptorSet 0
|
||||
Decorate 3983 DescriptorSet 0
|
||||
Decorate 4047 DescriptorSet 0
|
||||
Decorate 3789 DescriptorSet 0
|
||||
Decorate 3805 DescriptorSet 0
|
||||
Decorate 3869 DescriptorSet 0
|
||||
MemberDecorate 1032 1 BuiltIn FragDepth
|
||||
8: TypeVoid
|
||||
1282: TypeFunction 8
|
||||
12: TypeInt 32 1
|
||||
1335: TypeStruct 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int)
|
||||
1972: TypePointer Function 1335(struct)
|
||||
2574: 12(int) Constant 1
|
||||
649: TypePointer Function 12(int)
|
||||
2577: 12(int) Constant 2
|
||||
2580: 12(int) Constant 3
|
||||
2583: 12(int) Constant 4
|
||||
2586: 12(int) Constant 5
|
||||
2589: 12(int) Constant 6
|
||||
2571: 12(int) Constant 0
|
||||
2592: 12(int) Constant 7
|
||||
2595: 12(int) Constant 8
|
||||
2598: 12(int) Constant 9
|
||||
2601: 12(int) Constant 10
|
||||
2604: 12(int) Constant 11
|
||||
13: TypeFloat 32
|
||||
29: TypeVector 13(float) 4
|
||||
666: TypePointer Function 29(fvec4)
|
||||
149: TypeImage 13(float) 1D sampled format:Unknown
|
||||
786: TypePointer UniformConstant 149
|
||||
4727: 786(ptr) Variable UniformConstant
|
||||
508: TypeSampler
|
||||
1145: TypePointer UniformConstant 508
|
||||
3305: 1145(ptr) Variable UniformConstant
|
||||
510: TypeSampledImage 149
|
||||
2935: 13(float) Constant 1036831949
|
||||
26: TypeVector 12(int) 4
|
||||
148: TypeImage 12(int) 1D sampled format:Unknown
|
||||
785: TypePointer UniformConstant 148
|
||||
4743: 785(ptr) Variable UniformConstant
|
||||
511: TypeSampledImage 148
|
||||
2821: 13(float) Constant 1045220557
|
||||
11: TypeInt 32 0
|
||||
23: TypeVector 11(int) 4
|
||||
147: TypeImage 11(int) 1D sampled format:Unknown
|
||||
784: TypePointer UniformConstant 147
|
||||
4807: 784(ptr) Variable UniformConstant
|
||||
512: TypeSampledImage 147
|
||||
2151: 13(float) Constant 1050253722
|
||||
150: TypeImage 13(float) 2D sampled format:Unknown
|
||||
787: TypePointer UniformConstant 150
|
||||
5042: 787(ptr) Variable UniformConstant
|
||||
513: TypeSampledImage 150
|
||||
19: TypeVector 13(float) 2
|
||||
1825: 19(fvec2) ConstantComposite 2935 2821
|
||||
151: TypeImage 12(int) 2D sampled format:Unknown
|
||||
788: TypePointer UniformConstant 151
|
||||
5058: 788(ptr) Variable UniformConstant
|
||||
514: TypeSampledImage 151
|
||||
2707: 13(float) Constant 1053609165
|
||||
2028: 19(fvec2) ConstantComposite 2151 2707
|
||||
152: TypeImage 11(int) 2D sampled format:Unknown
|
||||
789: TypePointer UniformConstant 152
|
||||
5122: 789(ptr) Variable UniformConstant
|
||||
515: TypeSampledImage 152
|
||||
252: 13(float) Constant 1056964608
|
||||
2037: 13(float) Constant 1058642330
|
||||
2684: 19(fvec2) ConstantComposite 252 2037
|
||||
153: TypeImage 13(float) 3D sampled format:Unknown
|
||||
790: TypePointer UniformConstant 153
|
||||
3967: 790(ptr) Variable UniformConstant
|
||||
516: TypeSampledImage 153
|
||||
24: TypeVector 13(float) 3
|
||||
1660: 24(fvec3) ConstantComposite 2935 2821 2151
|
||||
154: TypeImage 12(int) 3D sampled format:Unknown
|
||||
791: TypePointer UniformConstant 154
|
||||
3983: 791(ptr) Variable UniformConstant
|
||||
517: TypeSampledImage 154
|
||||
2174: 24(fvec3) ConstantComposite 2707 252 2037
|
||||
155: TypeImage 11(int) 3D sampled format:Unknown
|
||||
792: TypePointer UniformConstant 155
|
||||
4047: 792(ptr) Variable UniformConstant
|
||||
518: TypeSampledImage 155
|
||||
808: 13(float) Constant 1060320051
|
||||
2593: 13(float) Constant 1061997773
|
||||
1364: 13(float) Constant 1063675494
|
||||
2476: 24(fvec3) ConstantComposite 808 2593 1364
|
||||
156: TypeImage 13(float) Cube sampled format:Unknown
|
||||
793: TypePointer UniformConstant 156
|
||||
3789: 793(ptr) Variable UniformConstant
|
||||
519: TypeSampledImage 156
|
||||
157: TypeImage 12(int) Cube sampled format:Unknown
|
||||
794: TypePointer UniformConstant 157
|
||||
3805: 794(ptr) Variable UniformConstant
|
||||
520: TypeSampledImage 157
|
||||
158: TypeImage 11(int) Cube sampled format:Unknown
|
||||
795: TypePointer UniformConstant 158
|
||||
3869: 795(ptr) Variable UniformConstant
|
||||
521: TypeSampledImage 158
|
||||
1032: TypeStruct 29(fvec4) 13(float)
|
||||
1669: TypePointer Function 1032(struct)
|
||||
138: 13(float) Constant 1065353216
|
||||
1284: 29(fvec4) ConstantComposite 138 138 138 138
|
||||
650: TypePointer Function 13(float)
|
||||
5663: 8 Function None 1282
|
||||
24915: Label
|
||||
5830: 1972(ptr) Variable Function
|
||||
5072: 1669(ptr) Variable Function
|
||||
22097: 649(ptr) AccessChain 5830 2574
|
||||
Store 22097 2574
|
||||
19732: 649(ptr) AccessChain 5830 2577
|
||||
Store 19732 2574
|
||||
19733: 649(ptr) AccessChain 5830 2580
|
||||
Store 19733 2574
|
||||
19734: 649(ptr) AccessChain 5830 2583
|
||||
Store 19734 2574
|
||||
19735: 649(ptr) AccessChain 5830 2586
|
||||
Store 19735 2574
|
||||
19736: 649(ptr) AccessChain 5830 2589
|
||||
Store 19736 2574
|
||||
19737: 649(ptr) AccessChain 5830 2571
|
||||
Store 19737 2574
|
||||
19738: 649(ptr) AccessChain 5830 2592
|
||||
Store 19738 2574
|
||||
19739: 649(ptr) AccessChain 5830 2595
|
||||
Store 19739 2574
|
||||
19740: 649(ptr) AccessChain 5830 2598
|
||||
Store 19740 2574
|
||||
19741: 649(ptr) AccessChain 5830 2601
|
||||
Store 19741 2574
|
||||
19656: 649(ptr) AccessChain 5830 2604
|
||||
Store 19656 2574
|
||||
14934: 149 Load 4727
|
||||
11686: 508 Load 3305
|
||||
11940: 510 SampledImage 14934 11686
|
||||
7877: 29(fvec4) ImageSampleImplicitLod 11940 2935
|
||||
15360: 148 Load 4743
|
||||
15706: 508 Load 3305
|
||||
11941: 511 SampledImage 15360 15706
|
||||
7878: 26(ivec4) ImageSampleImplicitLod 11941 2821
|
||||
15361: 147 Load 4807
|
||||
15707: 508 Load 3305
|
||||
11942: 512 SampledImage 15361 15707
|
||||
7879: 23(ivec4) ImageSampleImplicitLod 11942 2151
|
||||
15362: 150 Load 5042
|
||||
15708: 508 Load 3305
|
||||
11943: 513 SampledImage 15362 15708
|
||||
7880: 29(fvec4) ImageSampleImplicitLod 11943 1825
|
||||
15363: 151 Load 5058
|
||||
15709: 508 Load 3305
|
||||
11944: 514 SampledImage 15363 15709
|
||||
7881: 26(ivec4) ImageSampleImplicitLod 11944 2028
|
||||
15364: 152 Load 5122
|
||||
15710: 508 Load 3305
|
||||
11945: 515 SampledImage 15364 15710
|
||||
7882: 23(ivec4) ImageSampleImplicitLod 11945 2684
|
||||
15365: 153 Load 3967
|
||||
15711: 508 Load 3305
|
||||
11946: 516 SampledImage 15365 15711
|
||||
7883: 29(fvec4) ImageSampleImplicitLod 11946 1660
|
||||
15366: 154 Load 3983
|
||||
15712: 508 Load 3305
|
||||
11947: 517 SampledImage 15366 15712
|
||||
7884: 26(ivec4) ImageSampleImplicitLod 11947 2174
|
||||
15367: 155 Load 4047
|
||||
15713: 508 Load 3305
|
||||
11948: 518 SampledImage 15367 15713
|
||||
7885: 23(ivec4) ImageSampleImplicitLod 11948 2476
|
||||
15368: 156 Load 3789
|
||||
15714: 508 Load 3305
|
||||
11949: 519 SampledImage 15368 15714
|
||||
7886: 29(fvec4) ImageSampleImplicitLod 11949 1660
|
||||
15369: 157 Load 3805
|
||||
15715: 508 Load 3305
|
||||
11950: 520 SampledImage 15369 15715
|
||||
7887: 26(ivec4) ImageSampleImplicitLod 11950 2174
|
||||
15370: 158 Load 3869
|
||||
15716: 508 Load 3305
|
||||
12016: 521 SampledImage 15370 15716
|
||||
7204: 23(ivec4) ImageSampleImplicitLod 12016 2476
|
||||
20158: 666(ptr) AccessChain 5072 2571
|
||||
Store 20158 1284
|
||||
19657: 650(ptr) AccessChain 5072 2574
|
||||
Store 19657 138
|
||||
21536:1032(struct) Load 5072
|
||||
ReturnValue 21536
|
||||
FunctionEnd
|
293
Test/baseResults/remap.hlsl.sample.basic.none.frag.out
Normal file
293
Test/baseResults/remap.hlsl.sample.basic.none.frag.out
Normal file
@ -0,0 +1,293 @@
|
||||
remap.hlsl.sample.basic.none.frag
|
||||
WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 183
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 7 "MemberTest"
|
||||
MemberName 7(MemberTest) 0 "Sample"
|
||||
MemberName 7(MemberTest) 1 "CalculateLevelOfDetail"
|
||||
MemberName 7(MemberTest) 2 "CalculateLevelOfDetailUnclamped"
|
||||
MemberName 7(MemberTest) 3 "Gather"
|
||||
MemberName 7(MemberTest) 4 "GetDimensions"
|
||||
MemberName 7(MemberTest) 5 "GetSamplePosition"
|
||||
MemberName 7(MemberTest) 6 "Load"
|
||||
MemberName 7(MemberTest) 7 "SampleBias"
|
||||
MemberName 7(MemberTest) 8 "SampleCmp"
|
||||
MemberName 7(MemberTest) 9 "SampleCmpLevelZero"
|
||||
MemberName 7(MemberTest) 10 "SampleGrad"
|
||||
MemberName 7(MemberTest) 11 "SampleLevel"
|
||||
Name 9 "mtest"
|
||||
Name 38 "txval10"
|
||||
Name 41 "g_tTex1df4"
|
||||
Name 45 "g_sSamp"
|
||||
Name 53 "txval11"
|
||||
Name 56 "g_tTex1di4"
|
||||
Name 66 "txval12"
|
||||
Name 69 "g_tTex1du4"
|
||||
Name 76 "txval20"
|
||||
Name 79 "g_tTex2df4"
|
||||
Name 87 "txval21"
|
||||
Name 90 "g_tTex2di4"
|
||||
Name 98 "txval22"
|
||||
Name 101 "g_tTex2du4"
|
||||
Name 110 "txval30"
|
||||
Name 113 "g_tTex3df4"
|
||||
Name 121 "txval31"
|
||||
Name 124 "g_tTex3di4"
|
||||
Name 131 "txval32"
|
||||
Name 134 "g_tTex3du4"
|
||||
Name 144 "txval40"
|
||||
Name 147 "g_tTexcdf4"
|
||||
Name 153 "txval41"
|
||||
Name 156 "g_tTexcdi4"
|
||||
Name 162 "txval42"
|
||||
Name 165 "g_tTexcdu4"
|
||||
Name 171 "PS_OUTPUT"
|
||||
MemberName 171(PS_OUTPUT) 0 "Color"
|
||||
MemberName 171(PS_OUTPUT) 1 "Depth"
|
||||
Name 173 "psout"
|
||||
Name 180 "g_sSamp2d"
|
||||
Name 181 "g_sSamp2D_b"
|
||||
Name 182 "g_tTex1df4a"
|
||||
Decorate 41(g_tTex1df4) DescriptorSet 0
|
||||
Decorate 41(g_tTex1df4) Binding 0
|
||||
Decorate 45(g_sSamp) DescriptorSet 0
|
||||
Decorate 45(g_sSamp) Binding 0
|
||||
Decorate 56(g_tTex1di4) DescriptorSet 0
|
||||
Decorate 69(g_tTex1du4) DescriptorSet 0
|
||||
Decorate 79(g_tTex2df4) DescriptorSet 0
|
||||
Decorate 90(g_tTex2di4) DescriptorSet 0
|
||||
Decorate 101(g_tTex2du4) DescriptorSet 0
|
||||
Decorate 113(g_tTex3df4) DescriptorSet 0
|
||||
Decorate 124(g_tTex3di4) DescriptorSet 0
|
||||
Decorate 134(g_tTex3du4) DescriptorSet 0
|
||||
Decorate 147(g_tTexcdf4) DescriptorSet 0
|
||||
Decorate 156(g_tTexcdi4) DescriptorSet 0
|
||||
Decorate 165(g_tTexcdu4) DescriptorSet 0
|
||||
MemberDecorate 171(PS_OUTPUT) 1 BuiltIn FragDepth
|
||||
Decorate 180(g_sSamp2d) DescriptorSet 0
|
||||
Decorate 181(g_sSamp2D_b) DescriptorSet 0
|
||||
Decorate 182(g_tTex1df4a) DescriptorSet 0
|
||||
Decorate 182(g_tTex1df4a) Binding 1
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7(MemberTest): TypeStruct 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int)
|
||||
8: TypePointer Function 7(MemberTest)
|
||||
10: 6(int) Constant 1
|
||||
11: TypePointer Function 6(int)
|
||||
13: 6(int) Constant 2
|
||||
15: 6(int) Constant 3
|
||||
17: 6(int) Constant 4
|
||||
19: 6(int) Constant 5
|
||||
21: 6(int) Constant 6
|
||||
23: 6(int) Constant 0
|
||||
25: 6(int) Constant 7
|
||||
27: 6(int) Constant 8
|
||||
29: 6(int) Constant 9
|
||||
31: 6(int) Constant 10
|
||||
33: 6(int) Constant 11
|
||||
35: TypeFloat 32
|
||||
36: TypeVector 35(float) 4
|
||||
37: TypePointer Function 36(fvec4)
|
||||
39: TypeImage 35(float) 1D sampled format:Unknown
|
||||
40: TypePointer UniformConstant 39
|
||||
41(g_tTex1df4): 40(ptr) Variable UniformConstant
|
||||
43: TypeSampler
|
||||
44: TypePointer UniformConstant 43
|
||||
45(g_sSamp): 44(ptr) Variable UniformConstant
|
||||
47: TypeSampledImage 39
|
||||
49: 35(float) Constant 1036831949
|
||||
51: TypeVector 6(int) 4
|
||||
52: TypePointer Function 51(ivec4)
|
||||
54: TypeImage 6(int) 1D sampled format:Unknown
|
||||
55: TypePointer UniformConstant 54
|
||||
56(g_tTex1di4): 55(ptr) Variable UniformConstant
|
||||
59: TypeSampledImage 54
|
||||
61: 35(float) Constant 1045220557
|
||||
63: TypeInt 32 0
|
||||
64: TypeVector 63(int) 4
|
||||
65: TypePointer Function 64(ivec4)
|
||||
67: TypeImage 63(int) 1D sampled format:Unknown
|
||||
68: TypePointer UniformConstant 67
|
||||
69(g_tTex1du4): 68(ptr) Variable UniformConstant
|
||||
72: TypeSampledImage 67
|
||||
74: 35(float) Constant 1050253722
|
||||
77: TypeImage 35(float) 2D sampled format:Unknown
|
||||
78: TypePointer UniformConstant 77
|
||||
79(g_tTex2df4): 78(ptr) Variable UniformConstant
|
||||
82: TypeSampledImage 77
|
||||
84: TypeVector 35(float) 2
|
||||
85: 84(fvec2) ConstantComposite 49 61
|
||||
88: TypeImage 6(int) 2D sampled format:Unknown
|
||||
89: TypePointer UniformConstant 88
|
||||
90(g_tTex2di4): 89(ptr) Variable UniformConstant
|
||||
93: TypeSampledImage 88
|
||||
95: 35(float) Constant 1053609165
|
||||
96: 84(fvec2) ConstantComposite 74 95
|
||||
99: TypeImage 63(int) 2D sampled format:Unknown
|
||||
100: TypePointer UniformConstant 99
|
||||
101(g_tTex2du4): 100(ptr) Variable UniformConstant
|
||||
104: TypeSampledImage 99
|
||||
106: 35(float) Constant 1056964608
|
||||
107: 35(float) Constant 1058642330
|
||||
108: 84(fvec2) ConstantComposite 106 107
|
||||
111: TypeImage 35(float) 3D sampled format:Unknown
|
||||
112: TypePointer UniformConstant 111
|
||||
113(g_tTex3df4): 112(ptr) Variable UniformConstant
|
||||
116: TypeSampledImage 111
|
||||
118: TypeVector 35(float) 3
|
||||
119: 118(fvec3) ConstantComposite 49 61 74
|
||||
122: TypeImage 6(int) 3D sampled format:Unknown
|
||||
123: TypePointer UniformConstant 122
|
||||
124(g_tTex3di4): 123(ptr) Variable UniformConstant
|
||||
127: TypeSampledImage 122
|
||||
129: 118(fvec3) ConstantComposite 95 106 107
|
||||
132: TypeImage 63(int) 3D sampled format:Unknown
|
||||
133: TypePointer UniformConstant 132
|
||||
134(g_tTex3du4): 133(ptr) Variable UniformConstant
|
||||
137: TypeSampledImage 132
|
||||
139: 35(float) Constant 1060320051
|
||||
140: 35(float) Constant 1061997773
|
||||
141: 35(float) Constant 1063675494
|
||||
142: 118(fvec3) ConstantComposite 139 140 141
|
||||
145: TypeImage 35(float) Cube sampled format:Unknown
|
||||
146: TypePointer UniformConstant 145
|
||||
147(g_tTexcdf4): 146(ptr) Variable UniformConstant
|
||||
150: TypeSampledImage 145
|
||||
154: TypeImage 6(int) Cube sampled format:Unknown
|
||||
155: TypePointer UniformConstant 154
|
||||
156(g_tTexcdi4): 155(ptr) Variable UniformConstant
|
||||
159: TypeSampledImage 154
|
||||
163: TypeImage 63(int) Cube sampled format:Unknown
|
||||
164: TypePointer UniformConstant 163
|
||||
165(g_tTexcdu4): 164(ptr) Variable UniformConstant
|
||||
168: TypeSampledImage 163
|
||||
171(PS_OUTPUT): TypeStruct 36(fvec4) 35(float)
|
||||
172: TypePointer Function 171(PS_OUTPUT)
|
||||
174: 35(float) Constant 1065353216
|
||||
175: 36(fvec4) ConstantComposite 174 174 174 174
|
||||
177: TypePointer Function 35(float)
|
||||
180(g_sSamp2d): 44(ptr) Variable UniformConstant
|
||||
181(g_sSamp2D_b): 44(ptr) Variable UniformConstant
|
||||
182(g_tTex1df4a): 40(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(mtest): 8(ptr) Variable Function
|
||||
38(txval10): 37(ptr) Variable Function
|
||||
53(txval11): 52(ptr) Variable Function
|
||||
66(txval12): 65(ptr) Variable Function
|
||||
76(txval20): 37(ptr) Variable Function
|
||||
87(txval21): 52(ptr) Variable Function
|
||||
98(txval22): 65(ptr) Variable Function
|
||||
110(txval30): 37(ptr) Variable Function
|
||||
121(txval31): 52(ptr) Variable Function
|
||||
131(txval32): 65(ptr) Variable Function
|
||||
144(txval40): 37(ptr) Variable Function
|
||||
153(txval41): 52(ptr) Variable Function
|
||||
162(txval42): 65(ptr) Variable Function
|
||||
173(psout): 172(ptr) Variable Function
|
||||
12: 11(ptr) AccessChain 9(mtest) 10
|
||||
Store 12 10
|
||||
14: 11(ptr) AccessChain 9(mtest) 13
|
||||
Store 14 10
|
||||
16: 11(ptr) AccessChain 9(mtest) 15
|
||||
Store 16 10
|
||||
18: 11(ptr) AccessChain 9(mtest) 17
|
||||
Store 18 10
|
||||
20: 11(ptr) AccessChain 9(mtest) 19
|
||||
Store 20 10
|
||||
22: 11(ptr) AccessChain 9(mtest) 21
|
||||
Store 22 10
|
||||
24: 11(ptr) AccessChain 9(mtest) 23
|
||||
Store 24 10
|
||||
26: 11(ptr) AccessChain 9(mtest) 25
|
||||
Store 26 10
|
||||
28: 11(ptr) AccessChain 9(mtest) 27
|
||||
Store 28 10
|
||||
30: 11(ptr) AccessChain 9(mtest) 29
|
||||
Store 30 10
|
||||
32: 11(ptr) AccessChain 9(mtest) 31
|
||||
Store 32 10
|
||||
34: 11(ptr) AccessChain 9(mtest) 33
|
||||
Store 34 10
|
||||
42: 39 Load 41(g_tTex1df4)
|
||||
46: 43 Load 45(g_sSamp)
|
||||
48: 47 SampledImage 42 46
|
||||
50: 36(fvec4) ImageSampleImplicitLod 48 49
|
||||
Store 38(txval10) 50
|
||||
57: 54 Load 56(g_tTex1di4)
|
||||
58: 43 Load 45(g_sSamp)
|
||||
60: 59 SampledImage 57 58
|
||||
62: 51(ivec4) ImageSampleImplicitLod 60 61
|
||||
Store 53(txval11) 62
|
||||
70: 67 Load 69(g_tTex1du4)
|
||||
71: 43 Load 45(g_sSamp)
|
||||
73: 72 SampledImage 70 71
|
||||
75: 64(ivec4) ImageSampleImplicitLod 73 74
|
||||
Store 66(txval12) 75
|
||||
80: 77 Load 79(g_tTex2df4)
|
||||
81: 43 Load 45(g_sSamp)
|
||||
83: 82 SampledImage 80 81
|
||||
86: 36(fvec4) ImageSampleImplicitLod 83 85
|
||||
Store 76(txval20) 86
|
||||
91: 88 Load 90(g_tTex2di4)
|
||||
92: 43 Load 45(g_sSamp)
|
||||
94: 93 SampledImage 91 92
|
||||
97: 51(ivec4) ImageSampleImplicitLod 94 96
|
||||
Store 87(txval21) 97
|
||||
102: 99 Load 101(g_tTex2du4)
|
||||
103: 43 Load 45(g_sSamp)
|
||||
105: 104 SampledImage 102 103
|
||||
109: 64(ivec4) ImageSampleImplicitLod 105 108
|
||||
Store 98(txval22) 109
|
||||
114: 111 Load 113(g_tTex3df4)
|
||||
115: 43 Load 45(g_sSamp)
|
||||
117: 116 SampledImage 114 115
|
||||
120: 36(fvec4) ImageSampleImplicitLod 117 119
|
||||
Store 110(txval30) 120
|
||||
125: 122 Load 124(g_tTex3di4)
|
||||
126: 43 Load 45(g_sSamp)
|
||||
128: 127 SampledImage 125 126
|
||||
130: 51(ivec4) ImageSampleImplicitLod 128 129
|
||||
Store 121(txval31) 130
|
||||
135: 132 Load 134(g_tTex3du4)
|
||||
136: 43 Load 45(g_sSamp)
|
||||
138: 137 SampledImage 135 136
|
||||
143: 64(ivec4) ImageSampleImplicitLod 138 142
|
||||
Store 131(txval32) 143
|
||||
148: 145 Load 147(g_tTexcdf4)
|
||||
149: 43 Load 45(g_sSamp)
|
||||
151: 150 SampledImage 148 149
|
||||
152: 36(fvec4) ImageSampleImplicitLod 151 119
|
||||
Store 144(txval40) 152
|
||||
157: 154 Load 156(g_tTexcdi4)
|
||||
158: 43 Load 45(g_sSamp)
|
||||
160: 159 SampledImage 157 158
|
||||
161: 51(ivec4) ImageSampleImplicitLod 160 129
|
||||
Store 153(txval41) 161
|
||||
166: 163 Load 165(g_tTexcdu4)
|
||||
167: 43 Load 45(g_sSamp)
|
||||
169: 168 SampledImage 166 167
|
||||
170: 64(ivec4) ImageSampleImplicitLod 169 142
|
||||
Store 162(txval42) 170
|
||||
176: 37(ptr) AccessChain 173(psout) 23
|
||||
Store 176 175
|
||||
178: 177(ptr) AccessChain 173(psout) 10
|
||||
Store 178 174
|
||||
179:171(PS_OUTPUT) Load 173(psout)
|
||||
ReturnValue 179
|
||||
FunctionEnd
|
246
Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
Normal file
246
Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
Normal file
@ -0,0 +1,246 @@
|
||||
remap.hlsl.sample.basic.strip.frag
|
||||
WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 183
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Decorate 41 DescriptorSet 0
|
||||
Decorate 41 Binding 0
|
||||
Decorate 45 DescriptorSet 0
|
||||
Decorate 45 Binding 0
|
||||
Decorate 56 DescriptorSet 0
|
||||
Decorate 69 DescriptorSet 0
|
||||
Decorate 79 DescriptorSet 0
|
||||
Decorate 90 DescriptorSet 0
|
||||
Decorate 101 DescriptorSet 0
|
||||
Decorate 113 DescriptorSet 0
|
||||
Decorate 124 DescriptorSet 0
|
||||
Decorate 134 DescriptorSet 0
|
||||
Decorate 147 DescriptorSet 0
|
||||
Decorate 156 DescriptorSet 0
|
||||
Decorate 165 DescriptorSet 0
|
||||
MemberDecorate 171 1 BuiltIn FragDepth
|
||||
Decorate 180 DescriptorSet 0
|
||||
Decorate 181 DescriptorSet 0
|
||||
Decorate 182 DescriptorSet 0
|
||||
Decorate 182 Binding 1
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7: TypeStruct 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int)
|
||||
8: TypePointer Function 7(struct)
|
||||
10: 6(int) Constant 1
|
||||
11: TypePointer Function 6(int)
|
||||
13: 6(int) Constant 2
|
||||
15: 6(int) Constant 3
|
||||
17: 6(int) Constant 4
|
||||
19: 6(int) Constant 5
|
||||
21: 6(int) Constant 6
|
||||
23: 6(int) Constant 0
|
||||
25: 6(int) Constant 7
|
||||
27: 6(int) Constant 8
|
||||
29: 6(int) Constant 9
|
||||
31: 6(int) Constant 10
|
||||
33: 6(int) Constant 11
|
||||
35: TypeFloat 32
|
||||
36: TypeVector 35(float) 4
|
||||
37: TypePointer Function 36(fvec4)
|
||||
39: TypeImage 35(float) 1D sampled format:Unknown
|
||||
40: TypePointer UniformConstant 39
|
||||
41: 40(ptr) Variable UniformConstant
|
||||
43: TypeSampler
|
||||
44: TypePointer UniformConstant 43
|
||||
45: 44(ptr) Variable UniformConstant
|
||||
47: TypeSampledImage 39
|
||||
49: 35(float) Constant 1036831949
|
||||
51: TypeVector 6(int) 4
|
||||
52: TypePointer Function 51(ivec4)
|
||||
54: TypeImage 6(int) 1D sampled format:Unknown
|
||||
55: TypePointer UniformConstant 54
|
||||
56: 55(ptr) Variable UniformConstant
|
||||
59: TypeSampledImage 54
|
||||
61: 35(float) Constant 1045220557
|
||||
63: TypeInt 32 0
|
||||
64: TypeVector 63(int) 4
|
||||
65: TypePointer Function 64(ivec4)
|
||||
67: TypeImage 63(int) 1D sampled format:Unknown
|
||||
68: TypePointer UniformConstant 67
|
||||
69: 68(ptr) Variable UniformConstant
|
||||
72: TypeSampledImage 67
|
||||
74: 35(float) Constant 1050253722
|
||||
77: TypeImage 35(float) 2D sampled format:Unknown
|
||||
78: TypePointer UniformConstant 77
|
||||
79: 78(ptr) Variable UniformConstant
|
||||
82: TypeSampledImage 77
|
||||
84: TypeVector 35(float) 2
|
||||
85: 84(fvec2) ConstantComposite 49 61
|
||||
88: TypeImage 6(int) 2D sampled format:Unknown
|
||||
89: TypePointer UniformConstant 88
|
||||
90: 89(ptr) Variable UniformConstant
|
||||
93: TypeSampledImage 88
|
||||
95: 35(float) Constant 1053609165
|
||||
96: 84(fvec2) ConstantComposite 74 95
|
||||
99: TypeImage 63(int) 2D sampled format:Unknown
|
||||
100: TypePointer UniformConstant 99
|
||||
101: 100(ptr) Variable UniformConstant
|
||||
104: TypeSampledImage 99
|
||||
106: 35(float) Constant 1056964608
|
||||
107: 35(float) Constant 1058642330
|
||||
108: 84(fvec2) ConstantComposite 106 107
|
||||
111: TypeImage 35(float) 3D sampled format:Unknown
|
||||
112: TypePointer UniformConstant 111
|
||||
113: 112(ptr) Variable UniformConstant
|
||||
116: TypeSampledImage 111
|
||||
118: TypeVector 35(float) 3
|
||||
119: 118(fvec3) ConstantComposite 49 61 74
|
||||
122: TypeImage 6(int) 3D sampled format:Unknown
|
||||
123: TypePointer UniformConstant 122
|
||||
124: 123(ptr) Variable UniformConstant
|
||||
127: TypeSampledImage 122
|
||||
129: 118(fvec3) ConstantComposite 95 106 107
|
||||
132: TypeImage 63(int) 3D sampled format:Unknown
|
||||
133: TypePointer UniformConstant 132
|
||||
134: 133(ptr) Variable UniformConstant
|
||||
137: TypeSampledImage 132
|
||||
139: 35(float) Constant 1060320051
|
||||
140: 35(float) Constant 1061997773
|
||||
141: 35(float) Constant 1063675494
|
||||
142: 118(fvec3) ConstantComposite 139 140 141
|
||||
145: TypeImage 35(float) Cube sampled format:Unknown
|
||||
146: TypePointer UniformConstant 145
|
||||
147: 146(ptr) Variable UniformConstant
|
||||
150: TypeSampledImage 145
|
||||
154: TypeImage 6(int) Cube sampled format:Unknown
|
||||
155: TypePointer UniformConstant 154
|
||||
156: 155(ptr) Variable UniformConstant
|
||||
159: TypeSampledImage 154
|
||||
163: TypeImage 63(int) Cube sampled format:Unknown
|
||||
164: TypePointer UniformConstant 163
|
||||
165: 164(ptr) Variable UniformConstant
|
||||
168: TypeSampledImage 163
|
||||
171: TypeStruct 36(fvec4) 35(float)
|
||||
172: TypePointer Function 171(struct)
|
||||
174: 35(float) Constant 1065353216
|
||||
175: 36(fvec4) ConstantComposite 174 174 174 174
|
||||
177: TypePointer Function 35(float)
|
||||
180: 44(ptr) Variable UniformConstant
|
||||
181: 44(ptr) Variable UniformConstant
|
||||
182: 40(ptr) Variable UniformConstant
|
||||
4: 2 Function None 3
|
||||
5: Label
|
||||
9: 8(ptr) Variable Function
|
||||
38: 37(ptr) Variable Function
|
||||
53: 52(ptr) Variable Function
|
||||
66: 65(ptr) Variable Function
|
||||
76: 37(ptr) Variable Function
|
||||
87: 52(ptr) Variable Function
|
||||
98: 65(ptr) Variable Function
|
||||
110: 37(ptr) Variable Function
|
||||
121: 52(ptr) Variable Function
|
||||
131: 65(ptr) Variable Function
|
||||
144: 37(ptr) Variable Function
|
||||
153: 52(ptr) Variable Function
|
||||
162: 65(ptr) Variable Function
|
||||
173: 172(ptr) Variable Function
|
||||
12: 11(ptr) AccessChain 9 10
|
||||
Store 12 10
|
||||
14: 11(ptr) AccessChain 9 13
|
||||
Store 14 10
|
||||
16: 11(ptr) AccessChain 9 15
|
||||
Store 16 10
|
||||
18: 11(ptr) AccessChain 9 17
|
||||
Store 18 10
|
||||
20: 11(ptr) AccessChain 9 19
|
||||
Store 20 10
|
||||
22: 11(ptr) AccessChain 9 21
|
||||
Store 22 10
|
||||
24: 11(ptr) AccessChain 9 23
|
||||
Store 24 10
|
||||
26: 11(ptr) AccessChain 9 25
|
||||
Store 26 10
|
||||
28: 11(ptr) AccessChain 9 27
|
||||
Store 28 10
|
||||
30: 11(ptr) AccessChain 9 29
|
||||
Store 30 10
|
||||
32: 11(ptr) AccessChain 9 31
|
||||
Store 32 10
|
||||
34: 11(ptr) AccessChain 9 33
|
||||
Store 34 10
|
||||
42: 39 Load 41
|
||||
46: 43 Load 45
|
||||
48: 47 SampledImage 42 46
|
||||
50: 36(fvec4) ImageSampleImplicitLod 48 49
|
||||
Store 38 50
|
||||
57: 54 Load 56
|
||||
58: 43 Load 45
|
||||
60: 59 SampledImage 57 58
|
||||
62: 51(ivec4) ImageSampleImplicitLod 60 61
|
||||
Store 53 62
|
||||
70: 67 Load 69
|
||||
71: 43 Load 45
|
||||
73: 72 SampledImage 70 71
|
||||
75: 64(ivec4) ImageSampleImplicitLod 73 74
|
||||
Store 66 75
|
||||
80: 77 Load 79
|
||||
81: 43 Load 45
|
||||
83: 82 SampledImage 80 81
|
||||
86: 36(fvec4) ImageSampleImplicitLod 83 85
|
||||
Store 76 86
|
||||
91: 88 Load 90
|
||||
92: 43 Load 45
|
||||
94: 93 SampledImage 91 92
|
||||
97: 51(ivec4) ImageSampleImplicitLod 94 96
|
||||
Store 87 97
|
||||
102: 99 Load 101
|
||||
103: 43 Load 45
|
||||
105: 104 SampledImage 102 103
|
||||
109: 64(ivec4) ImageSampleImplicitLod 105 108
|
||||
Store 98 109
|
||||
114: 111 Load 113
|
||||
115: 43 Load 45
|
||||
117: 116 SampledImage 114 115
|
||||
120: 36(fvec4) ImageSampleImplicitLod 117 119
|
||||
Store 110 120
|
||||
125: 122 Load 124
|
||||
126: 43 Load 45
|
||||
128: 127 SampledImage 125 126
|
||||
130: 51(ivec4) ImageSampleImplicitLod 128 129
|
||||
Store 121 130
|
||||
135: 132 Load 134
|
||||
136: 43 Load 45
|
||||
138: 137 SampledImage 135 136
|
||||
143: 64(ivec4) ImageSampleImplicitLod 138 142
|
||||
Store 131 143
|
||||
148: 145 Load 147
|
||||
149: 43 Load 45
|
||||
151: 150 SampledImage 148 149
|
||||
152: 36(fvec4) ImageSampleImplicitLod 151 119
|
||||
Store 144 152
|
||||
157: 154 Load 156
|
||||
158: 43 Load 45
|
||||
160: 159 SampledImage 157 158
|
||||
161: 51(ivec4) ImageSampleImplicitLod 160 129
|
||||
Store 153 161
|
||||
166: 163 Load 165
|
||||
167: 43 Load 45
|
||||
169: 168 SampledImage 166 167
|
||||
170: 64(ivec4) ImageSampleImplicitLod 169 142
|
||||
Store 162 170
|
||||
176: 37(ptr) AccessChain 173 23
|
||||
Store 176 175
|
||||
178: 177(ptr) AccessChain 173 10
|
||||
Store 178 174
|
||||
179: 171(struct) Load 173
|
||||
ReturnValue 179
|
||||
FunctionEnd
|
@ -0,0 +1,23 @@
|
||||
remap.hlsl.templatetypes.everything.frag
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 16123
|
||||
|
||||
Capability Shader
|
||||
Capability Float64
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5663 "main"
|
||||
ExecutionMode 5663 OriginUpperLeft
|
||||
8: TypeVoid
|
||||
1282: TypeFunction 8
|
||||
13: TypeFloat 32
|
||||
2572: 13(float) Constant 0
|
||||
5663: 8 Function None 1282
|
||||
16122: Label
|
||||
ReturnValue 2572
|
||||
FunctionEnd
|
216
Test/baseResults/remap.hlsl.templatetypes.none.frag.out
Normal file
216
Test/baseResults/remap.hlsl.templatetypes.none.frag.out
Normal file
@ -0,0 +1,216 @@
|
||||
remap.hlsl.templatetypes.none.frag
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 144
|
||||
|
||||
Capability Shader
|
||||
Capability Float64
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 9 "r00"
|
||||
Name 15 "r01"
|
||||
Name 20 "r12"
|
||||
Name 24 "r13"
|
||||
Name 27 "r14"
|
||||
Name 30 "r15"
|
||||
Name 34 "r16"
|
||||
Name 38 "r20"
|
||||
Name 43 "r21"
|
||||
Name 48 "r22"
|
||||
Name 52 "r23"
|
||||
Name 57 "r24"
|
||||
Name 62 "r30"
|
||||
Name 66 "r31"
|
||||
Name 71 "r32"
|
||||
Name 75 "r33"
|
||||
Name 80 "r34"
|
||||
Name 85 "r40"
|
||||
Name 89 "r41"
|
||||
Name 92 "r42"
|
||||
Name 95 "r43"
|
||||
Name 100 "r44"
|
||||
Name 105 "r50"
|
||||
Name 122 "r51"
|
||||
Name 125 "r61"
|
||||
Name 131 "r62"
|
||||
Name 136 "r65"
|
||||
Name 141 "r66"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Function 7(fvec4)
|
||||
10: 6(float) Constant 1065353216
|
||||
11: 6(float) Constant 1073741824
|
||||
12: 6(float) Constant 1077936128
|
||||
13: 6(float) Constant 1082130432
|
||||
14: 7(fvec4) ConstantComposite 10 11 12 13
|
||||
16: 6(float) Constant 1084227584
|
||||
17: 7(fvec4) ConstantComposite 11 12 13 16
|
||||
18: TypeBool
|
||||
19: TypePointer Function 18(bool)
|
||||
21: 18(bool) ConstantFalse
|
||||
22: TypeInt 32 1
|
||||
23: TypePointer Function 22(int)
|
||||
25: 22(int) Constant 1
|
||||
26: TypePointer Function 6(float)
|
||||
28: TypeFloat 64
|
||||
29: TypePointer Function 28(float)
|
||||
31: 28(float) Constant 0 1072693248
|
||||
32: TypeInt 32 0
|
||||
33: TypePointer Function 32(int)
|
||||
35: 32(int) Constant 1
|
||||
36: TypeVector 18(bool) 2
|
||||
37: TypePointer Function 36(bvec2)
|
||||
39: 18(bool) ConstantTrue
|
||||
40: 36(bvec2) ConstantComposite 21 39
|
||||
41: TypeVector 22(int) 2
|
||||
42: TypePointer Function 41(ivec2)
|
||||
44: 22(int) Constant 2
|
||||
45: 41(ivec2) ConstantComposite 25 44
|
||||
46: TypeVector 6(float) 2
|
||||
47: TypePointer Function 46(fvec2)
|
||||
49: 46(fvec2) ConstantComposite 10 11
|
||||
50: TypeVector 28(float) 2
|
||||
51: TypePointer Function 50(fvec2)
|
||||
53: 28(float) Constant 0 1073741824
|
||||
54: 50(fvec2) ConstantComposite 31 53
|
||||
55: TypeVector 32(int) 2
|
||||
56: TypePointer Function 55(ivec2)
|
||||
58: 32(int) Constant 2
|
||||
59: 55(ivec2) ConstantComposite 35 58
|
||||
60: TypeVector 18(bool) 3
|
||||
61: TypePointer Function 60(bvec3)
|
||||
63: 60(bvec3) ConstantComposite 21 39 39
|
||||
64: TypeVector 22(int) 3
|
||||
65: TypePointer Function 64(ivec3)
|
||||
67: 22(int) Constant 3
|
||||
68: 64(ivec3) ConstantComposite 25 44 67
|
||||
69: TypeVector 6(float) 3
|
||||
70: TypePointer Function 69(fvec3)
|
||||
72: 69(fvec3) ConstantComposite 10 11 12
|
||||
73: TypeVector 28(float) 3
|
||||
74: TypePointer Function 73(fvec3)
|
||||
76: 28(float) Constant 0 1074266112
|
||||
77: 73(fvec3) ConstantComposite 31 53 76
|
||||
78: TypeVector 32(int) 3
|
||||
79: TypePointer Function 78(ivec3)
|
||||
81: 32(int) Constant 3
|
||||
82: 78(ivec3) ConstantComposite 35 58 81
|
||||
83: TypeVector 18(bool) 4
|
||||
84: TypePointer Function 83(bvec4)
|
||||
86: 83(bvec4) ConstantComposite 21 39 39 21
|
||||
87: TypeVector 22(int) 4
|
||||
88: TypePointer Function 87(ivec4)
|
||||
90: 22(int) Constant 4
|
||||
91: 87(ivec4) ConstantComposite 25 44 67 90
|
||||
93: TypeVector 28(float) 4
|
||||
94: TypePointer Function 93(fvec4)
|
||||
96: 28(float) Constant 0 1074790400
|
||||
97: 93(fvec4) ConstantComposite 31 53 76 96
|
||||
98: TypeVector 32(int) 4
|
||||
99: TypePointer Function 98(ivec4)
|
||||
101: 32(int) Constant 4
|
||||
102: 98(ivec4) ConstantComposite 35 58 81 101
|
||||
103: TypeMatrix 7(fvec4) 4
|
||||
104: TypePointer Function 103
|
||||
106: 6(float) Constant 0
|
||||
107: 7(fvec4) ConstantComposite 106 10 11 12
|
||||
108: 6(float) Constant 1086324736
|
||||
109: 6(float) Constant 1088421888
|
||||
110: 7(fvec4) ConstantComposite 13 16 108 109
|
||||
111: 6(float) Constant 1090519040
|
||||
112: 6(float) Constant 1091567616
|
||||
113: 6(float) Constant 1092616192
|
||||
114: 6(float) Constant 1093664768
|
||||
115: 7(fvec4) ConstantComposite 111 112 113 114
|
||||
116: 6(float) Constant 1094713344
|
||||
117: 6(float) Constant 1095761920
|
||||
118: 6(float) Constant 1096810496
|
||||
119: 6(float) Constant 1097859072
|
||||
120: 7(fvec4) ConstantComposite 116 117 118 119
|
||||
121: 103 ConstantComposite 107 110 115 120
|
||||
123: TypeMatrix 46(fvec2) 3
|
||||
124: TypePointer Function 123
|
||||
126: 46(fvec2) ConstantComposite 12 13
|
||||
127: 46(fvec2) ConstantComposite 16 108
|
||||
128: 123 ConstantComposite 49 126 127
|
||||
129: TypeMatrix 69(fvec3) 2
|
||||
130: TypePointer Function 129
|
||||
132: 69(fvec3) ConstantComposite 13 16 108
|
||||
133: 129 ConstantComposite 72 132
|
||||
134: TypeMatrix 7(fvec4) 2
|
||||
135: TypePointer Function 134
|
||||
137: 7(fvec4) ConstantComposite 16 108 109 111
|
||||
138: 134 ConstantComposite 14 137
|
||||
139: TypeMatrix 7(fvec4) 3
|
||||
140: TypePointer Function 139
|
||||
142: 7(fvec4) ConstantComposite 112 113 114 116
|
||||
143: 139 ConstantComposite 14 137 142
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(r00): 8(ptr) Variable Function
|
||||
15(r01): 8(ptr) Variable Function
|
||||
20(r12): 19(ptr) Variable Function
|
||||
24(r13): 23(ptr) Variable Function
|
||||
27(r14): 26(ptr) Variable Function
|
||||
30(r15): 29(ptr) Variable Function
|
||||
34(r16): 33(ptr) Variable Function
|
||||
38(r20): 37(ptr) Variable Function
|
||||
43(r21): 42(ptr) Variable Function
|
||||
48(r22): 47(ptr) Variable Function
|
||||
52(r23): 51(ptr) Variable Function
|
||||
57(r24): 56(ptr) Variable Function
|
||||
62(r30): 61(ptr) Variable Function
|
||||
66(r31): 65(ptr) Variable Function
|
||||
71(r32): 70(ptr) Variable Function
|
||||
75(r33): 74(ptr) Variable Function
|
||||
80(r34): 79(ptr) Variable Function
|
||||
85(r40): 84(ptr) Variable Function
|
||||
89(r41): 88(ptr) Variable Function
|
||||
92(r42): 8(ptr) Variable Function
|
||||
95(r43): 94(ptr) Variable Function
|
||||
100(r44): 99(ptr) Variable Function
|
||||
105(r50): 104(ptr) Variable Function
|
||||
122(r51): 104(ptr) Variable Function
|
||||
125(r61): 124(ptr) Variable Function
|
||||
131(r62): 130(ptr) Variable Function
|
||||
136(r65): 135(ptr) Variable Function
|
||||
141(r66): 140(ptr) Variable Function
|
||||
Store 9(r00) 14
|
||||
Store 15(r01) 17
|
||||
Store 20(r12) 21
|
||||
Store 24(r13) 25
|
||||
Store 27(r14) 10
|
||||
Store 30(r15) 31
|
||||
Store 34(r16) 35
|
||||
Store 38(r20) 40
|
||||
Store 43(r21) 45
|
||||
Store 48(r22) 49
|
||||
Store 52(r23) 54
|
||||
Store 57(r24) 59
|
||||
Store 62(r30) 63
|
||||
Store 66(r31) 68
|
||||
Store 71(r32) 72
|
||||
Store 75(r33) 77
|
||||
Store 80(r34) 82
|
||||
Store 85(r40) 86
|
||||
Store 89(r41) 91
|
||||
Store 92(r42) 14
|
||||
Store 95(r43) 97
|
||||
Store 100(r44) 102
|
||||
Store 105(r50) 121
|
||||
Store 122(r51) 121
|
||||
Store 125(r61) 128
|
||||
Store 131(r62) 133
|
||||
Store 136(r65) 138
|
||||
Store 141(r66) 143
|
||||
ReturnValue 106
|
||||
FunctionEnd
|
47
Test/baseResults/remap.if.everything.frag.out
Normal file
47
Test/baseResults/remap.if.everything.frag.out
Normal file
@ -0,0 +1,47 @@
|
||||
remap.if.everything.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 22855
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5663 "main" 3773 4539
|
||||
ExecutionMode 5663 OriginUpperLeft
|
||||
8: TypeVoid
|
||||
1282: TypeFunction 8
|
||||
13: TypeFloat 32
|
||||
650: TypePointer Input 13(float)
|
||||
3773: 650(ptr) Variable Input
|
||||
24: 13(float) Constant 1073741824
|
||||
9: TypeBool
|
||||
29: TypeVector 13(float) 4
|
||||
666: TypePointer Output 29(fvec4)
|
||||
4539: 666(ptr) Variable Output
|
||||
947: 13(float) Constant 3204448256
|
||||
5663: 8 Function None 1282
|
||||
7911: Label
|
||||
21734: 13(float) Load 3773
|
||||
13508: 9(bool) FOrdGreaterThan 21734 24
|
||||
SelectionMerge 19578 None
|
||||
BranchConditional 13508 13182 10142
|
||||
13182: Label
|
||||
9496: 13(float) Load 3773
|
||||
17615: 29(fvec4) CompositeConstruct 9496 9496 9496 9496
|
||||
Store 4539 17615
|
||||
Branch 19578
|
||||
10142: Label
|
||||
22854: 13(float) Load 3773
|
||||
9982: 13(float) FAdd 22854 947
|
||||
12421: 29(fvec4) CompositeConstruct 9982 9982 9982 9982
|
||||
Store 4539 12421
|
||||
Branch 19578
|
||||
19578: Label
|
||||
Return
|
||||
FunctionEnd
|
51
Test/baseResults/remap.if.none.frag.out
Normal file
51
Test/baseResults/remap.if.none.frag.out
Normal file
@ -0,0 +1,51 @@
|
||||
remap.if.none.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 25
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 8 17
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 8 "inf"
|
||||
Name 17 "outf4"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypePointer Input 6(float)
|
||||
8(inf): 7(ptr) Variable Input
|
||||
10: 6(float) Constant 1073741824
|
||||
11: TypeBool
|
||||
15: TypeVector 6(float) 4
|
||||
16: TypePointer Output 15(fvec4)
|
||||
17(outf4): 16(ptr) Variable Output
|
||||
22: 6(float) Constant 3204448256
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9: 6(float) Load 8(inf)
|
||||
12: 11(bool) FOrdGreaterThan 9 10
|
||||
SelectionMerge 14 None
|
||||
BranchConditional 12 13 20
|
||||
13: Label
|
||||
18: 6(float) Load 8(inf)
|
||||
19: 15(fvec4) CompositeConstruct 18 18 18 18
|
||||
Store 17(outf4) 19
|
||||
Branch 14
|
||||
20: Label
|
||||
21: 6(float) Load 8(inf)
|
||||
23: 6(float) FAdd 21 22
|
||||
24: 15(fvec4) CompositeConstruct 23 23 23 23
|
||||
Store 17(outf4) 24
|
||||
Branch 14
|
||||
14: Label
|
||||
Return
|
||||
FunctionEnd
|
7
Test/baseResults/remap.literal64.everything.spv.out
Normal file
7
Test/baseResults/remap.literal64.everything.spv.out
Normal file
@ -0,0 +1,7 @@
|
||||
remap.literal64.everything.spv
|
||||
// Module Version 10100
|
||||
// Generated by (magic number): 70000
|
||||
// Id's are bound by 0
|
||||
|
||||
Capability Shader
|
||||
MemoryModel Logical GLSL450
|
25
Test/baseResults/remap.literal64.none.spv.out
Normal file
25
Test/baseResults/remap.literal64.none.spv.out
Normal file
@ -0,0 +1,25 @@
|
||||
remap.literal64.none.spv
|
||||
// Module Version 10100
|
||||
// Generated by (magic number): 70000
|
||||
// Id's are bound by 10
|
||||
|
||||
Capability Shader
|
||||
MemoryModel Logical GLSL450
|
||||
1: TypeVoid
|
||||
2: TypeInt 64 1
|
||||
3: TypeFunction 1
|
||||
4: 2(int) Constant 0 0
|
||||
5: 1 Function None 3
|
||||
6: Label
|
||||
SelectionMerge 7 None
|
||||
Switch 4 7
|
||||
case 0: 0
|
||||
case 8: 1
|
||||
case 0: 9
|
||||
8: Label
|
||||
Branch 7
|
||||
9: Label
|
||||
Branch 7
|
||||
7: Label
|
||||
Return
|
||||
FunctionEnd
|
121
Test/baseResults/remap.similar_1a.everything.frag.out
Normal file
121
Test/baseResults/remap.similar_1a.everything.frag.out
Normal file
@ -0,0 +1,121 @@
|
||||
remap.similar_1a.everything.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 24916
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5663 "main" 4201 4539 3773
|
||||
ExecutionMode 5663 OriginUpperLeft
|
||||
Decorate 4201 Flat
|
||||
8: TypeVoid
|
||||
1282: TypeFunction 8
|
||||
12: TypeInt 32 1
|
||||
649: TypePointer Function 12(int)
|
||||
13: TypeFloat 32
|
||||
204: TypeFunction 13(float) 649(ptr)
|
||||
650: TypePointer Function 13(float)
|
||||
2572: 13(float) Constant 0
|
||||
2571: 12(int) Constant 0
|
||||
9: TypeBool
|
||||
252: 13(float) Constant 1056964608
|
||||
2574: 12(int) Constant 1
|
||||
2577: 12(int) Constant 2
|
||||
26: TypeVector 12(int) 4
|
||||
663: TypePointer Input 26(ivec4)
|
||||
4201: 663(ptr) Variable Input
|
||||
11: TypeInt 32 0
|
||||
2573: 11(int) Constant 1
|
||||
651: TypePointer Input 12(int)
|
||||
2576: 11(int) Constant 2
|
||||
2570: 11(int) Constant 0
|
||||
29: TypeVector 13(float) 4
|
||||
666: TypePointer Output 29(fvec4)
|
||||
4539: 666(ptr) Variable Output
|
||||
652: TypePointer Input 13(float)
|
||||
3773: 652(ptr) Variable Input
|
||||
5663: 8 Function None 1282
|
||||
24915: Label
|
||||
18415: 649(ptr) Variable Function
|
||||
5786: 649(ptr) Variable Function
|
||||
8366: 13(float) Load 3773
|
||||
8654: 12(int) ConvertFToS 8366
|
||||
Store 18415 8654
|
||||
17256: 13(float) FunctionCall 3782 18415
|
||||
14512: 13(float) Load 3773
|
||||
7041: 12(int) ConvertFToS 14512
|
||||
Store 5786 7041
|
||||
23993: 13(float) FunctionCall 3836 5786
|
||||
9180: 13(float) FAdd 17256 23993
|
||||
15728: 29(fvec4) CompositeConstruct 9180 9180 9180 9180
|
||||
Store 4539 15728
|
||||
Return
|
||||
FunctionEnd
|
||||
3782: 13(float) Function None 204
|
||||
6931: 649(ptr) FunctionParameter
|
||||
12220: Label
|
||||
4292: 650(ptr) Variable Function
|
||||
4298: 649(ptr) Variable Function
|
||||
Store 4292 2572
|
||||
Store 4298 2571
|
||||
Branch 14924
|
||||
14924: Label
|
||||
LoopMerge 8882 6488 None
|
||||
Branch 11857
|
||||
11857: Label
|
||||
13755: 12(int) Load 4298
|
||||
22731: 12(int) Load 6931
|
||||
20007: 9(bool) SLessThan 13755 22731
|
||||
BranchConditional 20007 24750 8882
|
||||
24750: Label
|
||||
22912: 13(float) Load 4292
|
||||
19471: 13(float) FAdd 22912 252
|
||||
Store 4292 19471
|
||||
Branch 6488
|
||||
6488: Label
|
||||
19050: 12(int) Load 4298
|
||||
8593: 12(int) IAdd 19050 2574
|
||||
Store 4298 8593
|
||||
Branch 14924
|
||||
8882: Label
|
||||
11601: 13(float) Load 4292
|
||||
ReturnValue 11601
|
||||
FunctionEnd
|
||||
3836: 13(float) Function None 204
|
||||
4408: 649(ptr) FunctionParameter
|
||||
12143: Label
|
||||
22102: 649(ptr) Variable Function
|
||||
24151: 12(int) Load 4408
|
||||
13868: 9(bool) SGreaterThan 24151 2577
|
||||
SelectionMerge 22309 None
|
||||
BranchConditional 13868 9492 17416
|
||||
9492: Label
|
||||
15624: 12(int) Load 4408
|
||||
Store 22102 15624
|
||||
17278: 13(float) FunctionCall 3782 22102
|
||||
ReturnValue 17278
|
||||
17416: Label
|
||||
19506: 12(int) Load 4408
|
||||
22773: 12(int) IMul 19506 2577
|
||||
13472: 651(ptr) AccessChain 4201 2573
|
||||
15280: 12(int) Load 13472
|
||||
18079: 651(ptr) AccessChain 4201 2576
|
||||
15199: 12(int) Load 18079
|
||||
9343: 12(int) IMul 15280 15199
|
||||
11462: 12(int) IAdd 22773 9343
|
||||
11885: 651(ptr) AccessChain 4201 2570
|
||||
21176: 12(int) Load 11885
|
||||
10505: 12(int) IAdd 11462 21176
|
||||
14626: 13(float) ConvertSToF 10505
|
||||
ReturnValue 14626
|
||||
22309: Label
|
||||
6429: 13(float) Undef
|
||||
ReturnValue 6429
|
||||
FunctionEnd
|
135
Test/baseResults/remap.similar_1a.none.frag.out
Normal file
135
Test/baseResults/remap.similar_1a.none.frag.out
Normal file
@ -0,0 +1,135 @@
|
||||
remap.similar_1a.none.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 82
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 50 69 71
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 11 "Test1(i1;"
|
||||
Name 10 "bound"
|
||||
Name 14 "Test2(i1;"
|
||||
Name 13 "bound"
|
||||
Name 17 "r"
|
||||
Name 19 "x"
|
||||
Name 42 "param"
|
||||
Name 50 "ini4"
|
||||
Name 69 "outf4"
|
||||
Name 71 "inf"
|
||||
Name 74 "param"
|
||||
Name 78 "param"
|
||||
Decorate 50(ini4) Flat
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7: TypePointer Function 6(int)
|
||||
8: TypeFloat 32
|
||||
9: TypeFunction 8(float) 7(ptr)
|
||||
16: TypePointer Function 8(float)
|
||||
18: 8(float) Constant 0
|
||||
20: 6(int) Constant 0
|
||||
28: TypeBool
|
||||
30: 8(float) Constant 1056964608
|
||||
34: 6(int) Constant 1
|
||||
38: 6(int) Constant 2
|
||||
48: TypeVector 6(int) 4
|
||||
49: TypePointer Input 48(ivec4)
|
||||
50(ini4): 49(ptr) Variable Input
|
||||
51: TypeInt 32 0
|
||||
52: 51(int) Constant 1
|
||||
53: TypePointer Input 6(int)
|
||||
56: 51(int) Constant 2
|
||||
61: 51(int) Constant 0
|
||||
67: TypeVector 8(float) 4
|
||||
68: TypePointer Output 67(fvec4)
|
||||
69(outf4): 68(ptr) Variable Output
|
||||
70: TypePointer Input 8(float)
|
||||
71(inf): 70(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
74(param): 7(ptr) Variable Function
|
||||
78(param): 7(ptr) Variable Function
|
||||
72: 8(float) Load 71(inf)
|
||||
73: 6(int) ConvertFToS 72
|
||||
Store 74(param) 73
|
||||
75: 8(float) FunctionCall 11(Test1(i1;) 74(param)
|
||||
76: 8(float) Load 71(inf)
|
||||
77: 6(int) ConvertFToS 76
|
||||
Store 78(param) 77
|
||||
79: 8(float) FunctionCall 14(Test2(i1;) 78(param)
|
||||
80: 8(float) FAdd 75 79
|
||||
81: 67(fvec4) CompositeConstruct 80 80 80 80
|
||||
Store 69(outf4) 81
|
||||
Return
|
||||
FunctionEnd
|
||||
11(Test1(i1;): 8(float) Function None 9
|
||||
10(bound): 7(ptr) FunctionParameter
|
||||
12: Label
|
||||
17(r): 16(ptr) Variable Function
|
||||
19(x): 7(ptr) Variable Function
|
||||
Store 17(r) 18
|
||||
Store 19(x) 20
|
||||
Branch 21
|
||||
21: Label
|
||||
LoopMerge 23 24 None
|
||||
Branch 25
|
||||
25: Label
|
||||
26: 6(int) Load 19(x)
|
||||
27: 6(int) Load 10(bound)
|
||||
29: 28(bool) SLessThan 26 27
|
||||
BranchConditional 29 22 23
|
||||
22: Label
|
||||
31: 8(float) Load 17(r)
|
||||
32: 8(float) FAdd 31 30
|
||||
Store 17(r) 32
|
||||
Branch 24
|
||||
24: Label
|
||||
33: 6(int) Load 19(x)
|
||||
35: 6(int) IAdd 33 34
|
||||
Store 19(x) 35
|
||||
Branch 21
|
||||
23: Label
|
||||
36: 8(float) Load 17(r)
|
||||
ReturnValue 36
|
||||
FunctionEnd
|
||||
14(Test2(i1;): 8(float) Function None 9
|
||||
13(bound): 7(ptr) FunctionParameter
|
||||
15: Label
|
||||
42(param): 7(ptr) Variable Function
|
||||
37: 6(int) Load 13(bound)
|
||||
39: 28(bool) SGreaterThan 37 38
|
||||
SelectionMerge 41 None
|
||||
BranchConditional 39 40 45
|
||||
40: Label
|
||||
43: 6(int) Load 13(bound)
|
||||
Store 42(param) 43
|
||||
44: 8(float) FunctionCall 11(Test1(i1;) 42(param)
|
||||
ReturnValue 44
|
||||
45: Label
|
||||
46: 6(int) Load 13(bound)
|
||||
47: 6(int) IMul 46 38
|
||||
54: 53(ptr) AccessChain 50(ini4) 52
|
||||
55: 6(int) Load 54
|
||||
57: 53(ptr) AccessChain 50(ini4) 56
|
||||
58: 6(int) Load 57
|
||||
59: 6(int) IMul 55 58
|
||||
60: 6(int) IAdd 47 59
|
||||
62: 53(ptr) AccessChain 50(ini4) 61
|
||||
63: 6(int) Load 62
|
||||
64: 6(int) IAdd 60 63
|
||||
65: 8(float) ConvertSToF 64
|
||||
ReturnValue 65
|
||||
41: Label
|
||||
66: 8(float) Undef
|
||||
ReturnValue 66
|
||||
FunctionEnd
|
127
Test/baseResults/remap.similar_1b.everything.frag.out
Normal file
127
Test/baseResults/remap.similar_1b.everything.frag.out
Normal file
@ -0,0 +1,127 @@
|
||||
remap.similar_1b.everything.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 24916
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5663 "main" 4201 4539 3773
|
||||
ExecutionMode 5663 OriginUpperLeft
|
||||
Decorate 4201 Flat
|
||||
8: TypeVoid
|
||||
1282: TypeFunction 8
|
||||
12: TypeInt 32 1
|
||||
649: TypePointer Function 12(int)
|
||||
13: TypeFloat 32
|
||||
204: TypeFunction 13(float) 649(ptr)
|
||||
650: TypePointer Function 13(float)
|
||||
2572: 13(float) Constant 0
|
||||
2571: 12(int) Constant 0
|
||||
9: TypeBool
|
||||
252: 13(float) Constant 1056964608
|
||||
2574: 12(int) Constant 1
|
||||
2821: 13(float) Constant 1045220557
|
||||
2577: 12(int) Constant 2
|
||||
2583: 12(int) Constant 4
|
||||
26: TypeVector 12(int) 4
|
||||
663: TypePointer Input 26(ivec4)
|
||||
4201: 663(ptr) Variable Input
|
||||
11: TypeInt 32 0
|
||||
2573: 11(int) Constant 1
|
||||
651: TypePointer Input 12(int)
|
||||
2576: 11(int) Constant 2
|
||||
2570: 11(int) Constant 0
|
||||
29: TypeVector 13(float) 4
|
||||
666: TypePointer Output 29(fvec4)
|
||||
4539: 666(ptr) Variable Output
|
||||
652: TypePointer Input 13(float)
|
||||
3773: 652(ptr) Variable Input
|
||||
5663: 8 Function None 1282
|
||||
24915: Label
|
||||
18415: 649(ptr) Variable Function
|
||||
5786: 649(ptr) Variable Function
|
||||
8366: 13(float) Load 3773
|
||||
8654: 12(int) ConvertFToS 8366
|
||||
Store 18415 8654
|
||||
17256: 13(float) FunctionCall 3782 18415
|
||||
14512: 13(float) Load 3773
|
||||
7041: 12(int) ConvertFToS 14512
|
||||
Store 5786 7041
|
||||
23993: 13(float) FunctionCall 3836 5786
|
||||
9180: 13(float) FAdd 17256 23993
|
||||
15728: 29(fvec4) CompositeConstruct 9180 9180 9180 9180
|
||||
Store 4539 15728
|
||||
Return
|
||||
FunctionEnd
|
||||
3782: 13(float) Function None 204
|
||||
6931: 649(ptr) FunctionParameter
|
||||
12220: Label
|
||||
4292: 650(ptr) Variable Function
|
||||
4298: 649(ptr) Variable Function
|
||||
Store 4292 2572
|
||||
Store 4298 2571
|
||||
Branch 14924
|
||||
14924: Label
|
||||
LoopMerge 6507 6488 None
|
||||
Branch 11857
|
||||
11857: Label
|
||||
13755: 12(int) Load 4298
|
||||
22731: 12(int) Load 6931
|
||||
20007: 9(bool) SLessThan 13755 22731
|
||||
BranchConditional 20007 24750 6507
|
||||
24750: Label
|
||||
22912: 13(float) Load 4292
|
||||
19471: 13(float) FAdd 22912 252
|
||||
Store 4292 19471
|
||||
Branch 6488
|
||||
6488: Label
|
||||
19050: 12(int) Load 4298
|
||||
8593: 12(int) IAdd 19050 2574
|
||||
Store 4298 8593
|
||||
Branch 14924
|
||||
6507: Label
|
||||
18877: 13(float) Load 4292
|
||||
15899: 13(float) FAdd 18877 2821
|
||||
Store 4292 15899
|
||||
20342: 13(float) Load 4292
|
||||
ReturnValue 20342
|
||||
FunctionEnd
|
||||
3836: 13(float) Function None 204
|
||||
4408: 649(ptr) FunctionParameter
|
||||
12143: Label
|
||||
22102: 649(ptr) Variable Function
|
||||
24151: 12(int) Load 4408
|
||||
13868: 9(bool) SGreaterThan 24151 2577
|
||||
SelectionMerge 22309 None
|
||||
BranchConditional 13868 10822 17416
|
||||
10822: Label
|
||||
22680: 12(int) Load 4408
|
||||
23216: 12(int) IMul 22680 2577
|
||||
Store 22102 23216
|
||||
7042: 13(float) FunctionCall 3782 22102
|
||||
ReturnValue 7042
|
||||
17416: Label
|
||||
19506: 12(int) Load 4408
|
||||
22773: 12(int) IMul 19506 2583
|
||||
13472: 651(ptr) AccessChain 4201 2573
|
||||
15280: 12(int) Load 13472
|
||||
18079: 651(ptr) AccessChain 4201 2576
|
||||
15199: 12(int) Load 18079
|
||||
9343: 12(int) IMul 15280 15199
|
||||
11462: 12(int) IAdd 22773 9343
|
||||
11885: 651(ptr) AccessChain 4201 2570
|
||||
21176: 12(int) Load 11885
|
||||
10505: 12(int) IAdd 11462 21176
|
||||
14626: 13(float) ConvertSToF 10505
|
||||
ReturnValue 14626
|
||||
22309: Label
|
||||
6429: 13(float) Undef
|
||||
ReturnValue 6429
|
||||
FunctionEnd
|
141
Test/baseResults/remap.similar_1b.none.frag.out
Normal file
141
Test/baseResults/remap.similar_1b.none.frag.out
Normal file
@ -0,0 +1,141 @@
|
||||
remap.similar_1b.none.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 87
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 55 74 76
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 11 "Test1(i1;"
|
||||
Name 10 "bound"
|
||||
Name 14 "Test2(i1;"
|
||||
Name 13 "bound"
|
||||
Name 17 "r"
|
||||
Name 19 "x"
|
||||
Name 47 "param"
|
||||
Name 55 "ini4"
|
||||
Name 74 "outf4"
|
||||
Name 76 "inf"
|
||||
Name 79 "param"
|
||||
Name 83 "param"
|
||||
Decorate 55(ini4) Flat
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7: TypePointer Function 6(int)
|
||||
8: TypeFloat 32
|
||||
9: TypeFunction 8(float) 7(ptr)
|
||||
16: TypePointer Function 8(float)
|
||||
18: 8(float) Constant 0
|
||||
20: 6(int) Constant 0
|
||||
28: TypeBool
|
||||
30: 8(float) Constant 1056964608
|
||||
34: 6(int) Constant 1
|
||||
36: 8(float) Constant 1045220557
|
||||
41: 6(int) Constant 2
|
||||
51: 6(int) Constant 4
|
||||
53: TypeVector 6(int) 4
|
||||
54: TypePointer Input 53(ivec4)
|
||||
55(ini4): 54(ptr) Variable Input
|
||||
56: TypeInt 32 0
|
||||
57: 56(int) Constant 1
|
||||
58: TypePointer Input 6(int)
|
||||
61: 56(int) Constant 2
|
||||
66: 56(int) Constant 0
|
||||
72: TypeVector 8(float) 4
|
||||
73: TypePointer Output 72(fvec4)
|
||||
74(outf4): 73(ptr) Variable Output
|
||||
75: TypePointer Input 8(float)
|
||||
76(inf): 75(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
79(param): 7(ptr) Variable Function
|
||||
83(param): 7(ptr) Variable Function
|
||||
77: 8(float) Load 76(inf)
|
||||
78: 6(int) ConvertFToS 77
|
||||
Store 79(param) 78
|
||||
80: 8(float) FunctionCall 11(Test1(i1;) 79(param)
|
||||
81: 8(float) Load 76(inf)
|
||||
82: 6(int) ConvertFToS 81
|
||||
Store 83(param) 82
|
||||
84: 8(float) FunctionCall 14(Test2(i1;) 83(param)
|
||||
85: 8(float) FAdd 80 84
|
||||
86: 72(fvec4) CompositeConstruct 85 85 85 85
|
||||
Store 74(outf4) 86
|
||||
Return
|
||||
FunctionEnd
|
||||
11(Test1(i1;): 8(float) Function None 9
|
||||
10(bound): 7(ptr) FunctionParameter
|
||||
12: Label
|
||||
17(r): 16(ptr) Variable Function
|
||||
19(x): 7(ptr) Variable Function
|
||||
Store 17(r) 18
|
||||
Store 19(x) 20
|
||||
Branch 21
|
||||
21: Label
|
||||
LoopMerge 23 24 None
|
||||
Branch 25
|
||||
25: Label
|
||||
26: 6(int) Load 19(x)
|
||||
27: 6(int) Load 10(bound)
|
||||
29: 28(bool) SLessThan 26 27
|
||||
BranchConditional 29 22 23
|
||||
22: Label
|
||||
31: 8(float) Load 17(r)
|
||||
32: 8(float) FAdd 31 30
|
||||
Store 17(r) 32
|
||||
Branch 24
|
||||
24: Label
|
||||
33: 6(int) Load 19(x)
|
||||
35: 6(int) IAdd 33 34
|
||||
Store 19(x) 35
|
||||
Branch 21
|
||||
23: Label
|
||||
37: 8(float) Load 17(r)
|
||||
38: 8(float) FAdd 37 36
|
||||
Store 17(r) 38
|
||||
39: 8(float) Load 17(r)
|
||||
ReturnValue 39
|
||||
FunctionEnd
|
||||
14(Test2(i1;): 8(float) Function None 9
|
||||
13(bound): 7(ptr) FunctionParameter
|
||||
15: Label
|
||||
47(param): 7(ptr) Variable Function
|
||||
40: 6(int) Load 13(bound)
|
||||
42: 28(bool) SGreaterThan 40 41
|
||||
SelectionMerge 44 None
|
||||
BranchConditional 42 43 49
|
||||
43: Label
|
||||
45: 6(int) Load 13(bound)
|
||||
46: 6(int) IMul 45 41
|
||||
Store 47(param) 46
|
||||
48: 8(float) FunctionCall 11(Test1(i1;) 47(param)
|
||||
ReturnValue 48
|
||||
49: Label
|
||||
50: 6(int) Load 13(bound)
|
||||
52: 6(int) IMul 50 51
|
||||
59: 58(ptr) AccessChain 55(ini4) 57
|
||||
60: 6(int) Load 59
|
||||
62: 58(ptr) AccessChain 55(ini4) 61
|
||||
63: 6(int) Load 62
|
||||
64: 6(int) IMul 60 63
|
||||
65: 6(int) IAdd 52 64
|
||||
67: 58(ptr) AccessChain 55(ini4) 66
|
||||
68: 6(int) Load 67
|
||||
69: 6(int) IAdd 65 68
|
||||
70: 8(float) ConvertSToF 69
|
||||
ReturnValue 70
|
||||
44: Label
|
||||
71: 8(float) Undef
|
||||
ReturnValue 71
|
||||
FunctionEnd
|
81
Test/baseResults/remap.switch.everything.frag.out
Normal file
81
Test/baseResults/remap.switch.everything.frag.out
Normal file
@ -0,0 +1,81 @@
|
||||
remap.switch.everything.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
|
||||
"precision mediump int; precision highp float;"
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 23990
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5663 "main" 3719 3994
|
||||
ExecutionMode 5663 OriginUpperLeft
|
||||
Decorate 3719 Location 0
|
||||
Decorate 3994 RelaxedPrecision
|
||||
Decorate 3994 Location 0
|
||||
Decorate 12421 RelaxedPrecision
|
||||
Decorate 12422 RelaxedPrecision
|
||||
Decorate 12423 RelaxedPrecision
|
||||
8: TypeVoid
|
||||
1282: TypeFunction 8
|
||||
13: TypeFloat 32
|
||||
29: TypeVector 13(float) 4
|
||||
666: TypePointer Input 29(fvec4)
|
||||
3719: 666(ptr) Variable Input
|
||||
11: TypeInt 32 0
|
||||
2579: 11(int) Constant 3
|
||||
650: TypePointer Input 13(float)
|
||||
12: TypeInt 32 1
|
||||
667: TypePointer Output 29(fvec4)
|
||||
3994: 667(ptr) Variable Output
|
||||
2570: 11(int) Constant 0
|
||||
2572: 13(float) Constant 0
|
||||
2573: 11(int) Constant 1
|
||||
138: 13(float) Constant 1065353216
|
||||
2576: 11(int) Constant 2
|
||||
24: 13(float) Constant 1073741824
|
||||
833: 13(float) Constant 3212836864
|
||||
1284: 29(fvec4) ConstantComposite 833 833 833 833
|
||||
5663: 8 Function None 1282
|
||||
23915: Label
|
||||
7984: 650(ptr) AccessChain 3719 2579
|
||||
11376: 13(float) Load 7984
|
||||
16859: 12(int) ConvertFToS 11376
|
||||
SelectionMerge 19578 None
|
||||
Switch 16859 15971
|
||||
case 0: 8158
|
||||
case 1: 8159
|
||||
case 2: 8160
|
||||
15971: Label
|
||||
Store 3994 1284
|
||||
Branch 19578
|
||||
8158: Label
|
||||
21848: 650(ptr) AccessChain 3719 2570
|
||||
23987: 13(float) Load 21848
|
||||
19989: 13(float) FAdd 23987 2572
|
||||
12421: 29(fvec4) CompositeConstruct 19989 19989 19989 19989
|
||||
Store 3994 12421
|
||||
Branch 19578
|
||||
8159: Label
|
||||
21849: 650(ptr) AccessChain 3719 2573
|
||||
23988: 13(float) Load 21849
|
||||
19990: 13(float) FAdd 23988 138
|
||||
12422: 29(fvec4) CompositeConstruct 19990 19990 19990 19990
|
||||
Store 3994 12422
|
||||
Branch 19578
|
||||
8160: Label
|
||||
21850: 650(ptr) AccessChain 3719 2576
|
||||
23989: 13(float) Load 21850
|
||||
19991: 13(float) FAdd 23989 24
|
||||
12423: 29(fvec4) CompositeConstruct 19991 19991 19991 19991
|
||||
Store 3994 12423
|
||||
Branch 19578
|
||||
19578: Label
|
||||
Return
|
||||
FunctionEnd
|
85
Test/baseResults/remap.switch.none.frag.out
Normal file
85
Test/baseResults/remap.switch.none.frag.out
Normal file
@ -0,0 +1,85 @@
|
||||
remap.switch.none.frag
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
|
||||
"precision mediump int; precision highp float;"
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 44
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 9 23
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 9 "in0"
|
||||
Name 23 "FragColor"
|
||||
Decorate 9(in0) Location 0
|
||||
Decorate 23(FragColor) RelaxedPrecision
|
||||
Decorate 23(FragColor) Location 0
|
||||
Decorate 29 RelaxedPrecision
|
||||
Decorate 35 RelaxedPrecision
|
||||
Decorate 41 RelaxedPrecision
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Input 7(fvec4)
|
||||
9(in0): 8(ptr) Variable Input
|
||||
10: TypeInt 32 0
|
||||
11: 10(int) Constant 3
|
||||
12: TypePointer Input 6(float)
|
||||
15: TypeInt 32 1
|
||||
22: TypePointer Output 7(fvec4)
|
||||
23(FragColor): 22(ptr) Variable Output
|
||||
24: 10(int) Constant 0
|
||||
27: 6(float) Constant 0
|
||||
30: 10(int) Constant 1
|
||||
33: 6(float) Constant 1065353216
|
||||
36: 10(int) Constant 2
|
||||
39: 6(float) Constant 1073741824
|
||||
42: 6(float) Constant 3212836864
|
||||
43: 7(fvec4) ConstantComposite 42 42 42 42
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
13: 12(ptr) AccessChain 9(in0) 11
|
||||
14: 6(float) Load 13
|
||||
16: 15(int) ConvertFToS 14
|
||||
SelectionMerge 21 None
|
||||
Switch 16 20
|
||||
case 0: 17
|
||||
case 1: 18
|
||||
case 2: 19
|
||||
20: Label
|
||||
Store 23(FragColor) 43
|
||||
Branch 21
|
||||
17: Label
|
||||
25: 12(ptr) AccessChain 9(in0) 24
|
||||
26: 6(float) Load 25
|
||||
28: 6(float) FAdd 26 27
|
||||
29: 7(fvec4) CompositeConstruct 28 28 28 28
|
||||
Store 23(FragColor) 29
|
||||
Branch 21
|
||||
18: Label
|
||||
31: 12(ptr) AccessChain 9(in0) 30
|
||||
32: 6(float) Load 31
|
||||
34: 6(float) FAdd 32 33
|
||||
35: 7(fvec4) CompositeConstruct 34 34 34 34
|
||||
Store 23(FragColor) 35
|
||||
Branch 21
|
||||
19: Label
|
||||
37: 12(ptr) AccessChain 9(in0) 36
|
||||
38: 6(float) Load 37
|
||||
40: 6(float) FAdd 38 39
|
||||
41: 7(fvec4) CompositeConstruct 40 40 40 40
|
||||
Store 23(FragColor) 41
|
||||
Branch 21
|
||||
21: Label
|
||||
Return
|
||||
FunctionEnd
|
67
Test/baseResults/remap.uniformarray.everything.frag.out
Normal file
67
Test/baseResults/remap.uniformarray.everything.frag.out
Normal file
@ -0,0 +1,67 @@
|
||||
remap.uniformarray.everything.frag
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 25030
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 5663 "main" 3608 4957 4339 5139
|
||||
ExecutionMode 5663 OriginUpperLeft
|
||||
8: TypeVoid
|
||||
1282: TypeFunction 8
|
||||
13: TypeFloat 32
|
||||
29: TypeVector 13(float) 4
|
||||
666: TypePointer Function 29(fvec4)
|
||||
11: TypeInt 32 0
|
||||
2588: 11(int) Constant 6
|
||||
740: TypeArray 29(fvec4) 2588
|
||||
1377: TypePointer Input 740
|
||||
3608: 1377(ptr) Variable Input
|
||||
12: TypeInt 32 1
|
||||
2574: 12(int) Constant 1
|
||||
667: TypePointer Input 29(fvec4)
|
||||
24: TypeVector 13(float) 3
|
||||
661: TypePointer Input 24(fvec3)
|
||||
4957: 661(ptr) Variable Input
|
||||
2618: 11(int) Constant 16
|
||||
669: TypeArray 13(float) 2618
|
||||
1306: TypePointer Input 669
|
||||
4339: 1306(ptr) Variable Input
|
||||
2607: 12(int) Constant 12
|
||||
650: TypePointer Input 13(float)
|
||||
2579: 11(int) Constant 3
|
||||
651: TypePointer Function 13(float)
|
||||
668: TypePointer Output 29(fvec4)
|
||||
5139: 668(ptr) Variable Output
|
||||
5663: 8 Function None 1282
|
||||
25029: Label
|
||||
4902: 666(ptr) Variable Function
|
||||
10645: 667(ptr) AccessChain 3608 2574
|
||||
8181: 29(fvec4) Load 10645
|
||||
21370: 667(ptr) AccessChain 3608 2574
|
||||
11355: 29(fvec4) Load 21370
|
||||
23084: 29(fvec4) FAdd 8181 11355
|
||||
Store 4902 23084
|
||||
21218: 24(fvec3) Load 4957
|
||||
13695: 29(fvec4) Load 4902
|
||||
23883: 24(fvec3) VectorShuffle 13695 13695 0 1 2
|
||||
15591: 24(fvec3) FAdd 23883 21218
|
||||
17086: 29(fvec4) Load 4902
|
||||
7051: 29(fvec4) VectorShuffle 17086 15591 4 5 6 3
|
||||
Store 4902 7051
|
||||
18282: 650(ptr) AccessChain 4339 2607
|
||||
7372: 13(float) Load 18282
|
||||
21371: 651(ptr) AccessChain 4902 2579
|
||||
11412: 13(float) Load 21371
|
||||
22584: 13(float) FAdd 11412 7372
|
||||
17318: 651(ptr) AccessChain 4902 2579
|
||||
Store 17318 22584
|
||||
17934: 29(fvec4) Load 4902
|
||||
Store 5139 17934
|
||||
Return
|
||||
FunctionEnd
|
80
Test/baseResults/remap.uniformarray.none.frag.out
Normal file
80
Test/baseResults/remap.uniformarray.none.frag.out
Normal file
@ -0,0 +1,80 @@
|
||||
remap.uniformarray.none.frag
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 53
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 14 25 35 47
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 140
|
||||
Name 4 "main"
|
||||
Name 9 "texColor"
|
||||
Name 14 "color"
|
||||
Name 25 "inColor"
|
||||
Name 35 "alpha"
|
||||
Name 47 "gl_FragColor"
|
||||
Name 52 "texSampler2D"
|
||||
Decorate 52(texSampler2D) DescriptorSet 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Function 7(fvec4)
|
||||
10: TypeInt 32 0
|
||||
11: 10(int) Constant 6
|
||||
12: TypeArray 7(fvec4) 11
|
||||
13: TypePointer Input 12
|
||||
14(color): 13(ptr) Variable Input
|
||||
15: TypeInt 32 1
|
||||
16: 15(int) Constant 1
|
||||
17: TypePointer Input 7(fvec4)
|
||||
23: TypeVector 6(float) 3
|
||||
24: TypePointer Input 23(fvec3)
|
||||
25(inColor): 24(ptr) Variable Input
|
||||
32: 10(int) Constant 16
|
||||
33: TypeArray 6(float) 32
|
||||
34: TypePointer Input 33
|
||||
35(alpha): 34(ptr) Variable Input
|
||||
36: 15(int) Constant 12
|
||||
37: TypePointer Input 6(float)
|
||||
40: 10(int) Constant 3
|
||||
41: TypePointer Function 6(float)
|
||||
46: TypePointer Output 7(fvec4)
|
||||
47(gl_FragColor): 46(ptr) Variable Output
|
||||
49: TypeImage 6(float) 2D sampled format:Unknown
|
||||
50: TypeSampledImage 49
|
||||
51: TypePointer UniformConstant 50
|
||||
52(texSampler2D): 51(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(texColor): 8(ptr) Variable Function
|
||||
18: 17(ptr) AccessChain 14(color) 16
|
||||
19: 7(fvec4) Load 18
|
||||
20: 17(ptr) AccessChain 14(color) 16
|
||||
21: 7(fvec4) Load 20
|
||||
22: 7(fvec4) FAdd 19 21
|
||||
Store 9(texColor) 22
|
||||
26: 23(fvec3) Load 25(inColor)
|
||||
27: 7(fvec4) Load 9(texColor)
|
||||
28: 23(fvec3) VectorShuffle 27 27 0 1 2
|
||||
29: 23(fvec3) FAdd 28 26
|
||||
30: 7(fvec4) Load 9(texColor)
|
||||
31: 7(fvec4) VectorShuffle 30 29 4 5 6 3
|
||||
Store 9(texColor) 31
|
||||
38: 37(ptr) AccessChain 35(alpha) 36
|
||||
39: 6(float) Load 38
|
||||
42: 41(ptr) AccessChain 9(texColor) 40
|
||||
43: 6(float) Load 42
|
||||
44: 6(float) FAdd 43 39
|
||||
45: 41(ptr) AccessChain 9(texColor) 40
|
||||
Store 45 44
|
||||
48: 7(fvec4) Load 9(texColor)
|
||||
Store 47(gl_FragColor) 48
|
||||
Return
|
||||
FunctionEnd
|
11
Test/remap.basic.dcefunc.frag
Normal file
11
Test/remap.basic.dcefunc.frag
Normal file
@ -0,0 +1,11 @@
|
||||
#version 450
|
||||
|
||||
in float inf;
|
||||
out vec4 outf4;
|
||||
|
||||
vec3 dead_fn() { return vec3(0); }
|
||||
|
||||
void main()
|
||||
{
|
||||
outf4 = vec4(inf);
|
||||
}
|
11
Test/remap.basic.everything.frag
Normal file
11
Test/remap.basic.everything.frag
Normal file
@ -0,0 +1,11 @@
|
||||
#version 450
|
||||
|
||||
in float inf;
|
||||
out vec4 outf4;
|
||||
|
||||
vec3 dead_fn() { return vec3(0); }
|
||||
|
||||
void main()
|
||||
{
|
||||
outf4 = vec4(inf);
|
||||
}
|
11
Test/remap.basic.none.frag
Normal file
11
Test/remap.basic.none.frag
Normal file
@ -0,0 +1,11 @@
|
||||
#version 450
|
||||
|
||||
in float inf;
|
||||
out vec4 outf4;
|
||||
|
||||
vec3 dead_fn() { return vec3(0); }
|
||||
|
||||
void main()
|
||||
{
|
||||
outf4 = vec4(inf);
|
||||
}
|
11
Test/remap.basic.strip.frag
Normal file
11
Test/remap.basic.strip.frag
Normal file
@ -0,0 +1,11 @@
|
||||
#version 450
|
||||
|
||||
in float inf;
|
||||
out vec4 outf4;
|
||||
|
||||
vec3 dead_fn() { return vec3(0); }
|
||||
|
||||
void main()
|
||||
{
|
||||
outf4 = vec4(inf);
|
||||
}
|
90
Test/remap.hlsl.sample.basic.everything.frag
Normal file
90
Test/remap.hlsl.sample.basic.everything.frag
Normal file
@ -0,0 +1,90 @@
|
||||
SamplerState g_sSamp : register(s0);
|
||||
uniform sampler2D g_sSamp2d
|
||||
{
|
||||
AddressU = MIRROR;
|
||||
AddressV = WRAP;
|
||||
MinLOD = 0;
|
||||
MaxLOD = 10;
|
||||
MaxAnisotropy = 2;
|
||||
MipLodBias = 0.2;
|
||||
}, g_sSamp2D_b;
|
||||
|
||||
Texture1D g_tTex1df4a : register(t1);
|
||||
|
||||
uniform Texture1D <float4> g_tTex1df4 : register(t0);
|
||||
Texture1D <int4> g_tTex1di4;
|
||||
Texture1D <uint4> g_tTex1du4;
|
||||
|
||||
Texture2D <float4> g_tTex2df4;
|
||||
Texture2D <int4> g_tTex2di4;
|
||||
Texture2D <uint4> g_tTex2du4;
|
||||
|
||||
Texture3D <float4> g_tTex3df4;
|
||||
Texture3D <int4> g_tTex3di4;
|
||||
Texture3D <uint4> g_tTex3du4;
|
||||
|
||||
TextureCube <float4> g_tTexcdf4;
|
||||
TextureCube <int4> g_tTexcdi4;
|
||||
TextureCube <uint4> g_tTexcdu4;
|
||||
|
||||
struct MemberTest
|
||||
{
|
||||
int Sample; // in HLSL, method names are valid struct members.
|
||||
int CalculateLevelOfDetail; // ...
|
||||
int CalculateLevelOfDetailUnclamped; // ...
|
||||
int Gather; // ...
|
||||
int GetDimensions; // ...
|
||||
int GetSamplePosition; // ...
|
||||
int Load; // ...
|
||||
int SampleBias; // ...
|
||||
int SampleCmp; // ...
|
||||
int SampleCmpLevelZero; // ...
|
||||
int SampleGrad; // ...
|
||||
int SampleLevel; // ...
|
||||
};
|
||||
|
||||
struct PS_OUTPUT
|
||||
{
|
||||
float4 Color : SV_Target0;
|
||||
float Depth : SV_Depth;
|
||||
};
|
||||
|
||||
PS_OUTPUT main()
|
||||
{
|
||||
PS_OUTPUT psout;
|
||||
|
||||
MemberTest mtest;
|
||||
mtest.CalculateLevelOfDetail = 1; // in HLSL, method names are valid struct members.
|
||||
mtest.CalculateLevelOfDetailUnclamped = 1; // ...
|
||||
mtest.Gather = 1; // ...
|
||||
mtest.GetDimensions = 1; // ...
|
||||
mtest.GetSamplePosition = 1; // ...
|
||||
mtest.Load = 1; // ...
|
||||
mtest.Sample = 1; // ...
|
||||
mtest.SampleBias = 1; // ...
|
||||
mtest.SampleCmp = 1; // ...
|
||||
mtest.SampleCmpLevelZero = 1; // ...
|
||||
mtest.SampleGrad = 1; // ...
|
||||
mtest.SampleLevel = 1; // ...
|
||||
|
||||
float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1);
|
||||
int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2);
|
||||
uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3);
|
||||
|
||||
float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2));
|
||||
int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4));
|
||||
uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6));
|
||||
|
||||
float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
|
||||
int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
|
||||
uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
|
||||
|
||||
float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
|
||||
int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
|
||||
uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
|
||||
|
||||
psout.Color = 1.0;
|
||||
psout.Depth = 1.0;
|
||||
|
||||
return psout;
|
||||
}
|
90
Test/remap.hlsl.sample.basic.none.frag
Normal file
90
Test/remap.hlsl.sample.basic.none.frag
Normal file
@ -0,0 +1,90 @@
|
||||
SamplerState g_sSamp : register(s0);
|
||||
uniform sampler2D g_sSamp2d
|
||||
{
|
||||
AddressU = MIRROR;
|
||||
AddressV = WRAP;
|
||||
MinLOD = 0;
|
||||
MaxLOD = 10;
|
||||
MaxAnisotropy = 2;
|
||||
MipLodBias = 0.2;
|
||||
}, g_sSamp2D_b;
|
||||
|
||||
Texture1D g_tTex1df4a : register(t1);
|
||||
|
||||
uniform Texture1D <float4> g_tTex1df4 : register(t0);
|
||||
Texture1D <int4> g_tTex1di4;
|
||||
Texture1D <uint4> g_tTex1du4;
|
||||
|
||||
Texture2D <float4> g_tTex2df4;
|
||||
Texture2D <int4> g_tTex2di4;
|
||||
Texture2D <uint4> g_tTex2du4;
|
||||
|
||||
Texture3D <float4> g_tTex3df4;
|
||||
Texture3D <int4> g_tTex3di4;
|
||||
Texture3D <uint4> g_tTex3du4;
|
||||
|
||||
TextureCube <float4> g_tTexcdf4;
|
||||
TextureCube <int4> g_tTexcdi4;
|
||||
TextureCube <uint4> g_tTexcdu4;
|
||||
|
||||
struct MemberTest
|
||||
{
|
||||
int Sample; // in HLSL, method names are valid struct members.
|
||||
int CalculateLevelOfDetail; // ...
|
||||
int CalculateLevelOfDetailUnclamped; // ...
|
||||
int Gather; // ...
|
||||
int GetDimensions; // ...
|
||||
int GetSamplePosition; // ...
|
||||
int Load; // ...
|
||||
int SampleBias; // ...
|
||||
int SampleCmp; // ...
|
||||
int SampleCmpLevelZero; // ...
|
||||
int SampleGrad; // ...
|
||||
int SampleLevel; // ...
|
||||
};
|
||||
|
||||
struct PS_OUTPUT
|
||||
{
|
||||
float4 Color : SV_Target0;
|
||||
float Depth : SV_Depth;
|
||||
};
|
||||
|
||||
PS_OUTPUT main()
|
||||
{
|
||||
PS_OUTPUT psout;
|
||||
|
||||
MemberTest mtest;
|
||||
mtest.CalculateLevelOfDetail = 1; // in HLSL, method names are valid struct members.
|
||||
mtest.CalculateLevelOfDetailUnclamped = 1; // ...
|
||||
mtest.Gather = 1; // ...
|
||||
mtest.GetDimensions = 1; // ...
|
||||
mtest.GetSamplePosition = 1; // ...
|
||||
mtest.Load = 1; // ...
|
||||
mtest.Sample = 1; // ...
|
||||
mtest.SampleBias = 1; // ...
|
||||
mtest.SampleCmp = 1; // ...
|
||||
mtest.SampleCmpLevelZero = 1; // ...
|
||||
mtest.SampleGrad = 1; // ...
|
||||
mtest.SampleLevel = 1; // ...
|
||||
|
||||
float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1);
|
||||
int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2);
|
||||
uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3);
|
||||
|
||||
float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2));
|
||||
int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4));
|
||||
uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6));
|
||||
|
||||
float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
|
||||
int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
|
||||
uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
|
||||
|
||||
float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
|
||||
int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
|
||||
uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
|
||||
|
||||
psout.Color = 1.0;
|
||||
psout.Depth = 1.0;
|
||||
|
||||
return psout;
|
||||
}
|
90
Test/remap.hlsl.sample.basic.strip.frag
Normal file
90
Test/remap.hlsl.sample.basic.strip.frag
Normal file
@ -0,0 +1,90 @@
|
||||
SamplerState g_sSamp : register(s0);
|
||||
uniform sampler2D g_sSamp2d
|
||||
{
|
||||
AddressU = MIRROR;
|
||||
AddressV = WRAP;
|
||||
MinLOD = 0;
|
||||
MaxLOD = 10;
|
||||
MaxAnisotropy = 2;
|
||||
MipLodBias = 0.2;
|
||||
}, g_sSamp2D_b;
|
||||
|
||||
Texture1D g_tTex1df4a : register(t1);
|
||||
|
||||
uniform Texture1D <float4> g_tTex1df4 : register(t0);
|
||||
Texture1D <int4> g_tTex1di4;
|
||||
Texture1D <uint4> g_tTex1du4;
|
||||
|
||||
Texture2D <float4> g_tTex2df4;
|
||||
Texture2D <int4> g_tTex2di4;
|
||||
Texture2D <uint4> g_tTex2du4;
|
||||
|
||||
Texture3D <float4> g_tTex3df4;
|
||||
Texture3D <int4> g_tTex3di4;
|
||||
Texture3D <uint4> g_tTex3du4;
|
||||
|
||||
TextureCube <float4> g_tTexcdf4;
|
||||
TextureCube <int4> g_tTexcdi4;
|
||||
TextureCube <uint4> g_tTexcdu4;
|
||||
|
||||
struct MemberTest
|
||||
{
|
||||
int Sample; // in HLSL, method names are valid struct members.
|
||||
int CalculateLevelOfDetail; // ...
|
||||
int CalculateLevelOfDetailUnclamped; // ...
|
||||
int Gather; // ...
|
||||
int GetDimensions; // ...
|
||||
int GetSamplePosition; // ...
|
||||
int Load; // ...
|
||||
int SampleBias; // ...
|
||||
int SampleCmp; // ...
|
||||
int SampleCmpLevelZero; // ...
|
||||
int SampleGrad; // ...
|
||||
int SampleLevel; // ...
|
||||
};
|
||||
|
||||
struct PS_OUTPUT
|
||||
{
|
||||
float4 Color : SV_Target0;
|
||||
float Depth : SV_Depth;
|
||||
};
|
||||
|
||||
PS_OUTPUT main()
|
||||
{
|
||||
PS_OUTPUT psout;
|
||||
|
||||
MemberTest mtest;
|
||||
mtest.CalculateLevelOfDetail = 1; // in HLSL, method names are valid struct members.
|
||||
mtest.CalculateLevelOfDetailUnclamped = 1; // ...
|
||||
mtest.Gather = 1; // ...
|
||||
mtest.GetDimensions = 1; // ...
|
||||
mtest.GetSamplePosition = 1; // ...
|
||||
mtest.Load = 1; // ...
|
||||
mtest.Sample = 1; // ...
|
||||
mtest.SampleBias = 1; // ...
|
||||
mtest.SampleCmp = 1; // ...
|
||||
mtest.SampleCmpLevelZero = 1; // ...
|
||||
mtest.SampleGrad = 1; // ...
|
||||
mtest.SampleLevel = 1; // ...
|
||||
|
||||
float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1);
|
||||
int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2);
|
||||
uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3);
|
||||
|
||||
float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2));
|
||||
int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4));
|
||||
uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6));
|
||||
|
||||
float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
|
||||
int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
|
||||
uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
|
||||
|
||||
float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
|
||||
int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
|
||||
uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
|
||||
|
||||
psout.Color = 1.0;
|
||||
psout.Depth = 1.0;
|
||||
|
||||
return psout;
|
||||
}
|
47
Test/remap.hlsl.templatetypes.everything.frag
Normal file
47
Test/remap.hlsl.templatetypes.everything.frag
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
float4 main(float4 input) : COLOR0
|
||||
{
|
||||
vector r00 = float4(1,2,3,4); // vector means float4
|
||||
float4 r01 = vector(2,3,4,5); // vector means float4
|
||||
|
||||
vector<bool, 1> r12 = bool1(false);
|
||||
vector<int, 1> r13 = int1(1);
|
||||
vector<float, 1> r14 = float1(1);
|
||||
vector<double, 1> r15 = double1(1);
|
||||
vector<uint, 1> r16 = uint1(1);
|
||||
|
||||
vector<bool, 2> r20 = bool2(false, true);
|
||||
vector<int, 2> r21 = int2(1,2);
|
||||
vector<float, 2> r22 = float2(1,2);
|
||||
vector<double, 2> r23 = double2(1,2);
|
||||
vector<uint, 2> r24 = uint2(1,2);
|
||||
|
||||
vector<bool, 3> r30 = bool3(false, true, true);
|
||||
vector<int, 3> r31 = int3(1,2,3);
|
||||
vector<float, 3> r32 = float3(1,2,3);
|
||||
vector<double, 3> r33 = double3(1,2,3);
|
||||
vector<uint, 3> r34 = uint3(1,2,3);
|
||||
|
||||
vector<bool, 4> r40 = bool4(false, true, true, false);
|
||||
vector<int, 4> r41 = int4(1,2,3,4);
|
||||
vector<float, 4> r42 = float4(1,2,3,4);
|
||||
vector<double, 4> r43 = double4(1,2,3,4);
|
||||
vector<uint, 4> r44 = uint4(1,2,3,4);
|
||||
|
||||
matrix r50 = float4x4(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
|
||||
float4x4 r51 = matrix(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
|
||||
|
||||
// matrix<bool, 2, 3> r60 = bool2x3(false, true, false, true, false, true); // TODO:
|
||||
matrix<float, 2, 3> r61 = float2x3(1,2,3,4,5,6);
|
||||
matrix<float, 3, 2> r62 = float3x2(1,2,3,4,5,6);
|
||||
// matrix<float, 4, 1> r63 = float4x1(1,2,3,4); // TODO:
|
||||
// matrix<float, 1, 4> r64 = float1x4(1,2,3,4); // TODO:
|
||||
matrix<float, 4, 2> r65 = float4x2(1,2,3,4,5,6,7,8);
|
||||
matrix<float, 4, 3> r66 = float4x3(1,2,3,4,5,6,7,8,9,10,11,12);
|
||||
|
||||
// TODO: bool mats
|
||||
// TODO: int mats
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
47
Test/remap.hlsl.templatetypes.none.frag
Normal file
47
Test/remap.hlsl.templatetypes.none.frag
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
float4 main(float4 input) : COLOR0
|
||||
{
|
||||
vector r00 = float4(1,2,3,4); // vector means float4
|
||||
float4 r01 = vector(2,3,4,5); // vector means float4
|
||||
|
||||
vector<bool, 1> r12 = bool1(false);
|
||||
vector<int, 1> r13 = int1(1);
|
||||
vector<float, 1> r14 = float1(1);
|
||||
vector<double, 1> r15 = double1(1);
|
||||
vector<uint, 1> r16 = uint1(1);
|
||||
|
||||
vector<bool, 2> r20 = bool2(false, true);
|
||||
vector<int, 2> r21 = int2(1,2);
|
||||
vector<float, 2> r22 = float2(1,2);
|
||||
vector<double, 2> r23 = double2(1,2);
|
||||
vector<uint, 2> r24 = uint2(1,2);
|
||||
|
||||
vector<bool, 3> r30 = bool3(false, true, true);
|
||||
vector<int, 3> r31 = int3(1,2,3);
|
||||
vector<float, 3> r32 = float3(1,2,3);
|
||||
vector<double, 3> r33 = double3(1,2,3);
|
||||
vector<uint, 3> r34 = uint3(1,2,3);
|
||||
|
||||
vector<bool, 4> r40 = bool4(false, true, true, false);
|
||||
vector<int, 4> r41 = int4(1,2,3,4);
|
||||
vector<float, 4> r42 = float4(1,2,3,4);
|
||||
vector<double, 4> r43 = double4(1,2,3,4);
|
||||
vector<uint, 4> r44 = uint4(1,2,3,4);
|
||||
|
||||
matrix r50 = float4x4(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
|
||||
float4x4 r51 = matrix(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
|
||||
|
||||
// matrix<bool, 2, 3> r60 = bool2x3(false, true, false, true, false, true); // TODO:
|
||||
matrix<float, 2, 3> r61 = float2x3(1,2,3,4,5,6);
|
||||
matrix<float, 3, 2> r62 = float3x2(1,2,3,4,5,6);
|
||||
// matrix<float, 4, 1> r63 = float4x1(1,2,3,4); // TODO:
|
||||
// matrix<float, 1, 4> r64 = float1x4(1,2,3,4); // TODO:
|
||||
matrix<float, 4, 2> r65 = float4x2(1,2,3,4,5,6,7,8);
|
||||
matrix<float, 4, 3> r66 = float4x3(1,2,3,4,5,6,7,8,9,10,11,12);
|
||||
|
||||
// TODO: bool mats
|
||||
// TODO: int mats
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
12
Test/remap.if.everything.frag
Normal file
12
Test/remap.if.everything.frag
Normal file
@ -0,0 +1,12 @@
|
||||
#version 450
|
||||
|
||||
in float inf;
|
||||
out vec4 outf4;
|
||||
|
||||
void main()
|
||||
{
|
||||
if (inf > 2.0)
|
||||
outf4 = vec4(inf);
|
||||
else
|
||||
outf4 = vec4(inf + -.5);
|
||||
}
|
12
Test/remap.if.none.frag
Normal file
12
Test/remap.if.none.frag
Normal file
@ -0,0 +1,12 @@
|
||||
#version 450
|
||||
|
||||
in float inf;
|
||||
out vec4 outf4;
|
||||
|
||||
void main()
|
||||
{
|
||||
if (inf > 2.0)
|
||||
outf4 = vec4(inf);
|
||||
else
|
||||
outf4 = vec4(inf + -.5);
|
||||
}
|
BIN
Test/remap.literal64.everything.spv
Normal file
BIN
Test/remap.literal64.everything.spv
Normal file
Binary file not shown.
BIN
Test/remap.literal64.none.spv
Normal file
BIN
Test/remap.literal64.none.spv
Normal file
Binary file not shown.
29
Test/remap.similar_1a.everything.frag
Normal file
29
Test/remap.similar_1a.everything.frag
Normal file
@ -0,0 +1,29 @@
|
||||
#version 450
|
||||
|
||||
in float inf;
|
||||
in flat ivec4 ini4;
|
||||
out vec4 outf4;
|
||||
|
||||
float Test1(int bound)
|
||||
{
|
||||
float r = 0;
|
||||
for (int x=0; x<bound; ++x)
|
||||
r += 0.5;
|
||||
return r;
|
||||
}
|
||||
|
||||
float Test2(int bound)
|
||||
{
|
||||
if (bound > 2)
|
||||
return Test1(bound);
|
||||
else
|
||||
return float(bound * 2 +
|
||||
ini4.y * ini4.z +
|
||||
ini4.x);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
outf4 = vec4(Test1(int(inf)) +
|
||||
Test2(int(inf)));
|
||||
}
|
29
Test/remap.similar_1a.none.frag
Normal file
29
Test/remap.similar_1a.none.frag
Normal file
@ -0,0 +1,29 @@
|
||||
#version 450
|
||||
|
||||
in float inf;
|
||||
in flat ivec4 ini4;
|
||||
out vec4 outf4;
|
||||
|
||||
float Test1(int bound)
|
||||
{
|
||||
float r = 0;
|
||||
for (int x=0; x<bound; ++x)
|
||||
r += 0.5;
|
||||
return r;
|
||||
}
|
||||
|
||||
float Test2(int bound)
|
||||
{
|
||||
if (bound > 2)
|
||||
return Test1(bound);
|
||||
else
|
||||
return float(bound * 2 +
|
||||
ini4.y * ini4.z +
|
||||
ini4.x);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
outf4 = vec4(Test1(int(inf)) +
|
||||
Test2(int(inf)));
|
||||
}
|
30
Test/remap.similar_1b.everything.frag
Normal file
30
Test/remap.similar_1b.everything.frag
Normal file
@ -0,0 +1,30 @@
|
||||
#version 450
|
||||
|
||||
out vec4 outf4;
|
||||
in flat ivec4 ini4;
|
||||
in float inf;
|
||||
|
||||
float Test1(int bound)
|
||||
{
|
||||
float r = 0;
|
||||
for (int x=0; x<bound; ++x)
|
||||
r += 0.5;
|
||||
r += 0.2;
|
||||
return r;
|
||||
}
|
||||
|
||||
float Test2(int bound)
|
||||
{
|
||||
if (bound > 2) {
|
||||
return Test1(bound * 2);
|
||||
} else
|
||||
return float(bound * 4 +
|
||||
ini4.y * ini4.z +
|
||||
ini4.x);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
outf4 = vec4(Test1(int(inf)) +
|
||||
Test2(int(inf)));
|
||||
}
|
30
Test/remap.similar_1b.none.frag
Normal file
30
Test/remap.similar_1b.none.frag
Normal file
@ -0,0 +1,30 @@
|
||||
#version 450
|
||||
|
||||
out vec4 outf4;
|
||||
in flat ivec4 ini4;
|
||||
in float inf;
|
||||
|
||||
float Test1(int bound)
|
||||
{
|
||||
float r = 0;
|
||||
for (int x=0; x<bound; ++x)
|
||||
r += 0.5;
|
||||
r += 0.2;
|
||||
return r;
|
||||
}
|
||||
|
||||
float Test2(int bound)
|
||||
{
|
||||
if (bound > 2) {
|
||||
return Test1(bound * 2);
|
||||
} else
|
||||
return float(bound * 4 +
|
||||
ini4.y * ini4.z +
|
||||
ini4.x);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
outf4 = vec4(Test1(int(inf)) +
|
||||
Test2(int(inf)));
|
||||
}
|
16
Test/remap.switch.everything.frag
Normal file
16
Test/remap.switch.everything.frag
Normal file
@ -0,0 +1,16 @@
|
||||
#version 450
|
||||
|
||||
precision highp float;
|
||||
|
||||
layout(location = 0) out mediump vec4 FragColor;
|
||||
layout(location = 0) in vec4 in0;
|
||||
|
||||
void main()
|
||||
{
|
||||
switch(int(in0.w)) {
|
||||
case 0: FragColor = vec4(in0.x + 0); break;
|
||||
case 1: FragColor = vec4(in0.y + 1); break;
|
||||
case 2: FragColor = vec4(in0.z + 2); break;
|
||||
default: FragColor = vec4(-1);
|
||||
}
|
||||
}
|
16
Test/remap.switch.none.frag
Normal file
16
Test/remap.switch.none.frag
Normal file
@ -0,0 +1,16 @@
|
||||
#version 450
|
||||
|
||||
precision highp float;
|
||||
|
||||
layout(location = 0) out mediump vec4 FragColor;
|
||||
layout(location = 0) in vec4 in0;
|
||||
|
||||
void main()
|
||||
{
|
||||
switch(int(in0.w)) {
|
||||
case 0: FragColor = vec4(in0.x + 0); break;
|
||||
case 1: FragColor = vec4(in0.y + 1); break;
|
||||
case 2: FragColor = vec4(in0.z + 2); break;
|
||||
default: FragColor = vec4(-1);
|
||||
}
|
||||
}
|
17
Test/remap.uniformarray.everything.frag
Normal file
17
Test/remap.uniformarray.everything.frag
Normal file
@ -0,0 +1,17 @@
|
||||
#version 140
|
||||
|
||||
uniform sampler2D texSampler2D;
|
||||
in vec3 inColor;
|
||||
in vec4 color[6];
|
||||
in float alpha[16];
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 texColor = color[1] + color[1];
|
||||
|
||||
texColor.xyz += inColor;
|
||||
|
||||
texColor.a += alpha[12];
|
||||
|
||||
gl_FragColor = texColor;
|
||||
}
|
17
Test/remap.uniformarray.none.frag
Normal file
17
Test/remap.uniformarray.none.frag
Normal file
@ -0,0 +1,17 @@
|
||||
#version 140
|
||||
|
||||
uniform sampler2D texSampler2D;
|
||||
in vec3 inColor;
|
||||
in vec4 color[6];
|
||||
in float alpha[16];
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 texColor = color[1] + color[1];
|
||||
|
||||
texColor.xyz += inColor;
|
||||
|
||||
texColor.a += alpha[12];
|
||||
|
||||
gl_FragColor = texColor;
|
||||
}
|
@ -37,4 +37,37 @@ if (TARGET gmock)
|
||||
glslang OSDependent OGLCompiler HLSL glslang
|
||||
SPIRV glslang-default-resource-limits gmock)
|
||||
add_test(NAME glslang-gtests COMMAND glslangtests)
|
||||
|
||||
# -- Remapper tests
|
||||
set(REMAPPER_TEST_SOURCES
|
||||
# Framework related source files
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Settings.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h
|
||||
|
||||
# Test related source files
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp
|
||||
)
|
||||
|
||||
add_executable(remappertests ${REMAPPER_TEST_SOURCES})
|
||||
set_property(TARGET remappertests PROPERTY FOLDER tests)
|
||||
glslang_set_link_args(remappertests)
|
||||
install(TARGETS remappertests
|
||||
RUNTIME DESTINATION bin)
|
||||
|
||||
target_compile_definitions(remappertests
|
||||
PRIVATE GLSLANG_TEST_DIRECTORY="${CMAKE_CURRENT_SOURCE_DIR}/../Test")
|
||||
target_include_directories(remappertests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${gmock_SOURCE_DIR}/include
|
||||
${gtest_SOURCE_DIR}/include)
|
||||
target_link_libraries(remappertests PRIVATE
|
||||
SPVRemapper
|
||||
glslang OSDependent OGLCompiler HLSL glslang
|
||||
SPIRV glslang-default-resource-limits gmock)
|
||||
add_test(NAME remapper-gtests COMMAND remappertests)
|
||||
endif()
|
||||
|
117
gtests/Remap.FromFile.cpp
Normal file
117
gtests/Remap.FromFile.cpp
Normal file
@ -0,0 +1,117 @@
|
||||
//
|
||||
// Copyright (C) 2016 LunarG, Inc.
|
||||
//
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
//
|
||||
// Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
//
|
||||
// Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following
|
||||
// disclaimer in the documentation and/or other materials provided
|
||||
// with the distribution.
|
||||
//
|
||||
// Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "TestFixture.h"
|
||||
|
||||
namespace glslangtest {
|
||||
namespace {
|
||||
|
||||
struct RemapTestArgs {
|
||||
const char* fileName;
|
||||
const char* entryPoint;
|
||||
Source sourceLanguage;
|
||||
unsigned int remapOpts;
|
||||
};
|
||||
|
||||
// We are using FileNameEntryPointPair objects as parameters for instantiating
|
||||
// the template, so the global FileNameAsCustomTestSuffix() won't work since
|
||||
// it assumes std::string as parameters. Thus, an overriding one here.
|
||||
std::string FileNameAsCustomTestSuffix(
|
||||
const ::testing::TestParamInfo<RemapTestArgs>& info) {
|
||||
std::string name = info.param.fileName;
|
||||
// A valid test case suffix cannot have '.' and '-' inside.
|
||||
std::replace(name.begin(), name.end(), '.', '_');
|
||||
std::replace(name.begin(), name.end(), '-', '_');
|
||||
return name;
|
||||
}
|
||||
|
||||
using RemapTest = GlslangTest<::testing::TestWithParam<RemapTestArgs>>;
|
||||
|
||||
// Remapping SPIR-V modules.
|
||||
TEST_P(RemapTest, FromFile)
|
||||
{
|
||||
if (GetSuffix(GetParam().fileName) == "spv") {
|
||||
loadFileRemapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
|
||||
GetParam().sourceLanguage,
|
||||
Semantics::Vulkan,
|
||||
Target::Spv,
|
||||
GetParam().remapOpts);
|
||||
} else {
|
||||
loadFileCompileRemapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
|
||||
GetParam().sourceLanguage,
|
||||
Semantics::Vulkan,
|
||||
Target::Spv,
|
||||
GetParam().entryPoint,
|
||||
GetParam().remapOpts);
|
||||
}
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
ToSpirv, RemapTest,
|
||||
::testing::ValuesIn(std::vector<RemapTestArgs>{
|
||||
// GLSL remapper tests
|
||||
// testname entry language remapper_options
|
||||
{ "remap.basic.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.basic.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
{ "remap.basic.dcefunc.frag", "main", Source::GLSL, spv::spirvbin_t::DCE_FUNCS },
|
||||
{ "remap.basic.strip.frag", "main", Source::GLSL, spv::spirvbin_t::STRIP },
|
||||
{ "remap.switch.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.switch.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
{ "remap.literal64.none.spv", "main", Source::GLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.literal64.everything.spv", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
{ "remap.if.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.if.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
{ "remap.similar_1a.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.similar_1b.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.similar_1a.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
{ "remap.similar_1b.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
{ "remap.uniformarray.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.uniformarray.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
|
||||
// HLSL remapper tests
|
||||
{ "remap.hlsl.sample.basic.strip.frag", "main", Source::HLSL, spv::spirvbin_t::STRIP },
|
||||
{ "remap.hlsl.sample.basic.everything.frag", "main", Source::HLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
{ "remap.hlsl.sample.basic.none.frag", "main", Source::HLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.hlsl.templatetypes.none.frag", "main", Source::HLSL, spv::spirvbin_t::NONE },
|
||||
{ "remap.hlsl.templatetypes.everything.frag", "main", Source::HLSL, spv::spirvbin_t::DO_EVERYTHING },
|
||||
}),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
// clang-format on
|
||||
|
||||
} // anonymous namespace
|
||||
} // namespace glslangtest
|
@ -116,6 +116,32 @@ std::pair<bool, std::string> ReadFile(const std::string& path)
|
||||
return std::make_pair(false, "");
|
||||
}
|
||||
|
||||
std::pair<bool, std::vector<std::uint32_t> > ReadSpvBinaryFile(const std::string& path)
|
||||
{
|
||||
std::ifstream fstream(path, std::fstream::in | std::fstream::binary);
|
||||
|
||||
if (!fstream)
|
||||
return std::make_pair(false, std::vector<std::uint32_t>());
|
||||
|
||||
std::vector<std::uint32_t> contents;
|
||||
|
||||
// Reserve space (for efficiency, not for correctness)
|
||||
fstream.seekg(0, fstream.end);
|
||||
contents.reserve(size_t(fstream.tellg()) / sizeof(std::uint32_t));
|
||||
fstream.seekg(0, fstream.beg);
|
||||
|
||||
// There is no istream iterator traversing by uint32_t, so we must loop.
|
||||
while (!fstream.eof()) {
|
||||
std::uint32_t inWord;
|
||||
fstream.read((char *)&inWord, sizeof(inWord));
|
||||
|
||||
if (!fstream.eof())
|
||||
contents.push_back(inWord);
|
||||
}
|
||||
|
||||
return std::make_pair(true, contents); // hopefully, c++11 move semantics optimizes the copy away.
|
||||
}
|
||||
|
||||
bool WriteFile(const std::string& path, const std::string& contents)
|
||||
{
|
||||
std::ofstream fstream(path, std::ios::out);
|
||||
|
@ -40,12 +40,14 @@
|
||||
#include <sstream>
|
||||
#include <streambuf>
|
||||
#include <tuple>
|
||||
#include <string>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "SPIRV/GlslangToSpv.h"
|
||||
#include "SPIRV/disassemble.h"
|
||||
#include "SPIRV/doc.h"
|
||||
#include "SPIRV/SPVRemapper.h"
|
||||
#include "StandAlone/ResourceLimits.h"
|
||||
#include "glslang/Public/ShaderLang.h"
|
||||
|
||||
@ -93,6 +95,7 @@ EShMessages DeriveOptions(Source, Semantics, Target);
|
||||
// Reads the content of the file at the given |path|. On success, returns true
|
||||
// and the contents; otherwise, returns false and an empty string.
|
||||
std::pair<bool, std::string> ReadFile(const std::string& path);
|
||||
std::pair<bool, std::vector<std::uint32_t> > ReadSpvBinaryFile(const std::string& path);
|
||||
|
||||
// Writes the given |contents| into the file at the given |path|. Returns true
|
||||
// on successful output.
|
||||
@ -128,6 +131,16 @@ public:
|
||||
ASSERT_TRUE(fileReadOk) << "Cannot open " << tag << " file: " << path;
|
||||
}
|
||||
|
||||
// Tries to load the contents from the file at the given |path|. On success,
|
||||
// writes the contents into |contents|. On failure, errors out.
|
||||
void tryLoadSpvFile(const std::string& path, const std::string& tag,
|
||||
std::vector<uint32_t>& contents)
|
||||
{
|
||||
bool fileReadOk;
|
||||
std::tie(fileReadOk, contents) = ReadSpvBinaryFile(path);
|
||||
ASSERT_TRUE(fileReadOk) << "Cannot open " << tag << " file: " << path;
|
||||
}
|
||||
|
||||
// Checks the equality of |expected| and |real|. If they are not equal,
|
||||
// write |real| to the given file named as |fname| if update mode is on.
|
||||
void checkEqAndUpdateIfRequested(const std::string& expected,
|
||||
@ -221,6 +234,68 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// This is like compileAndLink but with remapping of the SPV binary
|
||||
// through spirvbin_t::remap(). While technically this could be merged
|
||||
// with compileAndLink() above (with the remap step optionally being a no-op)
|
||||
// it is given separately here for ease of future extraction.
|
||||
GlslangResult compileLinkRemap(
|
||||
const std::string shaderName, const std::string& code,
|
||||
const std::string& entryPointName, EShMessages controls,
|
||||
const unsigned int remapOptions = spv::spirvbin_t::NONE)
|
||||
{
|
||||
const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
|
||||
|
||||
glslang::TShader shader(kind);
|
||||
bool success = compile(&shader, code, entryPointName, controls);
|
||||
|
||||
glslang::TProgram program;
|
||||
program.addShader(&shader);
|
||||
success &= program.link(controls);
|
||||
|
||||
spv::SpvBuildLogger logger;
|
||||
|
||||
if (success && (controls & EShMsgSpvRules)) {
|
||||
std::vector<uint32_t> spirv_binary;
|
||||
glslang::GlslangToSpv(*program.getIntermediate(kind),
|
||||
spirv_binary, &logger);
|
||||
|
||||
spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
|
||||
|
||||
std::ostringstream disassembly_stream;
|
||||
spv::Parameterize();
|
||||
spv::Disassemble(disassembly_stream, spirv_binary);
|
||||
return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
|
||||
program.getInfoLog(), program.getInfoDebugLog(),
|
||||
logger.getAllMessages(), disassembly_stream.str()};
|
||||
} else {
|
||||
return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
|
||||
program.getInfoLog(), program.getInfoDebugLog(), "", ""};
|
||||
}
|
||||
}
|
||||
|
||||
// remap the binary in 'code' with the options in remapOptions
|
||||
GlslangResult remap(
|
||||
const std::string shaderName, const std::vector<uint32_t>& code,
|
||||
EShMessages controls,
|
||||
const unsigned int remapOptions = spv::spirvbin_t::NONE)
|
||||
{
|
||||
if ((controls & EShMsgSpvRules)) {
|
||||
std::vector<uint32_t> spirv_binary(code); // scratch copy
|
||||
|
||||
spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
|
||||
|
||||
std::ostringstream disassembly_stream;
|
||||
spv::Parameterize();
|
||||
spv::Disassemble(disassembly_stream, spirv_binary);
|
||||
|
||||
return {{{shaderName, "", ""},},
|
||||
"", "",
|
||||
"", disassembly_stream.str()};
|
||||
} else {
|
||||
return {{{shaderName, "", ""},}, "", "", "", ""};
|
||||
}
|
||||
}
|
||||
|
||||
void outputResultToStream(std::ostringstream* stream,
|
||||
const GlslangResult& result,
|
||||
EShMessages controls)
|
||||
@ -272,6 +347,60 @@ public:
|
||||
expectedOutputFname);
|
||||
}
|
||||
|
||||
void loadFileCompileRemapAndCheck(const std::string& testDir,
|
||||
const std::string& testName,
|
||||
Source source,
|
||||
Semantics semantics,
|
||||
Target target,
|
||||
const std::string& entryPointName="",
|
||||
const unsigned int remapOptions = spv::spirvbin_t::NONE)
|
||||
{
|
||||
const std::string inputFname = testDir + "/" + testName;
|
||||
const std::string expectedOutputFname =
|
||||
testDir + "/baseResults/" + testName + ".out";
|
||||
std::string input, expectedOutput;
|
||||
|
||||
tryLoadFile(inputFname, "input", &input);
|
||||
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
|
||||
|
||||
const EShMessages controls = DeriveOptions(source, semantics, target);
|
||||
GlslangResult result = compileLinkRemap(testName, input, entryPointName, controls, remapOptions);
|
||||
|
||||
// Generate the hybrid output in the way of glslangValidator.
|
||||
std::ostringstream stream;
|
||||
outputResultToStream(&stream, result, controls);
|
||||
|
||||
checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
|
||||
expectedOutputFname);
|
||||
}
|
||||
|
||||
void loadFileRemapAndCheck(const std::string& testDir,
|
||||
const std::string& testName,
|
||||
Source source,
|
||||
Semantics semantics,
|
||||
Target target,
|
||||
const unsigned int remapOptions = spv::spirvbin_t::NONE)
|
||||
{
|
||||
const std::string inputFname = testDir + "/" + testName;
|
||||
const std::string expectedOutputFname =
|
||||
testDir + "/baseResults/" + testName + ".out";
|
||||
std::vector<std::uint32_t> input;
|
||||
std::string expectedOutput;
|
||||
|
||||
tryLoadSpvFile(inputFname, "input", input);
|
||||
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
|
||||
|
||||
const EShMessages controls = DeriveOptions(source, semantics, target);
|
||||
GlslangResult result = remap(testName, input, controls, remapOptions);
|
||||
|
||||
// Generate the hybrid output in the way of glslangValidator.
|
||||
std::ostringstream stream;
|
||||
outputResultToStream(&stream, result, controls);
|
||||
|
||||
checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
|
||||
expectedOutputFname);
|
||||
}
|
||||
|
||||
// Preprocesses the given |source| code. On success, returns true, the
|
||||
// preprocessed shader, and warning messages. Otherwise, returns false, an
|
||||
// empty string, and error messages.
|
||||
|
Loading…
Reference in New Issue
Block a user