Updated glslang.

This commit is contained in:
Branimir Karadžić 2018-05-19 09:38:04 -07:00
parent 039458155b
commit d0950f2b48
23 changed files with 1490 additions and 766 deletions

View File

@ -2479,17 +2479,29 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
node->getType().containsBasicType(glslang::EbtInt16) ||
node->getType().containsBasicType(glslang::EbtUint16);
if (contains16BitType) {
if (storageClass == spv::StorageClassInput || storageClass == spv::StorageClassOutput) {
switch (storageClass) {
case spv::StorageClassInput:
case spv::StorageClassOutput:
addPre13Extension(spv::E_SPV_KHR_16bit_storage);
builder.addCapability(spv::CapabilityStorageInputOutput16);
} else if (storageClass == spv::StorageClassPushConstant) {
break;
case spv::StorageClassPushConstant:
addPre13Extension(spv::E_SPV_KHR_16bit_storage);
builder.addCapability(spv::CapabilityStoragePushConstant16);
} else if (storageClass == spv::StorageClassUniform) {
break;
case spv::StorageClassUniform:
addPre13Extension(spv::E_SPV_KHR_16bit_storage);
builder.addCapability(spv::CapabilityStorageUniform16);
if (node->getType().getQualifier().storage == glslang::EvqBuffer)
builder.addCapability(spv::CapabilityStorageUniformBufferBlock16);
else
builder.addCapability(spv::CapabilityStorageUniform16);
break;
case spv::StorageClassStorageBuffer:
addPre13Extension(spv::E_SPV_KHR_16bit_storage);
builder.addCapability(spv::CapabilityStorageUniformBufferBlock16);
break;
default:
break;
}
}
@ -4618,6 +4630,10 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe
unaryOp = spv::OpFwidthCoarse;
break;
case glslang::EOpInterpolateAtCentroid:
#ifdef AMD_EXTENSIONS
if (typeProxy == glslang::EbtFloat16)
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
#endif
builder.addCapability(spv::CapabilityInterpolationFunction);
libCall = spv::GLSLstd450InterpolateAtCentroid;
break;
@ -6085,10 +6101,18 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
libCall = spv::GLSLstd450Refract;
break;
case glslang::EOpInterpolateAtSample:
#ifdef AMD_EXTENSIONS
if (typeProxy == glslang::EbtFloat16)
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
#endif
builder.addCapability(spv::CapabilityInterpolationFunction);
libCall = spv::GLSLstd450InterpolateAtSample;
break;
case glslang::EOpInterpolateAtOffset:
#ifdef AMD_EXTENSIONS
if (typeProxy == glslang::EbtFloat16)
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
#endif
builder.addCapability(spv::CapabilityInterpolationFunction);
libCall = spv::GLSLstd450InterpolateAtOffset;
break;
@ -6239,6 +6263,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
break;
case glslang::EOpInterpolateAtVertex:
if (typeProxy == glslang::EbtFloat16)
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
libCall = spv::InterpolateAtVertexAMD;
break;

8
3rdparty/glslang/Test/400.geom vendored Normal file → Executable file
View File

@ -285,10 +285,10 @@ void doubles()
dvec3v += reflect(dvec3v, dvec3v);
dvec4v += reflect(dvec4v, dvec4v);
doublev += refract(doublev, doublev, doublev);
dvec2v += refract(dvec2v, dvec2v, doublev);
dvec3v += refract(dvec3v, dvec3v, doublev);
dvec4v += refract(dvec4v, dvec4v, doublev);
doublev += refract(doublev, doublev, 1.3);
dvec2v += refract(dvec2v, dvec2v, 1.3);
dvec3v += refract(dvec3v, dvec3v, 1.3);
dvec4v += refract(dvec4v, dvec4v, 1.3);
dmat2 dmat2v = outerProduct(dvec2v, dvec2v);
dmat3 dmat3v = outerProduct(dvec3v, dvec3v);

View File

@ -844,25 +844,29 @@ ERROR: node is still EOpNull!
0:288 refract ( global double)
0:288 'doublev' ( temp double)
0:288 'doublev' ( temp double)
0:288 'doublev' ( temp double)
0:288 Constant:
0:288 1.300000
0:289 add second child into first child ( temp 2-component vector of double)
0:289 'dvec2v' ( temp 2-component vector of double)
0:289 refract ( global 2-component vector of double)
0:289 'dvec2v' ( temp 2-component vector of double)
0:289 'dvec2v' ( temp 2-component vector of double)
0:289 'doublev' ( temp double)
0:289 Constant:
0:289 1.300000
0:290 add second child into first child ( temp 3-component vector of double)
0:290 'dvec3v' ( temp 3-component vector of double)
0:290 refract ( global 3-component vector of double)
0:290 'dvec3v' ( temp 3-component vector of double)
0:290 'dvec3v' ( temp 3-component vector of double)
0:290 'doublev' ( temp double)
0:290 Constant:
0:290 1.300000
0:291 add second child into first child ( temp 4-component vector of double)
0:291 'dvec4v' ( temp 4-component vector of double)
0:291 refract ( global 4-component vector of double)
0:291 'dvec4v' ( temp 4-component vector of double)
0:291 'dvec4v' ( temp 4-component vector of double)
0:291 'doublev' ( temp double)
0:291 Constant:
0:291 1.300000
0:293 Sequence
0:293 move second child to first child ( temp 2X2 matrix of double)
0:293 'dmat2v' ( temp 2X2 matrix of double)

View File

@ -15,17 +15,19 @@ local_size = (1, 1, 1)
0:? Sequence
0:4 move second child to first child ( temp int)
0:? 'dti' ( temp int)
0:? 'dti' ( in int GlobalInvocationID)
0:? Construct int ( temp int)
0:? 'dti' ( in 3-component vector of int GlobalInvocationID)
0:4 move second child to first child ( temp int)
0:? 'gti' ( temp int)
0:? 'gti' ( in int LocalInvocationID)
0:? Construct int ( temp int)
0:? 'gti' ( in 3-component vector of int LocalInvocationID)
0:4 Function Call: @main(i1;i1; ( temp void)
0:? 'dti' ( temp int)
0:? 'gti' ( temp int)
0:? Linker Objects
0:? 'a' ( shared 100-element array of 4-component vector of float)
0:? 'dti' ( in int GlobalInvocationID)
0:? 'gti' ( in int LocalInvocationID)
0:? 'dti' ( in 3-component vector of int GlobalInvocationID)
0:? 'gti' ( in 3-component vector of int LocalInvocationID)
Linked compute stage:
@ -47,26 +49,28 @@ local_size = (1, 1, 1)
0:? Sequence
0:4 move second child to first child ( temp int)
0:? 'dti' ( temp int)
0:? 'dti' ( in int GlobalInvocationID)
0:? Construct int ( temp int)
0:? 'dti' ( in 3-component vector of int GlobalInvocationID)
0:4 move second child to first child ( temp int)
0:? 'gti' ( temp int)
0:? 'gti' ( in int LocalInvocationID)
0:? Construct int ( temp int)
0:? 'gti' ( in 3-component vector of int LocalInvocationID)
0:4 Function Call: @main(i1;i1; ( temp void)
0:? 'dti' ( temp int)
0:? 'gti' ( temp int)
0:? Linker Objects
0:? 'a' ( shared 100-element array of 4-component vector of float)
0:? 'dti' ( in int GlobalInvocationID)
0:? 'gti' ( in int LocalInvocationID)
0:? 'dti' ( in 3-component vector of int GlobalInvocationID)
0:? 'gti' ( in 3-component vector of int LocalInvocationID)
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 35
// Id's are bound by 38
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 18 21
EntryPoint GLCompute 4 "main" 19 23
ExecutionMode 4 LocalSize 1 1 1
Source HLSL 500
Name 4 "main"
@ -74,44 +78,47 @@ local_size = (1, 1, 1)
Name 9 "dti"
Name 10 "gti"
Name 16 "dti"
Name 18 "dti"
Name 20 "gti"
Name 21 "gti"
Name 23 "param"
Name 25 "param"
Name 34 "a"
Decorate 18(dti) BuiltIn GlobalInvocationId
Decorate 21(gti) BuiltIn LocalInvocationId
Name 19 "dti"
Name 22 "gti"
Name 23 "gti"
Name 26 "param"
Name 28 "param"
Name 37 "a"
Decorate 19(dti) BuiltIn GlobalInvocationId
Decorate 23(gti) BuiltIn LocalInvocationId
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
8: TypeFunction 2 7(ptr) 7(ptr)
17: TypePointer Input 6(int)
18(dti): 17(ptr) Variable Input
21(gti): 17(ptr) Variable Input
28: TypeFloat 32
29: TypeVector 28(float) 4
30: TypeInt 32 0
31: 30(int) Constant 100
32: TypeArray 29(fvec4) 31
33: TypePointer Workgroup 32
34(a): 33(ptr) Variable Workgroup
17: TypeVector 6(int) 3
18: TypePointer Input 17(ivec3)
19(dti): 18(ptr) Variable Input
23(gti): 18(ptr) Variable Input
31: TypeFloat 32
32: TypeVector 31(float) 4
33: TypeInt 32 0
34: 33(int) Constant 100
35: TypeArray 32(fvec4) 34
36: TypePointer Workgroup 35
37(a): 36(ptr) Variable Workgroup
4(main): 2 Function None 3
5: Label
16(dti): 7(ptr) Variable Function
20(gti): 7(ptr) Variable Function
23(param): 7(ptr) Variable Function
25(param): 7(ptr) Variable Function
19: 6(int) Load 18(dti)
Store 16(dti) 19
22: 6(int) Load 21(gti)
Store 20(gti) 22
24: 6(int) Load 16(dti)
Store 23(param) 24
26: 6(int) Load 20(gti)
Store 25(param) 26
27: 2 FunctionCall 11(@main(i1;i1;) 23(param) 25(param)
22(gti): 7(ptr) Variable Function
26(param): 7(ptr) Variable Function
28(param): 7(ptr) Variable Function
20: 17(ivec3) Load 19(dti)
21: 6(int) CompositeExtract 20 0
Store 16(dti) 21
24: 17(ivec3) Load 23(gti)
25: 6(int) CompositeExtract 24 0
Store 22(gti) 25
27: 6(int) Load 16(dti)
Store 26(param) 27
29: 6(int) Load 22(gti)
Store 28(param) 29
30: 2 FunctionCall 11(@main(i1;i1;) 26(param) 28(param)
Return
FunctionEnd
11(@main(i1;i1;): 2 Function None 8

View File

@ -0,0 +1,204 @@
hlsl.coverage.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:15 Function Definition: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Function Parameters:
0:15 'i' ( in structure{})
0:? Sequence
0:17 move second child to first child ( temp 4-component vector of float)
0:17 vColor: direct index for structure ( temp 4-component vector of float)
0:17 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:17 Constant:
0:17 0 (const int)
0:? Constant:
0:? 1.000000
0:? 0.000000
0:? 0.000000
0:? 1.000000
0:18 move second child to first child ( temp uint)
0:18 nCoverageMask: direct index for structure ( temp uint)
0:18 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0 (const uint)
0:19 Branch: Return with expression
0:19 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Function Definition: main( ( temp void)
0:15 Function Parameters:
0:? Sequence
0:15 Sequence
0:15 move second child to first child ( temp structure{})
0:? 'i' ( temp structure{})
0:? 'i' ( in structure{})
0:15 Sequence
0:15 move second child to first child ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Function Call: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:? 'i' ( temp structure{})
0:15 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
0:15 vColor: direct index for structure ( temp 4-component vector of float)
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Constant:
0:15 0 (const int)
0:15 move second child to first child ( temp uint)
0:15 direct index ( out uint SampleMaskIn)
0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
0:15 Constant:
0:15 0 (const int)
0:15 nCoverageMask: direct index for structure ( temp uint)
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Constant:
0:15 1 (const int)
0:? Linker Objects
0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:15 Function Definition: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Function Parameters:
0:15 'i' ( in structure{})
0:? Sequence
0:17 move second child to first child ( temp 4-component vector of float)
0:17 vColor: direct index for structure ( temp 4-component vector of float)
0:17 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:17 Constant:
0:17 0 (const int)
0:? Constant:
0:? 1.000000
0:? 0.000000
0:? 0.000000
0:? 1.000000
0:18 move second child to first child ( temp uint)
0:18 nCoverageMask: direct index for structure ( temp uint)
0:18 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0 (const uint)
0:19 Branch: Return with expression
0:19 'o' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Function Definition: main( ( temp void)
0:15 Function Parameters:
0:? Sequence
0:15 Sequence
0:15 move second child to first child ( temp structure{})
0:? 'i' ( temp structure{})
0:? 'i' ( in structure{})
0:15 Sequence
0:15 move second child to first child ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Function Call: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:? 'i' ( temp structure{})
0:15 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
0:15 vColor: direct index for structure ( temp 4-component vector of float)
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Constant:
0:15 0 (const int)
0:15 move second child to first child ( temp uint)
0:15 direct index ( out uint SampleMaskIn)
0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
0:15 Constant:
0:15 0 (const int)
0:15 nCoverageMask: direct index for structure ( temp uint)
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float vColor, temp uint nCoverageMask})
0:15 Constant:
0:15 1 (const int)
0:? Linker Objects
0:? '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
0:? '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 52
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 41 47
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 6 "PS_INPUT"
Name 11 "PS_OUTPUT"
MemberName 11(PS_OUTPUT) 0 "vColor"
MemberName 11(PS_OUTPUT) 1 "nCoverageMask"
Name 14 "@main(struct-PS_INPUT1;"
Name 13 "i"
Name 17 "o"
Name 32 "i"
Name 34 "i"
Name 36 "flattenTemp"
Name 37 "param"
Name 41 "@entryPointOutput.vColor"
Name 47 "@entryPointOutput.nCoverageMask"
Decorate 41(@entryPointOutput.vColor) Location 0
Decorate 47(@entryPointOutput.nCoverageMask) BuiltIn SampleMask
2: TypeVoid
3: TypeFunction 2
6(PS_INPUT): TypeStruct
7: TypePointer Function 6(PS_INPUT)
8: TypeFloat 32
9: TypeVector 8(float) 4
10: TypeInt 32 0
11(PS_OUTPUT): TypeStruct 9(fvec4) 10(int)
12: TypeFunction 11(PS_OUTPUT) 7(ptr)
16: TypePointer Function 11(PS_OUTPUT)
18: TypeInt 32 1
19: 18(int) Constant 0
20: 8(float) Constant 1065353216
21: 8(float) Constant 0
22: 9(fvec4) ConstantComposite 20 21 21 20
23: TypePointer Function 9(fvec4)
25: 18(int) Constant 1
26: 10(int) Constant 0
27: TypePointer Function 10(int)
33: TypePointer Input 6(PS_INPUT)
34(i): 33(ptr) Variable Input
40: TypePointer Output 9(fvec4)
41(@entryPointOutput.vColor): 40(ptr) Variable Output
44: 10(int) Constant 1
45: TypeArray 10(int) 44
46: TypePointer Output 45
47(@entryPointOutput.nCoverageMask): 46(ptr) Variable Output
50: TypePointer Output 10(int)
4(main): 2 Function None 3
5: Label
32(i): 7(ptr) Variable Function
36(flattenTemp): 16(ptr) Variable Function
37(param): 7(ptr) Variable Function
35: 6(PS_INPUT) Load 34(i)
Store 32(i) 35
38: 6(PS_INPUT) Load 32(i)
Store 37(param) 38
39:11(PS_OUTPUT) FunctionCall 14(@main(struct-PS_INPUT1;) 37(param)
Store 36(flattenTemp) 39
42: 23(ptr) AccessChain 36(flattenTemp) 19
43: 9(fvec4) Load 42
Store 41(@entryPointOutput.vColor) 43
48: 27(ptr) AccessChain 36(flattenTemp) 25
49: 10(int) Load 48
51: 50(ptr) AccessChain 47(@entryPointOutput.nCoverageMask) 19
Store 51 49
Return
FunctionEnd
14(@main(struct-PS_INPUT1;):11(PS_OUTPUT) Function None 12
13(i): 7(ptr) FunctionParameter
15: Label
17(o): 16(ptr) Variable Function
24: 23(ptr) AccessChain 17(o) 19
Store 24 22
28: 27(ptr) AccessChain 17(o) 25
Store 28 26
29:11(PS_OUTPUT) Load 17(o)
ReturnValue 29
FunctionEnd

View File

@ -0,0 +1,146 @@
hlsl.groupid.comp
Shader version: 500
local_size = (8, 8, 1)
0:? Sequence
0:7 Function Definition: @main(vu2; ( temp void)
0:7 Function Parameters:
0:7 'vGroupId' ( in 2-component vector of uint)
0:? Sequence
0:8 Sequence
0:8 move second child to first child ( temp 4-component vector of float)
0:8 'storeTemp' ( temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.000000
0:? 0.000000
0:? 1.000000
0:8 imageStore ( temp void)
0:8 'OutputTexture' (layout( rgba32f) uniform image2D)
0:8 vector swizzle ( temp 2-component vector of uint)
0:8 'vGroupId' ( in 2-component vector of uint)
0:8 Sequence
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 1 (const int)
0:8 'storeTemp' ( temp 4-component vector of float)
0:8 'storeTemp' ( temp 4-component vector of float)
0:7 Function Definition: main( ( temp void)
0:7 Function Parameters:
0:? Sequence
0:7 move second child to first child ( temp 2-component vector of uint)
0:? 'vGroupId' ( temp 2-component vector of uint)
0:? Construct uvec2 ( temp 2-component vector of uint)
0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID)
0:7 Function Call: @main(vu2; ( temp void)
0:? 'vGroupId' ( temp 2-component vector of uint)
0:? Linker Objects
0:? 'OutputTexture' (layout( rgba32f) uniform image2D)
0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID)
Linked compute stage:
Shader version: 500
local_size = (8, 8, 1)
0:? Sequence
0:7 Function Definition: @main(vu2; ( temp void)
0:7 Function Parameters:
0:7 'vGroupId' ( in 2-component vector of uint)
0:? Sequence
0:8 Sequence
0:8 move second child to first child ( temp 4-component vector of float)
0:8 'storeTemp' ( temp 4-component vector of float)
0:? Constant:
0:? 1.000000
0:? 0.000000
0:? 0.000000
0:? 1.000000
0:8 imageStore ( temp void)
0:8 'OutputTexture' (layout( rgba32f) uniform image2D)
0:8 vector swizzle ( temp 2-component vector of uint)
0:8 'vGroupId' ( in 2-component vector of uint)
0:8 Sequence
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 1 (const int)
0:8 'storeTemp' ( temp 4-component vector of float)
0:8 'storeTemp' ( temp 4-component vector of float)
0:7 Function Definition: main( ( temp void)
0:7 Function Parameters:
0:? Sequence
0:7 move second child to first child ( temp 2-component vector of uint)
0:? 'vGroupId' ( temp 2-component vector of uint)
0:? Construct uvec2 ( temp 2-component vector of uint)
0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID)
0:7 Function Call: @main(vu2; ( temp void)
0:? 'vGroupId' ( temp 2-component vector of uint)
0:? Linker Objects
0:? 'OutputTexture' (layout( rgba32f) uniform image2D)
0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID)
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 37
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 29
ExecutionMode 4 LocalSize 8 8 1
Source HLSL 500
Name 4 "main"
Name 11 "@main(vu2;"
Name 10 "vGroupId"
Name 16 "storeTemp"
Name 22 "OutputTexture"
Name 26 "vGroupId"
Name 29 "vGroupId"
Name 34 "param"
Decorate 22(OutputTexture) DescriptorSet 0
Decorate 29(vGroupId) BuiltIn WorkgroupId
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypeVector 6(int) 2
8: TypePointer Function 7(ivec2)
9: TypeFunction 2 8(ptr)
13: TypeFloat 32
14: TypeVector 13(float) 4
15: TypePointer Function 14(fvec4)
17: 13(float) Constant 1065353216
18: 13(float) Constant 0
19: 14(fvec4) ConstantComposite 17 18 18 17
20: TypeImage 13(float) 2D nonsampled format:Rgba32f
21: TypePointer UniformConstant 20
22(OutputTexture): 21(ptr) Variable UniformConstant
27: TypeVector 6(int) 3
28: TypePointer Input 27(ivec3)
29(vGroupId): 28(ptr) Variable Input
4(main): 2 Function None 3
5: Label
26(vGroupId): 8(ptr) Variable Function
34(param): 8(ptr) Variable Function
30: 27(ivec3) Load 29(vGroupId)
31: 6(int) CompositeExtract 30 0
32: 6(int) CompositeExtract 30 1
33: 7(ivec2) CompositeConstruct 31 32
Store 26(vGroupId) 33
35: 7(ivec2) Load 26(vGroupId)
Store 34(param) 35
36: 2 FunctionCall 11(@main(vu2;) 34(param)
Return
FunctionEnd
11(@main(vu2;): 2 Function None 9
10(vGroupId): 8(ptr) FunctionParameter
12: Label
16(storeTemp): 15(ptr) Variable Function
Store 16(storeTemp) 19
23: 20 Load 22(OutputTexture)
24: 7(ivec2) Load 10(vGroupId)
25: 14(fvec4) Load 16(storeTemp)
ImageWrite 23 24 25
Return
FunctionEnd

View File

@ -93,13 +93,16 @@ using depth_any
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp int)
0:? 'sampleMask' ( out int SampleMaskIn)
0:16 direct index ( out int SampleMaskIn)
0:? 'sampleMask' ( out 1-element array of int SampleMaskIn)
0:16 Constant:
0:16 0 (const int)
0:? 'sampleMask' ( temp int)
0:? Linker Objects
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:? 'inpos' ( noperspective in 4-component vector of float FragCoord)
0:? 'sampleMask' ( out int SampleMaskIn)
0:? 'sampleMask' ( out 1-element array of int SampleMaskIn)
Linked fragment stage:
@ -199,22 +202,25 @@ using depth_any
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp int)
0:? 'sampleMask' ( out int SampleMaskIn)
0:16 direct index ( out int SampleMaskIn)
0:? 'sampleMask' ( out 1-element array of int SampleMaskIn)
0:16 Constant:
0:16 0 (const int)
0:? 'sampleMask' ( temp int)
0:? Linker Objects
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:? 'inpos' ( noperspective in 4-component vector of float FragCoord)
0:? 'sampleMask' ( out int SampleMaskIn)
0:? 'sampleMask' ( out 1-element array of int SampleMaskIn)
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 88
// Id's are bound by 92
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 68 78 82 86
EntryPoint Fragment 4 "main" 68 78 82 88
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 DepthReplacing
Source HLSL 500
@ -246,12 +252,12 @@ using depth_any
Name 74 "param"
Name 78 "@entryPointOutput.Color"
Name 82 "@entryPointOutput.Depth"
Name 86 "sampleMask"
Name 88 "sampleMask"
Decorate 68(inpos) NoPerspective
Decorate 68(inpos) BuiltIn FragCoord
Decorate 78(@entryPointOutput.Color) Location 0
Decorate 82(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 86(sampleMask) BuiltIn SampleMask
Decorate 88(sampleMask) BuiltIn SampleMask
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -278,8 +284,11 @@ using depth_any
78(@entryPointOutput.Color): 77(ptr) Variable Output
81: TypePointer Output 6(float)
82(@entryPointOutput.Depth): 81(ptr) Variable Output
85: TypePointer Output 17(int)
86(sampleMask): 85(ptr) Variable Output
85: 42(int) Constant 1
86: TypeArray 17(int) 85
87: TypePointer Output 86
88(sampleMask): 87(ptr) Variable Output
90: TypePointer Output 17(int)
4(main): 2 Function None 3
5: Label
66(inpos): 16(ptr) Variable Function
@ -301,8 +310,9 @@ using depth_any
83: 7(ptr) AccessChain 70(flattenTemp) 59
84: 6(float) Load 83
Store 82(@entryPointOutput.Depth) 84
87: 17(int) Load 71(sampleMask)
Store 86(sampleMask) 87
89: 17(int) Load 71(sampleMask)
91: 90(ptr) AccessChain 88(sampleMask) 53
Store 91 89
Return
FunctionEnd
13(MyFunc(f1;f1;f1;f1;): 2 Function None 8

View File

@ -56,13 +56,14 @@ local_size = (256, 1, 1)
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'dispatchId' ( temp uint)
0:? 'dispatchId' ( in uint GlobalInvocationID)
0:? Construct uint ( temp uint)
0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
0:12 Function Call: @main(u1; ( temp void)
0:? 'dispatchId' ( temp uint)
0:? Linker Objects
0:? 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
0:? 'dispatchId' ( in uint GlobalInvocationID)
0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
Linked compute stage:
@ -125,24 +126,25 @@ local_size = (256, 1, 1)
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'dispatchId' ( temp uint)
0:? 'dispatchId' ( in uint GlobalInvocationID)
0:? Construct uint ( temp uint)
0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
0:12 Function Call: @main(u1; ( temp void)
0:? 'dispatchId' ( temp uint)
0:? Linker Objects
0:? 'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
0:? 'dispatchId' ( in uint GlobalInvocationID)
0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 61
// Id's are bound by 63
Capability Shader
Capability ImageBuffer
Capability StorageImageExtendedFormats
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 56
EntryPoint GLCompute 4 "main" 57
ExecutionMode 4 LocalSize 256 1 1
Source HLSL 500
Name 4 "main"
@ -160,8 +162,8 @@ local_size = (256, 1, 1)
Name 45 "param"
Name 50 "g_output"
Name 54 "dispatchId"
Name 56 "dispatchId"
Name 58 "param"
Name 57 "dispatchId"
Name 60 "param"
Decorate 8 ArrayStride 4
MemberDecorate 9 0 NonWritable
MemberDecorate 9 0 Offset 0
@ -171,7 +173,7 @@ local_size = (256, 1, 1)
Decorate 44(g_input) Binding 0
Decorate 50(g_output) DescriptorSet 0
Decorate 50(g_output) Binding 1
Decorate 56(dispatchId) BuiltIn GlobalInvocationId
Decorate 57(dispatchId) BuiltIn GlobalInvocationId
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -193,17 +195,19 @@ local_size = (256, 1, 1)
48: TypeImage 6(int) Buffer nonsampled format:Rg32ui
49: TypePointer UniformConstant 48
50(g_output): 49(ptr) Variable UniformConstant
55: TypePointer Input 6(int)
56(dispatchId): 55(ptr) Variable Input
55: TypeVector 6(int) 3
56: TypePointer Input 55(ivec3)
57(dispatchId): 56(ptr) Variable Input
4(main): 2 Function None 3
5: Label
54(dispatchId): 7(ptr) Variable Function
58(param): 7(ptr) Variable Function
57: 6(int) Load 56(dispatchId)
Store 54(dispatchId) 57
59: 6(int) Load 54(dispatchId)
Store 58(param) 59
60: 2 FunctionCall 19(@main(u1;) 58(param)
60(param): 7(ptr) Variable Function
58: 55(ivec3) Load 57(dispatchId)
59: 6(int) CompositeExtract 58 0
Store 54(dispatchId) 59
61: 6(int) Load 54(dispatchId)
Store 60(param) 61
62: 2 FunctionCall 19(@main(u1;) 60(param)
Return
FunctionEnd
15(testLoad(u1;block--u1[0]1;): 11(ivec2) Function None 12

View File

@ -0,0 +1,212 @@
hlsl.tristream-append.geom
Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:8 Function Definition: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
0:8 Function Parameters:
0:8 'output' ( in structure{})
0:8 'TriStream' ( out structure{})
0:? Sequence
0:9 Sequence
0:9 Sequence
0:9 move second child to first child ( temp structure{})
0:9 'TriStream' ( out structure{})
0:9 'output' ( in structure{})
0:9 EmitVertex ( temp void)
0:14 Function Definition: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
0:14 Function Parameters:
0:14 'input' ( in 3-element array of structure{})
0:14 'TriStream' ( out structure{})
0:? Sequence
0:15 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
0:15 direct index ( temp structure{})
0:15 'input' ( in 3-element array of structure{})
0:15 Constant:
0:15 0 (const int)
0:15 'TriStream' ( out structure{})
0:16 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
0:16 direct index ( temp structure{})
0:16 'input' ( in 3-element array of structure{})
0:16 Constant:
0:16 1 (const int)
0:16 'TriStream' ( out structure{})
0:17 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
0:17 direct index ( temp structure{})
0:17 'input' ( in 3-element array of structure{})
0:17 Constant:
0:17 2 (const int)
0:17 'TriStream' ( out structure{})
0:14 Function Definition: main( ( temp void)
0:14 Function Parameters:
0:? Sequence
0:14 move second child to first child ( temp 3-element array of structure{})
0:? 'input' ( temp 3-element array of structure{})
0:? 'input' ( in 3-element array of structure{})
0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
0:? 'input' ( temp 3-element array of structure{})
0:? 'TriStream' ( temp structure{})
0:? Linker Objects
Linked geometry stage:
Shader version: 500
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:8 Function Definition: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
0:8 Function Parameters:
0:8 'output' ( in structure{})
0:8 'TriStream' ( out structure{})
0:? Sequence
0:9 Sequence
0:9 Sequence
0:9 move second child to first child ( temp structure{})
0:9 'TriStream' ( out structure{})
0:9 'output' ( in structure{})
0:9 EmitVertex ( temp void)
0:14 Function Definition: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
0:14 Function Parameters:
0:14 'input' ( in 3-element array of structure{})
0:14 'TriStream' ( out structure{})
0:? Sequence
0:15 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
0:15 direct index ( temp structure{})
0:15 'input' ( in 3-element array of structure{})
0:15 Constant:
0:15 0 (const int)
0:15 'TriStream' ( out structure{})
0:16 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
0:16 direct index ( temp structure{})
0:16 'input' ( in 3-element array of structure{})
0:16 Constant:
0:16 1 (const int)
0:16 'TriStream' ( out structure{})
0:17 Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
0:17 direct index ( temp structure{})
0:17 'input' ( in 3-element array of structure{})
0:17 Constant:
0:17 2 (const int)
0:17 'TriStream' ( out structure{})
0:14 Function Definition: main( ( temp void)
0:14 Function Parameters:
0:? Sequence
0:14 move second child to first child ( temp 3-element array of structure{})
0:? 'input' ( temp 3-element array of structure{})
0:? 'input' ( in 3-element array of structure{})
0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
0:? 'input' ( temp 3-element array of structure{})
0:? 'TriStream' ( temp structure{})
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 57
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main"
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 3
Source HLSL 500
Name 4 "main"
Name 6 "GSPS_INPUT"
Name 11 "EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;"
Name 9 "output"
Name 10 "TriStream"
Name 20 "@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;"
Name 18 "input"
Name 19 "TriStream"
Name 23 "TriStream"
Name 27 "param"
Name 30 "param"
Name 34 "param"
Name 37 "param"
Name 41 "param"
Name 44 "param"
Name 47 "input"
Name 49 "input"
Name 51 "TriStream"
Name 52 "param"
Name 54 "param"
2: TypeVoid
3: TypeFunction 2
6(GSPS_INPUT): TypeStruct
7: TypePointer Function 6(GSPS_INPUT)
8: TypeFunction 2 7(ptr) 7(ptr)
13: TypeInt 32 0
14: 13(int) Constant 3
15: TypeArray 6(GSPS_INPUT) 14
16: TypePointer Function 15
17: TypeFunction 2 16(ptr) 7(ptr)
22: TypePointer Output 6(GSPS_INPUT)
23(TriStream): 22(ptr) Variable Output
25: TypeInt 32 1
26: 25(int) Constant 0
33: 25(int) Constant 1
40: 25(int) Constant 2
48: TypePointer Input 15
49(input): 48(ptr) Variable Input
4(main): 2 Function None 3
5: Label
47(input): 16(ptr) Variable Function
51(TriStream): 7(ptr) Variable Function
52(param): 16(ptr) Variable Function
54(param): 7(ptr) Variable Function
50: 15 Load 49(input)
Store 47(input) 50
53: 15 Load 47(input)
Store 52(param) 53
55: 2 FunctionCall 20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;) 52(param) 54(param)
56:6(GSPS_INPUT) Load 54(param)
Store 51(TriStream) 56
Return
FunctionEnd
11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;): 2 Function None 8
9(output): 7(ptr) FunctionParameter
10(TriStream): 7(ptr) FunctionParameter
12: Label
24:6(GSPS_INPUT) Load 9(output)
Store 23(TriStream) 24
EmitVertex
Return
FunctionEnd
20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;): 2 Function None 17
18(input): 16(ptr) FunctionParameter
19(TriStream): 7(ptr) FunctionParameter
21: Label
27(param): 7(ptr) Variable Function
30(param): 7(ptr) Variable Function
34(param): 7(ptr) Variable Function
37(param): 7(ptr) Variable Function
41(param): 7(ptr) Variable Function
44(param): 7(ptr) Variable Function
28: 7(ptr) AccessChain 18(input) 26
29:6(GSPS_INPUT) Load 28
Store 27(param) 29
31: 2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 27(param) 30(param)
32:6(GSPS_INPUT) Load 30(param)
Store 19(TriStream) 32
35: 7(ptr) AccessChain 18(input) 33
36:6(GSPS_INPUT) Load 35
Store 34(param) 36
38: 2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 34(param) 37(param)
39:6(GSPS_INPUT) Load 37(param)
Store 19(TriStream) 39
42: 7(ptr) AccessChain 18(input) 40
43:6(GSPS_INPUT) Load 42
Store 41(param) 43
45: 2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 41(param) 44(param)
46:6(GSPS_INPUT) Load 44(param)
Store 19(TriStream) 46
Return
FunctionEnd

View File

@ -1,7 +1,7 @@
spv.400.frag
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 1118
// Id's are bound by 1115
Capability Shader
Capability Geometry
@ -11,7 +11,7 @@ spv.400.frag
Capability SampledRect
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 1116
EntryPoint Fragment 4 "main" 13 1024 1030 1035 1047 1073 1094 1096 1102 1104 1113
ExecutionMode 4 OriginUpperLeft
Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects"
@ -28,41 +28,41 @@ spv.400.frag
Name 439 "bvec2v"
Name 448 "bvec3v"
Name 457 "bvec4v"
Name 739 "dmat2v"
Name 745 "dmat3v"
Name 751 "dmat4v"
Name 757 "dmat2x3v"
Name 763 "dmat3x2v"
Name 769 "dmat2x4v"
Name 775 "dmat4x2v"
Name 781 "dmat3x4v"
Name 787 "dmat4x3v"
Name 1019 "v"
Name 1025 "arrayedSampler"
Name 1027 "i"
Name 1033 "c2D"
Name 1038 "gl_ClipDistance"
Name 1050 "uoutp"
Name 1054 "samp2dr"
Name 1076 "ioutp"
Name 1080 "isamp2DA"
Name 1097 "gl_FragCoord"
Name 1099 "vl2"
Name 1105 "uo"
Name 1107 "u"
Name 1115 "id"
Name 1116 "gl_PrimitiveID"
Name 736 "dmat2v"
Name 742 "dmat3v"
Name 748 "dmat4v"
Name 754 "dmat2x3v"
Name 760 "dmat3x2v"
Name 766 "dmat2x4v"
Name 772 "dmat4x2v"
Name 778 "dmat3x4v"
Name 784 "dmat4x3v"
Name 1016 "v"
Name 1022 "arrayedSampler"
Name 1024 "i"
Name 1030 "c2D"
Name 1035 "gl_ClipDistance"
Name 1047 "uoutp"
Name 1051 "samp2dr"
Name 1073 "ioutp"
Name 1077 "isamp2DA"
Name 1094 "gl_FragCoord"
Name 1096 "vl2"
Name 1102 "uo"
Name 1104 "u"
Name 1112 "id"
Name 1113 "gl_PrimitiveID"
Decorate 17(u2drs) DescriptorSet 0
Decorate 1025(arrayedSampler) DescriptorSet 0
Decorate 1027(i) Flat
Decorate 1038(gl_ClipDistance) BuiltIn ClipDistance
Decorate 1054(samp2dr) DescriptorSet 0
Decorate 1080(isamp2DA) DescriptorSet 0
Decorate 1097(gl_FragCoord) BuiltIn FragCoord
Decorate 1099(vl2) Location 6
Decorate 1107(u) Flat
Decorate 1116(gl_PrimitiveID) Flat
Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 1022(arrayedSampler) DescriptorSet 0
Decorate 1024(i) Flat
Decorate 1035(gl_ClipDistance) BuiltIn ClipDistance
Decorate 1051(samp2dr) DescriptorSet 0
Decorate 1077(isamp2DA) DescriptorSet 0
Decorate 1094(gl_FragCoord) BuiltIn FragCoord
Decorate 1096(vl2) Location 6
Decorate 1104(u) Flat
Decorate 1113(gl_PrimitiveID) Flat
Decorate 1113(gl_PrimitiveID) BuiltIn PrimitiveId
2: TypeVoid
3: TypeFunction 2
10: TypeFloat 32
@ -109,143 +109,144 @@ spv.400.frag
572: 437(bvec2) ConstantComposite 563 563
581: 446(bvec3) ConstantComposite 563 563 563
590: 455(bvec4) ConstantComposite 563 563 563 563
737: TypeMatrix 43(fvec2) 2
738: TypePointer Function 737
743: TypeMatrix 48(fvec3) 3
744: TypePointer Function 743
749: TypeMatrix 53(fvec4) 4
750: TypePointer Function 749
755: TypeMatrix 48(fvec3) 2
756: TypePointer Function 755
761: TypeMatrix 43(fvec2) 3
762: TypePointer Function 761
767: TypeMatrix 53(fvec4) 2
768: TypePointer Function 767
773: TypeMatrix 43(fvec2) 4
774: TypePointer Function 773
779: TypeMatrix 53(fvec4) 3
780: TypePointer Function 779
785: TypeMatrix 48(fvec3) 4
786: TypePointer Function 785
954: 32(int) Constant 1
958: 32(int) Constant 2
962: 32(int) Constant 3
966: 23(int) Constant 1
970: 23(int) Constant 2
996: 10(float) Constant 1065353216
1018: TypePointer Function 11(fvec4)
1020: TypeImage 10(float) 2D sampled format:Unknown
1021: TypeSampledImage 1020
1022: 32(int) Constant 5
1023: TypeArray 1021 1022
1024: TypePointer UniformConstant 1023
1025(arrayedSampler): 1024(ptr) Variable UniformConstant
1026: TypePointer Input 23(int)
1027(i): 1026(ptr) Variable Input
1029: TypePointer UniformConstant 1021
1032: TypePointer Input 20(fvec2)
1033(c2D): 1032(ptr) Variable Input
1036: TypeArray 10(float) 958
1037: TypePointer Input 1036
1038(gl_ClipDistance): 1037(ptr) Variable Input
1039: TypePointer Input 10(float)
1043: TypeVector 10(float) 3
1048: TypeVector 32(int) 4
1049: TypePointer Output 1048(ivec4)
1050(uoutp): 1049(ptr) Variable Output
1051: TypeImage 32(int) Rect sampled format:Unknown
1052: TypeSampledImage 1051
1053: TypePointer UniformConstant 1052
1054(samp2dr): 1053(ptr) Variable UniformConstant
1057: 32(int) Constant 4
1058: TypeArray 24(ivec2) 1057
1059: 24(ivec2) ConstantComposite 966 970
1060: 23(int) Constant 15
1061: 23(int) Constant 16
715: 10(float) Constant 1067869798
734: TypeMatrix 43(fvec2) 2
735: TypePointer Function 734
740: TypeMatrix 48(fvec3) 3
741: TypePointer Function 740
746: TypeMatrix 53(fvec4) 4
747: TypePointer Function 746
752: TypeMatrix 48(fvec3) 2
753: TypePointer Function 752
758: TypeMatrix 43(fvec2) 3
759: TypePointer Function 758
764: TypeMatrix 53(fvec4) 2
765: TypePointer Function 764
770: TypeMatrix 43(fvec2) 4
771: TypePointer Function 770
776: TypeMatrix 53(fvec4) 3
777: TypePointer Function 776
782: TypeMatrix 48(fvec3) 4
783: TypePointer Function 782
951: 32(int) Constant 1
955: 32(int) Constant 2
959: 32(int) Constant 3
963: 23(int) Constant 1
967: 23(int) Constant 2
993: 10(float) Constant 1065353216
1015: TypePointer Function 11(fvec4)
1017: TypeImage 10(float) 2D sampled format:Unknown
1018: TypeSampledImage 1017
1019: 32(int) Constant 5
1020: TypeArray 1018 1019
1021: TypePointer UniformConstant 1020
1022(arrayedSampler): 1021(ptr) Variable UniformConstant
1023: TypePointer Input 23(int)
1024(i): 1023(ptr) Variable Input
1026: TypePointer UniformConstant 1018
1029: TypePointer Input 20(fvec2)
1030(c2D): 1029(ptr) Variable Input
1033: TypeArray 10(float) 955
1034: TypePointer Input 1033
1035(gl_ClipDistance): 1034(ptr) Variable Input
1036: TypePointer Input 10(float)
1040: TypeVector 10(float) 3
1045: TypeVector 32(int) 4
1046: TypePointer Output 1045(ivec4)
1047(uoutp): 1046(ptr) Variable Output
1048: TypeImage 32(int) Rect sampled format:Unknown
1049: TypeSampledImage 1048
1050: TypePointer UniformConstant 1049
1051(samp2dr): 1050(ptr) Variable UniformConstant
1054: 32(int) Constant 4
1055: TypeArray 24(ivec2) 1054
1056: 24(ivec2) ConstantComposite 963 967
1057: 23(int) Constant 15
1058: 23(int) Constant 16
1059: 24(ivec2) ConstantComposite 1057 1058
1060: 23(int) Constant 4294967294
1061: 23(int) Constant 0
1062: 24(ivec2) ConstantComposite 1060 1061
1063: 23(int) Constant 4294967294
1064: 23(int) Constant 0
1065: 24(ivec2) ConstantComposite 1063 1064
1066: 1058 ConstantComposite 1059 27 1062 1065
1074: TypeVector 23(int) 4
1075: TypePointer Output 1074(ivec4)
1076(ioutp): 1075(ptr) Variable Output
1077: TypeImage 23(int) 2D array sampled format:Unknown
1078: TypeSampledImage 1077
1079: TypePointer UniformConstant 1078
1080(isamp2DA): 1079(ptr) Variable UniformConstant
1082: 10(float) Constant 1036831949
1083: 1043(fvec3) ConstantComposite 1082 1082 1082
1084: 24(ivec2) ConstantComposite 966 966
1096: TypePointer Input 11(fvec4)
1097(gl_FragCoord): 1096(ptr) Variable Input
1099(vl2): 1096(ptr) Variable Input
1104: TypePointer Output 32(int)
1105(uo): 1104(ptr) Variable Output
1106: TypePointer Input 32(int)
1107(u): 1106(ptr) Variable Input
1114: TypePointer Function 23(int)
1116(gl_PrimitiveID): 1026(ptr) Variable Input
1063: 1055 ConstantComposite 1056 27 1059 1062
1071: TypeVector 23(int) 4
1072: TypePointer Output 1071(ivec4)
1073(ioutp): 1072(ptr) Variable Output
1074: TypeImage 23(int) 2D array sampled format:Unknown
1075: TypeSampledImage 1074
1076: TypePointer UniformConstant 1075
1077(isamp2DA): 1076(ptr) Variable UniformConstant
1079: 10(float) Constant 1036831949
1080: 1040(fvec3) ConstantComposite 1079 1079 1079
1081: 24(ivec2) ConstantComposite 963 963
1093: TypePointer Input 11(fvec4)
1094(gl_FragCoord): 1093(ptr) Variable Input
1096(vl2): 1093(ptr) Variable Input
1101: TypePointer Output 32(int)
1102(uo): 1101(ptr) Variable Output
1103: TypePointer Input 32(int)
1104(u): 1103(ptr) Variable Input
1111: TypePointer Function 23(int)
1113(gl_PrimitiveID): 1023(ptr) Variable Input
4(main): 2 Function None 3
5: Label
1019(v): 1018(ptr) Variable Function
1115(id): 1114(ptr) Variable Function
1028: 23(int) Load 1027(i)
1030: 1029(ptr) AccessChain 1025(arrayedSampler) 1028
1031: 1021 Load 1030
1034: 20(fvec2) Load 1033(c2D)
1035: 11(fvec4) ImageSampleImplicitLod 1031 1034
Store 1019(v) 1035
1040: 1039(ptr) AccessChain 1038(gl_ClipDistance) 966
1041: 10(float) Load 1040
1042: 34(ptr) AccessChain 13(outp) 33
Store 1042 1041
1044: 11(fvec4) Load 1019(v)
1045: 1043(fvec3) VectorShuffle 1044 1044 1 2 3
1046: 11(fvec4) Load 13(outp)
1047: 11(fvec4) VectorShuffle 1046 1045 0 4 5 6
Store 13(outp) 1047
1055: 1052 Load 1054(samp2dr)
1056: 20(fvec2) Load 1033(c2D)
1067: 1048(ivec4) ImageGather 1055 1056 970 ConstOffsets 1066
Store 1050(uoutp) 1067
1068: 1029(ptr) AccessChain 1025(arrayedSampler) 1064
1069: 1021 Load 1068
1070: 20(fvec2) Load 1033(c2D)
1071: 11(fvec4) ImageGather 1069 1070 1064
1072: 11(fvec4) Load 13(outp)
1073: 11(fvec4) FAdd 1072 1071
Store 13(outp) 1073
1081: 1078 Load 1080(isamp2DA)
1085: 1074(ivec4) ImageGather 1081 1083 25 ConstOffset 1084
Store 1076(ioutp) 1085
1086: 1078 Load 1080(isamp2DA)
1087: 1074(ivec4) ImageGather 1086 1083 25 ConstOffset 1084
1088: 1074(ivec4) Load 1076(ioutp)
1089: 1074(ivec4) IAdd 1088 1087
Store 1076(ioutp) 1089
1090: 1078 Load 1080(isamp2DA)
1091: 23(int) Load 1027(i)
1092: 24(ivec2) CompositeConstruct 1091 1091
1093: 1074(ivec4) ImageGather 1090 1083 1064 Offset 1092
1094: 1074(ivec4) Load 1076(ioutp)
1095: 1074(ivec4) IAdd 1094 1093
Store 1076(ioutp) 1095
1098: 11(fvec4) Load 1097(gl_FragCoord)
1100: 11(fvec4) Load 1099(vl2)
1101: 11(fvec4) FAdd 1098 1100
1102: 11(fvec4) Load 13(outp)
1103: 11(fvec4) FAdd 1102 1101
Store 13(outp) 1103
1108: 32(int) Load 1107(u)
1109: 23(int) Load 1027(i)
1110: 32(int) Bitcast 1109
1111: 32(int) UMod 1108 1110
Store 1105(uo) 1111
1112: 2 FunctionCall 6(foo23()
1113: 2 FunctionCall 8(doubles()
1117: 23(int) Load 1116(gl_PrimitiveID)
Store 1115(id) 1117
1016(v): 1015(ptr) Variable Function
1112(id): 1111(ptr) Variable Function
1025: 23(int) Load 1024(i)
1027: 1026(ptr) AccessChain 1022(arrayedSampler) 1025
1028: 1018 Load 1027
1031: 20(fvec2) Load 1030(c2D)
1032: 11(fvec4) ImageSampleImplicitLod 1028 1031
Store 1016(v) 1032
1037: 1036(ptr) AccessChain 1035(gl_ClipDistance) 963
1038: 10(float) Load 1037
1039: 34(ptr) AccessChain 13(outp) 33
Store 1039 1038
1041: 11(fvec4) Load 1016(v)
1042: 1040(fvec3) VectorShuffle 1041 1041 1 2 3
1043: 11(fvec4) Load 13(outp)
1044: 11(fvec4) VectorShuffle 1043 1042 0 4 5 6
Store 13(outp) 1044
1052: 1049 Load 1051(samp2dr)
1053: 20(fvec2) Load 1030(c2D)
1064: 1045(ivec4) ImageGather 1052 1053 967 ConstOffsets 1063
Store 1047(uoutp) 1064
1065: 1026(ptr) AccessChain 1022(arrayedSampler) 1061
1066: 1018 Load 1065
1067: 20(fvec2) Load 1030(c2D)
1068: 11(fvec4) ImageGather 1066 1067 1061
1069: 11(fvec4) Load 13(outp)
1070: 11(fvec4) FAdd 1069 1068
Store 13(outp) 1070
1078: 1075 Load 1077(isamp2DA)
1082: 1071(ivec4) ImageGather 1078 1080 25 ConstOffset 1081
Store 1073(ioutp) 1082
1083: 1075 Load 1077(isamp2DA)
1084: 1071(ivec4) ImageGather 1083 1080 25 ConstOffset 1081
1085: 1071(ivec4) Load 1073(ioutp)
1086: 1071(ivec4) IAdd 1085 1084
Store 1073(ioutp) 1086
1087: 1075 Load 1077(isamp2DA)
1088: 23(int) Load 1024(i)
1089: 24(ivec2) CompositeConstruct 1088 1088
1090: 1071(ivec4) ImageGather 1087 1080 1061 Offset 1089
1091: 1071(ivec4) Load 1073(ioutp)
1092: 1071(ivec4) IAdd 1091 1090
Store 1073(ioutp) 1092
1095: 11(fvec4) Load 1094(gl_FragCoord)
1097: 11(fvec4) Load 1096(vl2)
1098: 11(fvec4) FAdd 1095 1097
1099: 11(fvec4) Load 13(outp)
1100: 11(fvec4) FAdd 1099 1098
Store 13(outp) 1100
1105: 32(int) Load 1104(u)
1106: 23(int) Load 1024(i)
1107: 32(int) Bitcast 1106
1108: 32(int) UMod 1105 1107
Store 1102(uo) 1108
1109: 2 FunctionCall 6(foo23()
1110: 2 FunctionCall 8(doubles()
1114: 23(int) Load 1113(gl_PrimitiveID)
Store 1112(id) 1114
Return
FunctionEnd
6(foo23(): 2 Function None 3
@ -277,15 +278,15 @@ spv.400.frag
566: 438(ptr) Variable Function
575: 447(ptr) Variable Function
584: 456(ptr) Variable Function
739(dmat2v): 738(ptr) Variable Function
745(dmat3v): 744(ptr) Variable Function
751(dmat4v): 750(ptr) Variable Function
757(dmat2x3v): 756(ptr) Variable Function
763(dmat3x2v): 762(ptr) Variable Function
769(dmat2x4v): 768(ptr) Variable Function
775(dmat4x2v): 774(ptr) Variable Function
781(dmat3x4v): 780(ptr) Variable Function
787(dmat4x3v): 786(ptr) Variable Function
736(dmat2v): 735(ptr) Variable Function
742(dmat3v): 741(ptr) Variable Function
748(dmat4v): 747(ptr) Variable Function
754(dmat2x3v): 753(ptr) Variable Function
760(dmat3x2v): 759(ptr) Variable Function
766(dmat2x4v): 765(ptr) Variable Function
772(dmat4x2v): 771(ptr) Variable Function
778(dmat3x4v): 777(ptr) Variable Function
784(dmat4x3v): 783(ptr) Variable Function
Store 41(doublev) 42
Store 45(dvec2v) 47
Store 50(dvec3v) 52
@ -1079,313 +1080,309 @@ spv.400.frag
Store 55(dvec4v) 712
713: 39(float) Load 41(doublev)
714: 39(float) Load 41(doublev)
715: 39(float) Load 41(doublev)
716: 39(float) ExtInst 1(GLSL.std.450) 72(Refract) 713 714 715
717: 39(float) Load 41(doublev)
718: 39(float) FAdd 717 716
Store 41(doublev) 718
719: 43(fvec2) Load 45(dvec2v)
720: 43(fvec2) Load 45(dvec2v)
721: 39(float) Load 41(doublev)
722: 43(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 719 720 721
723: 43(fvec2) Load 45(dvec2v)
724: 43(fvec2) FAdd 723 722
Store 45(dvec2v) 724
721: 43(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 719 720 715
722: 43(fvec2) Load 45(dvec2v)
723: 43(fvec2) FAdd 722 721
Store 45(dvec2v) 723
724: 48(fvec3) Load 50(dvec3v)
725: 48(fvec3) Load 50(dvec3v)
726: 48(fvec3) Load 50(dvec3v)
727: 39(float) Load 41(doublev)
728: 48(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 725 726 727
729: 48(fvec3) Load 50(dvec3v)
730: 48(fvec3) FAdd 729 728
Store 50(dvec3v) 730
731: 53(fvec4) Load 55(dvec4v)
726: 48(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 724 725 715
727: 48(fvec3) Load 50(dvec3v)
728: 48(fvec3) FAdd 727 726
Store 50(dvec3v) 728
729: 53(fvec4) Load 55(dvec4v)
730: 53(fvec4) Load 55(dvec4v)
731: 53(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 729 730 715
732: 53(fvec4) Load 55(dvec4v)
733: 39(float) Load 41(doublev)
734: 53(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 731 732 733
735: 53(fvec4) Load 55(dvec4v)
736: 53(fvec4) FAdd 735 734
Store 55(dvec4v) 736
740: 43(fvec2) Load 45(dvec2v)
741: 43(fvec2) Load 45(dvec2v)
742: 737 OuterProduct 740 741
Store 739(dmat2v) 742
746: 48(fvec3) Load 50(dvec3v)
747: 48(fvec3) Load 50(dvec3v)
748: 743 OuterProduct 746 747
Store 745(dmat3v) 748
752: 53(fvec4) Load 55(dvec4v)
753: 53(fvec4) Load 55(dvec4v)
754: 749 OuterProduct 752 753
Store 751(dmat4v) 754
758: 48(fvec3) Load 50(dvec3v)
759: 43(fvec2) Load 45(dvec2v)
760: 755 OuterProduct 758 759
Store 757(dmat2x3v) 760
764: 43(fvec2) Load 45(dvec2v)
765: 48(fvec3) Load 50(dvec3v)
766: 761 OuterProduct 764 765
Store 763(dmat3x2v) 766
770: 53(fvec4) Load 55(dvec4v)
771: 43(fvec2) Load 45(dvec2v)
772: 767 OuterProduct 770 771
Store 769(dmat2x4v) 772
776: 43(fvec2) Load 45(dvec2v)
777: 53(fvec4) Load 55(dvec4v)
778: 773 OuterProduct 776 777
Store 775(dmat4x2v) 778
782: 53(fvec4) Load 55(dvec4v)
783: 48(fvec3) Load 50(dvec3v)
784: 779 OuterProduct 782 783
Store 781(dmat3x4v) 784
788: 48(fvec3) Load 50(dvec3v)
789: 53(fvec4) Load 55(dvec4v)
790: 785 OuterProduct 788 789
Store 787(dmat4x3v) 790
791: 737 Load 739(dmat2v)
792: 737 Load 739(dmat2v)
793: 43(fvec2) CompositeExtract 791 0
794: 43(fvec2) CompositeExtract 792 0
733: 53(fvec4) FAdd 732 731
Store 55(dvec4v) 733
737: 43(fvec2) Load 45(dvec2v)
738: 43(fvec2) Load 45(dvec2v)
739: 734 OuterProduct 737 738
Store 736(dmat2v) 739
743: 48(fvec3) Load 50(dvec3v)
744: 48(fvec3) Load 50(dvec3v)
745: 740 OuterProduct 743 744
Store 742(dmat3v) 745
749: 53(fvec4) Load 55(dvec4v)
750: 53(fvec4) Load 55(dvec4v)
751: 746 OuterProduct 749 750
Store 748(dmat4v) 751
755: 48(fvec3) Load 50(dvec3v)
756: 43(fvec2) Load 45(dvec2v)
757: 752 OuterProduct 755 756
Store 754(dmat2x3v) 757
761: 43(fvec2) Load 45(dvec2v)
762: 48(fvec3) Load 50(dvec3v)
763: 758 OuterProduct 761 762
Store 760(dmat3x2v) 763
767: 53(fvec4) Load 55(dvec4v)
768: 43(fvec2) Load 45(dvec2v)
769: 764 OuterProduct 767 768
Store 766(dmat2x4v) 769
773: 43(fvec2) Load 45(dvec2v)
774: 53(fvec4) Load 55(dvec4v)
775: 770 OuterProduct 773 774
Store 772(dmat4x2v) 775
779: 53(fvec4) Load 55(dvec4v)
780: 48(fvec3) Load 50(dvec3v)
781: 776 OuterProduct 779 780
Store 778(dmat3x4v) 781
785: 48(fvec3) Load 50(dvec3v)
786: 53(fvec4) Load 55(dvec4v)
787: 782 OuterProduct 785 786
Store 784(dmat4x3v) 787
788: 734 Load 736(dmat2v)
789: 734 Load 736(dmat2v)
790: 43(fvec2) CompositeExtract 788 0
791: 43(fvec2) CompositeExtract 789 0
792: 43(fvec2) FMul 790 791
793: 43(fvec2) CompositeExtract 788 1
794: 43(fvec2) CompositeExtract 789 1
795: 43(fvec2) FMul 793 794
796: 43(fvec2) CompositeExtract 791 1
797: 43(fvec2) CompositeExtract 792 1
798: 43(fvec2) FMul 796 797
799: 737 CompositeConstruct 795 798
800: 737 Load 739(dmat2v)
801: 737 MatrixTimesMatrix 800 799
Store 739(dmat2v) 801
802: 743 Load 745(dmat3v)
803: 743 Load 745(dmat3v)
804: 48(fvec3) CompositeExtract 802 0
805: 48(fvec3) CompositeExtract 803 0
796: 734 CompositeConstruct 792 795
797: 734 Load 736(dmat2v)
798: 734 MatrixTimesMatrix 797 796
Store 736(dmat2v) 798
799: 740 Load 742(dmat3v)
800: 740 Load 742(dmat3v)
801: 48(fvec3) CompositeExtract 799 0
802: 48(fvec3) CompositeExtract 800 0
803: 48(fvec3) FMul 801 802
804: 48(fvec3) CompositeExtract 799 1
805: 48(fvec3) CompositeExtract 800 1
806: 48(fvec3) FMul 804 805
807: 48(fvec3) CompositeExtract 802 1
808: 48(fvec3) CompositeExtract 803 1
807: 48(fvec3) CompositeExtract 799 2
808: 48(fvec3) CompositeExtract 800 2
809: 48(fvec3) FMul 807 808
810: 48(fvec3) CompositeExtract 802 2
811: 48(fvec3) CompositeExtract 803 2
812: 48(fvec3) FMul 810 811
813: 743 CompositeConstruct 806 809 812
814: 743 Load 745(dmat3v)
815: 743 MatrixTimesMatrix 814 813
Store 745(dmat3v) 815
816: 749 Load 751(dmat4v)
817: 749 Load 751(dmat4v)
818: 53(fvec4) CompositeExtract 816 0
819: 53(fvec4) CompositeExtract 817 0
810: 740 CompositeConstruct 803 806 809
811: 740 Load 742(dmat3v)
812: 740 MatrixTimesMatrix 811 810
Store 742(dmat3v) 812
813: 746 Load 748(dmat4v)
814: 746 Load 748(dmat4v)
815: 53(fvec4) CompositeExtract 813 0
816: 53(fvec4) CompositeExtract 814 0
817: 53(fvec4) FMul 815 816
818: 53(fvec4) CompositeExtract 813 1
819: 53(fvec4) CompositeExtract 814 1
820: 53(fvec4) FMul 818 819
821: 53(fvec4) CompositeExtract 816 1
822: 53(fvec4) CompositeExtract 817 1
821: 53(fvec4) CompositeExtract 813 2
822: 53(fvec4) CompositeExtract 814 2
823: 53(fvec4) FMul 821 822
824: 53(fvec4) CompositeExtract 816 2
825: 53(fvec4) CompositeExtract 817 2
824: 53(fvec4) CompositeExtract 813 3
825: 53(fvec4) CompositeExtract 814 3
826: 53(fvec4) FMul 824 825
827: 53(fvec4) CompositeExtract 816 3
828: 53(fvec4) CompositeExtract 817 3
829: 53(fvec4) FMul 827 828
830: 749 CompositeConstruct 820 823 826 829
831: 749 Load 751(dmat4v)
832: 749 MatrixTimesMatrix 831 830
Store 751(dmat4v) 832
833: 755 Load 757(dmat2x3v)
834: 755 Load 757(dmat2x3v)
835: 48(fvec3) CompositeExtract 833 0
836: 48(fvec3) CompositeExtract 834 0
827: 746 CompositeConstruct 817 820 823 826
828: 746 Load 748(dmat4v)
829: 746 MatrixTimesMatrix 828 827
Store 748(dmat4v) 829
830: 752 Load 754(dmat2x3v)
831: 752 Load 754(dmat2x3v)
832: 48(fvec3) CompositeExtract 830 0
833: 48(fvec3) CompositeExtract 831 0
834: 48(fvec3) FMul 832 833
835: 48(fvec3) CompositeExtract 830 1
836: 48(fvec3) CompositeExtract 831 1
837: 48(fvec3) FMul 835 836
838: 48(fvec3) CompositeExtract 833 1
839: 48(fvec3) CompositeExtract 834 1
840: 48(fvec3) FMul 838 839
841: 755 CompositeConstruct 837 840
Store 757(dmat2x3v) 841
842: 767 Load 769(dmat2x4v)
843: 767 Load 769(dmat2x4v)
844: 53(fvec4) CompositeExtract 842 0
845: 53(fvec4) CompositeExtract 843 0
838: 752 CompositeConstruct 834 837
Store 754(dmat2x3v) 838
839: 764 Load 766(dmat2x4v)
840: 764 Load 766(dmat2x4v)
841: 53(fvec4) CompositeExtract 839 0
842: 53(fvec4) CompositeExtract 840 0
843: 53(fvec4) FMul 841 842
844: 53(fvec4) CompositeExtract 839 1
845: 53(fvec4) CompositeExtract 840 1
846: 53(fvec4) FMul 844 845
847: 53(fvec4) CompositeExtract 842 1
848: 53(fvec4) CompositeExtract 843 1
849: 53(fvec4) FMul 847 848
850: 767 CompositeConstruct 846 849
Store 769(dmat2x4v) 850
851: 761 Load 763(dmat3x2v)
852: 761 Load 763(dmat3x2v)
853: 43(fvec2) CompositeExtract 851 0
854: 43(fvec2) CompositeExtract 852 0
847: 764 CompositeConstruct 843 846
Store 766(dmat2x4v) 847
848: 758 Load 760(dmat3x2v)
849: 758 Load 760(dmat3x2v)
850: 43(fvec2) CompositeExtract 848 0
851: 43(fvec2) CompositeExtract 849 0
852: 43(fvec2) FMul 850 851
853: 43(fvec2) CompositeExtract 848 1
854: 43(fvec2) CompositeExtract 849 1
855: 43(fvec2) FMul 853 854
856: 43(fvec2) CompositeExtract 851 1
857: 43(fvec2) CompositeExtract 852 1
856: 43(fvec2) CompositeExtract 848 2
857: 43(fvec2) CompositeExtract 849 2
858: 43(fvec2) FMul 856 857
859: 43(fvec2) CompositeExtract 851 2
860: 43(fvec2) CompositeExtract 852 2
861: 43(fvec2) FMul 859 860
862: 761 CompositeConstruct 855 858 861
Store 763(dmat3x2v) 862
863: 779 Load 781(dmat3x4v)
864: 779 Load 781(dmat3x4v)
865: 53(fvec4) CompositeExtract 863 0
866: 53(fvec4) CompositeExtract 864 0
859: 758 CompositeConstruct 852 855 858
Store 760(dmat3x2v) 859
860: 776 Load 778(dmat3x4v)
861: 776 Load 778(dmat3x4v)
862: 53(fvec4) CompositeExtract 860 0
863: 53(fvec4) CompositeExtract 861 0
864: 53(fvec4) FMul 862 863
865: 53(fvec4) CompositeExtract 860 1
866: 53(fvec4) CompositeExtract 861 1
867: 53(fvec4) FMul 865 866
868: 53(fvec4) CompositeExtract 863 1
869: 53(fvec4) CompositeExtract 864 1
868: 53(fvec4) CompositeExtract 860 2
869: 53(fvec4) CompositeExtract 861 2
870: 53(fvec4) FMul 868 869
871: 53(fvec4) CompositeExtract 863 2
872: 53(fvec4) CompositeExtract 864 2
873: 53(fvec4) FMul 871 872
874: 779 CompositeConstruct 867 870 873
Store 781(dmat3x4v) 874
875: 773 Load 775(dmat4x2v)
876: 773 Load 775(dmat4x2v)
877: 43(fvec2) CompositeExtract 875 0
878: 43(fvec2) CompositeExtract 876 0
871: 776 CompositeConstruct 864 867 870
Store 778(dmat3x4v) 871
872: 770 Load 772(dmat4x2v)
873: 770 Load 772(dmat4x2v)
874: 43(fvec2) CompositeExtract 872 0
875: 43(fvec2) CompositeExtract 873 0
876: 43(fvec2) FMul 874 875
877: 43(fvec2) CompositeExtract 872 1
878: 43(fvec2) CompositeExtract 873 1
879: 43(fvec2) FMul 877 878
880: 43(fvec2) CompositeExtract 875 1
881: 43(fvec2) CompositeExtract 876 1
880: 43(fvec2) CompositeExtract 872 2
881: 43(fvec2) CompositeExtract 873 2
882: 43(fvec2) FMul 880 881
883: 43(fvec2) CompositeExtract 875 2
884: 43(fvec2) CompositeExtract 876 2
883: 43(fvec2) CompositeExtract 872 3
884: 43(fvec2) CompositeExtract 873 3
885: 43(fvec2) FMul 883 884
886: 43(fvec2) CompositeExtract 875 3
887: 43(fvec2) CompositeExtract 876 3
888: 43(fvec2) FMul 886 887
889: 773 CompositeConstruct 879 882 885 888
Store 775(dmat4x2v) 889
890: 785 Load 787(dmat4x3v)
891: 785 Load 787(dmat4x3v)
892: 48(fvec3) CompositeExtract 890 0
893: 48(fvec3) CompositeExtract 891 0
886: 770 CompositeConstruct 876 879 882 885
Store 772(dmat4x2v) 886
887: 782 Load 784(dmat4x3v)
888: 782 Load 784(dmat4x3v)
889: 48(fvec3) CompositeExtract 887 0
890: 48(fvec3) CompositeExtract 888 0
891: 48(fvec3) FMul 889 890
892: 48(fvec3) CompositeExtract 887 1
893: 48(fvec3) CompositeExtract 888 1
894: 48(fvec3) FMul 892 893
895: 48(fvec3) CompositeExtract 890 1
896: 48(fvec3) CompositeExtract 891 1
895: 48(fvec3) CompositeExtract 887 2
896: 48(fvec3) CompositeExtract 888 2
897: 48(fvec3) FMul 895 896
898: 48(fvec3) CompositeExtract 890 2
899: 48(fvec3) CompositeExtract 891 2
898: 48(fvec3) CompositeExtract 887 3
899: 48(fvec3) CompositeExtract 888 3
900: 48(fvec3) FMul 898 899
901: 48(fvec3) CompositeExtract 890 3
902: 48(fvec3) CompositeExtract 891 3
903: 48(fvec3) FMul 901 902
904: 785 CompositeConstruct 894 897 900 903
Store 787(dmat4x3v) 904
905: 737 Load 739(dmat2v)
906: 737 Transpose 905
907: 737 Load 739(dmat2v)
908: 737 MatrixTimesMatrix 907 906
Store 739(dmat2v) 908
909: 743 Load 745(dmat3v)
910: 743 Transpose 909
911: 743 Load 745(dmat3v)
912: 743 MatrixTimesMatrix 911 910
Store 745(dmat3v) 912
913: 749 Load 751(dmat4v)
914: 749 Transpose 913
915: 749 Load 751(dmat4v)
916: 749 MatrixTimesMatrix 915 914
Store 751(dmat4v) 916
917: 761 Load 763(dmat3x2v)
918: 755 Transpose 917
Store 757(dmat2x3v) 918
919: 755 Load 757(dmat2x3v)
920: 761 Transpose 919
Store 763(dmat3x2v) 920
921: 773 Load 775(dmat4x2v)
922: 767 Transpose 921
Store 769(dmat2x4v) 922
923: 767 Load 769(dmat2x4v)
924: 773 Transpose 923
Store 775(dmat4x2v) 924
925: 785 Load 787(dmat4x3v)
926: 779 Transpose 925
Store 781(dmat3x4v) 926
927: 779 Load 781(dmat3x4v)
928: 785 Transpose 927
Store 787(dmat4x3v) 928
929: 737 Load 739(dmat2v)
930: 39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 929
931: 39(float) Load 41(doublev)
932: 39(float) FAdd 931 930
Store 41(doublev) 932
933: 743 Load 745(dmat3v)
934: 39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 933
935: 39(float) Load 41(doublev)
936: 39(float) FAdd 935 934
Store 41(doublev) 936
937: 749 Load 751(dmat4v)
938: 39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 937
939: 39(float) Load 41(doublev)
940: 39(float) FAdd 939 938
Store 41(doublev) 940
941: 737 Load 739(dmat2v)
942: 737 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 941
943: 737 Load 739(dmat2v)
944: 737 MatrixTimesMatrix 943 942
Store 739(dmat2v) 944
945: 743 Load 745(dmat3v)
946: 743 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 945
947: 743 Load 745(dmat3v)
948: 743 MatrixTimesMatrix 947 946
Store 745(dmat3v) 948
949: 749 Load 751(dmat4v)
950: 749 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 949
951: 749 Load 751(dmat4v)
952: 749 MatrixTimesMatrix 951 950
Store 751(dmat4v) 952
953: 39(float) Load 41(doublev)
955: 40(ptr) AccessChain 45(dvec2v) 954
956: 39(float) Load 955
957: 39(float) FAdd 953 956
959: 40(ptr) AccessChain 50(dvec3v) 958
960: 39(float) Load 959
961: 39(float) FAdd 957 960
963: 40(ptr) AccessChain 55(dvec4v) 962
964: 39(float) Load 963
965: 39(float) FAdd 961 964
967: 40(ptr) AccessChain 739(dmat2v) 966 954
968: 39(float) Load 967
969: 39(float) FAdd 965 968
971: 40(ptr) AccessChain 745(dmat3v) 970 958
901: 782 CompositeConstruct 891 894 897 900
Store 784(dmat4x3v) 901
902: 734 Load 736(dmat2v)
903: 734 Transpose 902
904: 734 Load 736(dmat2v)
905: 734 MatrixTimesMatrix 904 903
Store 736(dmat2v) 905
906: 740 Load 742(dmat3v)
907: 740 Transpose 906
908: 740 Load 742(dmat3v)
909: 740 MatrixTimesMatrix 908 907
Store 742(dmat3v) 909
910: 746 Load 748(dmat4v)
911: 746 Transpose 910
912: 746 Load 748(dmat4v)
913: 746 MatrixTimesMatrix 912 911
Store 748(dmat4v) 913
914: 758 Load 760(dmat3x2v)
915: 752 Transpose 914
Store 754(dmat2x3v) 915
916: 752 Load 754(dmat2x3v)
917: 758 Transpose 916
Store 760(dmat3x2v) 917
918: 770 Load 772(dmat4x2v)
919: 764 Transpose 918
Store 766(dmat2x4v) 919
920: 764 Load 766(dmat2x4v)
921: 770 Transpose 920
Store 772(dmat4x2v) 921
922: 782 Load 784(dmat4x3v)
923: 776 Transpose 922
Store 778(dmat3x4v) 923
924: 776 Load 778(dmat3x4v)
925: 782 Transpose 924
Store 784(dmat4x3v) 925
926: 734 Load 736(dmat2v)
927: 39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 926
928: 39(float) Load 41(doublev)
929: 39(float) FAdd 928 927
Store 41(doublev) 929
930: 740 Load 742(dmat3v)
931: 39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 930
932: 39(float) Load 41(doublev)
933: 39(float) FAdd 932 931
Store 41(doublev) 933
934: 746 Load 748(dmat4v)
935: 39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 934
936: 39(float) Load 41(doublev)
937: 39(float) FAdd 936 935
Store 41(doublev) 937
938: 734 Load 736(dmat2v)
939: 734 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 938
940: 734 Load 736(dmat2v)
941: 734 MatrixTimesMatrix 940 939
Store 736(dmat2v) 941
942: 740 Load 742(dmat3v)
943: 740 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 942
944: 740 Load 742(dmat3v)
945: 740 MatrixTimesMatrix 944 943
Store 742(dmat3v) 945
946: 746 Load 748(dmat4v)
947: 746 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 946
948: 746 Load 748(dmat4v)
949: 746 MatrixTimesMatrix 948 947
Store 748(dmat4v) 949
950: 39(float) Load 41(doublev)
952: 40(ptr) AccessChain 45(dvec2v) 951
953: 39(float) Load 952
954: 39(float) FAdd 950 953
956: 40(ptr) AccessChain 50(dvec3v) 955
957: 39(float) Load 956
958: 39(float) FAdd 954 957
960: 40(ptr) AccessChain 55(dvec4v) 959
961: 39(float) Load 960
962: 39(float) FAdd 958 961
964: 40(ptr) AccessChain 736(dmat2v) 963 951
965: 39(float) Load 964
966: 39(float) FAdd 962 965
968: 40(ptr) AccessChain 742(dmat3v) 967 955
969: 39(float) Load 968
970: 39(float) FAdd 966 969
971: 40(ptr) AccessChain 748(dmat4v) 25 959
972: 39(float) Load 971
973: 39(float) FAdd 969 972
974: 40(ptr) AccessChain 751(dmat4v) 25 962
973: 39(float) FAdd 970 972
974: 40(ptr) AccessChain 754(dmat2x3v) 963 951
975: 39(float) Load 974
976: 39(float) FAdd 973 975
977: 40(ptr) AccessChain 757(dmat2x3v) 966 954
977: 40(ptr) AccessChain 760(dmat3x2v) 963 951
978: 39(float) Load 977
979: 39(float) FAdd 976 978
980: 40(ptr) AccessChain 763(dmat3x2v) 966 954
980: 40(ptr) AccessChain 778(dmat3x4v) 967 955
981: 39(float) Load 980
982: 39(float) FAdd 979 981
983: 40(ptr) AccessChain 781(dmat3x4v) 970 958
983: 40(ptr) AccessChain 784(dmat4x3v) 967 955
984: 39(float) Load 983
985: 39(float) FAdd 982 984
986: 40(ptr) AccessChain 787(dmat4x3v) 970 958
986: 40(ptr) AccessChain 766(dmat2x4v) 963 951
987: 39(float) Load 986
988: 39(float) FAdd 985 987
989: 40(ptr) AccessChain 769(dmat2x4v) 966 954
989: 40(ptr) AccessChain 772(dmat4x2v) 963 951
990: 39(float) Load 989
991: 39(float) FAdd 988 990
992: 40(ptr) AccessChain 775(dmat4x2v) 966 954
993: 39(float) Load 992
994: 39(float) FAdd 991 993
995: 428(bool) Load 430(boolv)
997: 10(float) Select 995 996 21
998: 39(float) FConvert 997
999: 39(float) FAdd 994 998
1000: 429(ptr) AccessChain 439(bvec2v) 33
1001: 428(bool) Load 1000
1002: 10(float) Select 1001 996 21
1003: 39(float) FConvert 1002
1004: 39(float) FAdd 999 1003
1005: 429(ptr) AccessChain 448(bvec3v) 33
1006: 428(bool) Load 1005
1007: 10(float) Select 1006 996 21
1008: 39(float) FConvert 1007
1009: 39(float) FAdd 1004 1008
1010: 429(ptr) AccessChain 457(bvec4v) 33
1011: 428(bool) Load 1010
1012: 10(float) Select 1011 996 21
1013: 39(float) FConvert 1012
1014: 39(float) FAdd 1009 1013
1015: 10(float) FConvert 1014
1016: 11(fvec4) Load 13(outp)
1017: 11(fvec4) VectorTimesScalar 1016 1015
Store 13(outp) 1017
992: 428(bool) Load 430(boolv)
994: 10(float) Select 992 993 21
995: 39(float) FConvert 994
996: 39(float) FAdd 991 995
997: 429(ptr) AccessChain 439(bvec2v) 33
998: 428(bool) Load 997
999: 10(float) Select 998 993 21
1000: 39(float) FConvert 999
1001: 39(float) FAdd 996 1000
1002: 429(ptr) AccessChain 448(bvec3v) 33
1003: 428(bool) Load 1002
1004: 10(float) Select 1003 993 21
1005: 39(float) FConvert 1004
1006: 39(float) FAdd 1001 1005
1007: 429(ptr) AccessChain 457(bvec4v) 33
1008: 428(bool) Load 1007
1009: 10(float) Select 1008 993 21
1010: 39(float) FConvert 1009
1011: 39(float) FAdd 1006 1010
1012: 10(float) FConvert 1011
1013: 11(fvec4) Load 13(outp)
1014: 11(fvec4) VectorTimesScalar 1013 1012
Store 13(outp) 1014
Return
FunctionEnd

View File

@ -1,7 +1,7 @@
spv.float64.frag
// Module Version 10300
// Generated by (magic number): 80006
// Id's are bound by 521
// Id's are bound by 523
Capability Shader
Capability Float16
@ -13,7 +13,7 @@ spv.float64.frag
Capability InterpolationFunction
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 458
EntryPoint Fragment 4 "main" 461
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
@ -67,62 +67,63 @@ spv.float64.frag
Name 372 "f64v1"
Name 376 "f64v2"
Name 382 "f64v3"
Name 401 "f64m3"
Name 402 "f64m1"
Name 404 "f64m2"
Name 413 "f64v1"
Name 415 "f64v2"
Name 420 "f64m4"
Name 423 "f64"
Name 426 "f64m5"
Name 431 "f64m6"
Name 432 "f64m7"
Name 435 "bv"
Name 436 "f64v1"
Name 438 "f64v2"
Name 456 "f64v"
Name 458 "if64v"
Name 507 "S"
MemberName 507(S) 0 "x"
MemberName 507(S) 1 "y"
MemberName 507(S) 2 "z"
Name 509 "B1"
MemberName 509(B1) 0 "a"
MemberName 509(B1) 1 "b"
MemberName 509(B1) 2 "c"
MemberName 509(B1) 3 "d"
MemberName 509(B1) 4 "e"
MemberName 509(B1) 5 "f"
MemberName 509(B1) 6 "g"
MemberName 509(B1) 7 "h"
Name 511 ""
Name 512 "sf16"
Name 514 "sf"
Name 515 "sd"
Decorate 458(if64v) Flat
Decorate 505 ArrayStride 16
Decorate 506 ArrayStride 64
MemberDecorate 507(S) 0 Offset 0
MemberDecorate 507(S) 1 Offset 16
MemberDecorate 507(S) 2 Offset 32
Decorate 508 ArrayStride 64
MemberDecorate 509(B1) 0 Offset 0
MemberDecorate 509(B1) 1 Offset 16
MemberDecorate 509(B1) 2 Offset 32
MemberDecorate 509(B1) 3 Offset 64
MemberDecorate 509(B1) 4 ColMajor
MemberDecorate 509(B1) 4 Offset 96
MemberDecorate 509(B1) 4 MatrixStride 32
MemberDecorate 509(B1) 5 ColMajor
MemberDecorate 509(B1) 5 Offset 160
MemberDecorate 509(B1) 5 MatrixStride 32
MemberDecorate 509(B1) 6 Offset 288
MemberDecorate 509(B1) 7 Offset 352
Decorate 509(B1) Block
Decorate 511 DescriptorSet 0
Decorate 512(sf16) SpecId 100
Decorate 514(sf) SpecId 101
Decorate 515(sd) SpecId 102
Name 399 "f"
Name 404 "f64m3"
Name 405 "f64m1"
Name 407 "f64m2"
Name 416 "f64v1"
Name 418 "f64v2"
Name 423 "f64m4"
Name 426 "f64"
Name 429 "f64m5"
Name 434 "f64m6"
Name 435 "f64m7"
Name 438 "bv"
Name 439 "f64v1"
Name 441 "f64v2"
Name 459 "f64v"
Name 461 "if64v"
Name 510 "S"
MemberName 510(S) 0 "x"
MemberName 510(S) 1 "y"
MemberName 510(S) 2 "z"
Name 512 "B1"
MemberName 512(B1) 0 "a"
MemberName 512(B1) 1 "b"
MemberName 512(B1) 2 "c"
MemberName 512(B1) 3 "d"
MemberName 512(B1) 4 "e"
MemberName 512(B1) 5 "f"
MemberName 512(B1) 6 "g"
MemberName 512(B1) 7 "h"
Name 514 ""
Name 515 "sf16"
Name 516 "sf"
Name 517 "sd"
Decorate 461(if64v) Flat
Decorate 508 ArrayStride 16
Decorate 509 ArrayStride 64
MemberDecorate 510(S) 0 Offset 0
MemberDecorate 510(S) 1 Offset 16
MemberDecorate 510(S) 2 Offset 32
Decorate 511 ArrayStride 64
MemberDecorate 512(B1) 0 Offset 0
MemberDecorate 512(B1) 1 Offset 16
MemberDecorate 512(B1) 2 Offset 32
MemberDecorate 512(B1) 3 Offset 64
MemberDecorate 512(B1) 4 ColMajor
MemberDecorate 512(B1) 4 Offset 96
MemberDecorate 512(B1) 4 MatrixStride 32
MemberDecorate 512(B1) 5 ColMajor
MemberDecorate 512(B1) 5 Offset 160
MemberDecorate 512(B1) 5 MatrixStride 32
MemberDecorate 512(B1) 6 Offset 288
MemberDecorate 512(B1) 7 Offset 352
Decorate 512(B1) Block
Decorate 514 DescriptorSet 0
Decorate 515(sf16) SpecId 100
Decorate 516(sf) SpecId 101
Decorate 517(sd) SpecId 102
2: TypeVoid
3: TypeFunction 2
26: TypeFloat 64
@ -174,37 +175,38 @@ spv.float64.frag
214: TypeVector 26(float) 4
215: TypePointer Function 214(fvec4)
364(ResType): TypeStruct 149(fvec3) 183(ivec3)
399: TypeMatrix 149(fvec3) 2
400: TypePointer Function 399
418: TypeMatrix 27(fvec2) 3
419: TypePointer Function 418
424: TypeMatrix 149(fvec3) 3
425: TypePointer Function 424
429: TypeMatrix 214(fvec4) 4
430: TypePointer Function 429
457: TypePointer Input 149(fvec3)
458(if64v): 457(ptr) Variable Input
459: TypePointer Input 26(float)
496: 182(int) Constant 1
501: 26(float) Constant 0 1071644672
502: 27(fvec2) ConstantComposite 501 501
504: 31(int) Constant 2
505: TypeArray 26(float) 504
506: TypeArray 399 504
507(S): TypeStruct 26(float) 27(fvec2) 149(fvec3)
508: TypeArray 507(S) 504
509(B1): TypeStruct 26(float) 27(fvec2) 149(fvec3) 505 399 506 507(S) 508
510: TypePointer Uniform 509(B1)
511: 510(ptr) Variable Uniform
512(sf16): 162(float) SpecConstant 12288
513: TypeFloat 32
514(sf): 513(float) SpecConstant 1048576000
515(sd): 26(float) SpecConstant 0 1071644672
516: 513(float) SpecConstantOp 115 512(sf16)
517: 513(float) SpecConstantOp 115 512(sf16)
518: 26(float) SpecConstantOp 115 517
519: 162(float) SpecConstantOp 115 514(sf)
520: 162(float) SpecConstantOp 115 515(sd)
397: TypeFloat 32
398: TypePointer Function 397(float)
402: TypeMatrix 149(fvec3) 2
403: TypePointer Function 402
421: TypeMatrix 27(fvec2) 3
422: TypePointer Function 421
427: TypeMatrix 149(fvec3) 3
428: TypePointer Function 427
432: TypeMatrix 214(fvec4) 4
433: TypePointer Function 432
460: TypePointer Input 149(fvec3)
461(if64v): 460(ptr) Variable Input
462: TypePointer Input 26(float)
499: 182(int) Constant 1
504: 26(float) Constant 0 1071644672
505: 27(fvec2) ConstantComposite 504 504
507: 31(int) Constant 2
508: TypeArray 26(float) 507
509: TypeArray 402 507
510(S): TypeStruct 26(float) 27(fvec2) 149(fvec3)
511: TypeArray 510(S) 507
512(B1): TypeStruct 26(float) 27(fvec2) 149(fvec3) 508 402 509 510(S) 511
513: TypePointer Uniform 512(B1)
514: 513(ptr) Variable Uniform
515(sf16): 162(float) SpecConstant 12288
516(sf): 397(float) SpecConstant 1048576000
517(sd): 26(float) SpecConstant 0 1071644672
518: 397(float) SpecConstantOp 115 515(sf16)
519: 397(float) SpecConstantOp 115 515(sf16)
520: 26(float) SpecConstantOp 115 519
521: 162(float) SpecConstantOp 115 516(sf)
522: 162(float) SpecConstantOp 115 517(sd)
4(main): 2 Function None 3
5: Label
Return
@ -626,6 +628,7 @@ spv.float64.frag
372(f64v1): 150(ptr) Variable Function
376(f64v2): 150(ptr) Variable Function
382(f64v3): 150(ptr) Variable Function
399(f): 398(ptr) Variable Function
373: 149(fvec3) Load 372(f64v1)
374: 26(float) ExtInst 1(GLSL.std.450) 66(Length) 373
Store 371(f64) 374
@ -655,134 +658,134 @@ spv.float64.frag
Store 382(f64v3) 394
395: 149(fvec3) Load 372(f64v1)
396: 149(fvec3) Load 376(f64v2)
397: 26(float) Load 371(f64)
398: 149(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 395 396 397
Store 382(f64v3) 398
400: 397(float) Load 399(f)
401: 149(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 395 396 400
Store 382(f64v3) 401
Return
FunctionEnd
20(builtinMatrixFuncs(): 2 Function None 3
21: Label
401(f64m3): 400(ptr) Variable Function
402(f64m1): 400(ptr) Variable Function
404(f64m2): 400(ptr) Variable Function
413(f64v1): 150(ptr) Variable Function
415(f64v2): 28(ptr) Variable Function
420(f64m4): 419(ptr) Variable Function
423(f64): 33(ptr) Variable Function
426(f64m5): 425(ptr) Variable Function
431(f64m6): 430(ptr) Variable Function
432(f64m7): 430(ptr) Variable Function
403: 399 Load 402(f64m1)
405: 399 Load 404(f64m2)
406: 149(fvec3) CompositeExtract 403 0
407: 149(fvec3) CompositeExtract 405 0
408: 149(fvec3) FMul 406 407
409: 149(fvec3) CompositeExtract 403 1
410: 149(fvec3) CompositeExtract 405 1
404(f64m3): 403(ptr) Variable Function
405(f64m1): 403(ptr) Variable Function
407(f64m2): 403(ptr) Variable Function
416(f64v1): 150(ptr) Variable Function
418(f64v2): 28(ptr) Variable Function
423(f64m4): 422(ptr) Variable Function
426(f64): 33(ptr) Variable Function
429(f64m5): 428(ptr) Variable Function
434(f64m6): 433(ptr) Variable Function
435(f64m7): 433(ptr) Variable Function
406: 402 Load 405(f64m1)
408: 402 Load 407(f64m2)
409: 149(fvec3) CompositeExtract 406 0
410: 149(fvec3) CompositeExtract 408 0
411: 149(fvec3) FMul 409 410
412: 399 CompositeConstruct 408 411
Store 401(f64m3) 412
414: 149(fvec3) Load 413(f64v1)
416: 27(fvec2) Load 415(f64v2)
417: 399 OuterProduct 414 416
Store 402(f64m1) 417
421: 399 Load 402(f64m1)
422: 418 Transpose 421
Store 420(f64m4) 422
427: 424 Load 426(f64m5)
428: 26(float) ExtInst 1(GLSL.std.450) 33(Determinant) 427
Store 423(f64) 428
433: 429 Load 432(f64m7)
434: 429 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 433
Store 431(f64m6) 434
412: 149(fvec3) CompositeExtract 406 1
413: 149(fvec3) CompositeExtract 408 1
414: 149(fvec3) FMul 412 413
415: 402 CompositeConstruct 411 414
Store 404(f64m3) 415
417: 149(fvec3) Load 416(f64v1)
419: 27(fvec2) Load 418(f64v2)
420: 402 OuterProduct 417 419
Store 405(f64m1) 420
424: 402 Load 405(f64m1)
425: 421 Transpose 424
Store 423(f64m4) 425
430: 427 Load 429(f64m5)
431: 26(float) ExtInst 1(GLSL.std.450) 33(Determinant) 430
Store 426(f64) 431
436: 432 Load 435(f64m7)
437: 432 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 436
Store 434(f64m6) 437
Return
FunctionEnd
22(builtinVecRelFuncs(): 2 Function None 3
23: Label
435(bv): 153(ptr) Variable Function
436(f64v1): 150(ptr) Variable Function
438(f64v2): 150(ptr) Variable Function
437: 149(fvec3) Load 436(f64v1)
439: 149(fvec3) Load 438(f64v2)
440: 152(bvec3) FOrdLessThan 437 439
Store 435(bv) 440
441: 149(fvec3) Load 436(f64v1)
442: 149(fvec3) Load 438(f64v2)
443: 152(bvec3) FOrdLessThanEqual 441 442
Store 435(bv) 443
444: 149(fvec3) Load 436(f64v1)
445: 149(fvec3) Load 438(f64v2)
446: 152(bvec3) FOrdGreaterThan 444 445
Store 435(bv) 446
447: 149(fvec3) Load 436(f64v1)
448: 149(fvec3) Load 438(f64v2)
449: 152(bvec3) FOrdGreaterThanEqual 447 448
Store 435(bv) 449
450: 149(fvec3) Load 436(f64v1)
451: 149(fvec3) Load 438(f64v2)
452: 152(bvec3) FOrdEqual 450 451
Store 435(bv) 452
453: 149(fvec3) Load 436(f64v1)
454: 149(fvec3) Load 438(f64v2)
455: 152(bvec3) FOrdNotEqual 453 454
Store 435(bv) 455
438(bv): 153(ptr) Variable Function
439(f64v1): 150(ptr) Variable Function
441(f64v2): 150(ptr) Variable Function
440: 149(fvec3) Load 439(f64v1)
442: 149(fvec3) Load 441(f64v2)
443: 152(bvec3) FOrdLessThan 440 442
Store 438(bv) 443
444: 149(fvec3) Load 439(f64v1)
445: 149(fvec3) Load 441(f64v2)
446: 152(bvec3) FOrdLessThanEqual 444 445
Store 438(bv) 446
447: 149(fvec3) Load 439(f64v1)
448: 149(fvec3) Load 441(f64v2)
449: 152(bvec3) FOrdGreaterThan 447 448
Store 438(bv) 449
450: 149(fvec3) Load 439(f64v1)
451: 149(fvec3) Load 441(f64v2)
452: 152(bvec3) FOrdGreaterThanEqual 450 451
Store 438(bv) 452
453: 149(fvec3) Load 439(f64v1)
454: 149(fvec3) Load 441(f64v2)
455: 152(bvec3) FOrdEqual 453 454
Store 438(bv) 455
456: 149(fvec3) Load 439(f64v1)
457: 149(fvec3) Load 441(f64v2)
458: 152(bvec3) FOrdNotEqual 456 457
Store 438(bv) 458
Return
FunctionEnd
24(builtinFragProcFuncs(): 2 Function None 3
25: Label
456(f64v): 150(ptr) Variable Function
460: 459(ptr) AccessChain 458(if64v) 32
461: 26(float) Load 460
462: 26(float) DPdx 461
463: 33(ptr) AccessChain 456(f64v) 32
Store 463 462
464: 459(ptr) AccessChain 458(if64v) 88
465: 26(float) Load 464
466: 26(float) DPdy 465
467: 33(ptr) AccessChain 456(f64v) 88
Store 467 466
468: 149(fvec3) Load 458(if64v)
469: 27(fvec2) VectorShuffle 468 468 0 1
470: 27(fvec2) DPdxFine 469
471: 149(fvec3) Load 456(f64v)
472: 149(fvec3) VectorShuffle 471 470 3 4 2
Store 456(f64v) 472
473: 149(fvec3) Load 458(if64v)
474: 27(fvec2) VectorShuffle 473 473 0 1
475: 27(fvec2) DPdyFine 474
476: 149(fvec3) Load 456(f64v)
477: 149(fvec3) VectorShuffle 476 475 3 4 2
Store 456(f64v) 477
478: 149(fvec3) Load 458(if64v)
479: 149(fvec3) DPdxCoarse 478
Store 456(f64v) 479
480: 149(fvec3) Load 458(if64v)
481: 149(fvec3) DPdxCoarse 480
Store 456(f64v) 481
482: 459(ptr) AccessChain 458(if64v) 32
483: 26(float) Load 482
484: 26(float) Fwidth 483
485: 33(ptr) AccessChain 456(f64v) 32
Store 485 484
486: 149(fvec3) Load 458(if64v)
487: 27(fvec2) VectorShuffle 486 486 0 1
488: 27(fvec2) FwidthFine 487
489: 149(fvec3) Load 456(f64v)
490: 149(fvec3) VectorShuffle 489 488 3 4 2
Store 456(f64v) 490
491: 149(fvec3) Load 458(if64v)
492: 149(fvec3) FwidthCoarse 491
Store 456(f64v) 492
493: 459(ptr) AccessChain 458(if64v) 32
494: 26(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 493
495: 33(ptr) AccessChain 456(f64v) 32
Store 495 494
497: 149(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 458(if64v) 496
498: 27(fvec2) VectorShuffle 497 497 0 1
499: 149(fvec3) Load 456(f64v)
500: 149(fvec3) VectorShuffle 499 498 3 4 2
Store 456(f64v) 500
503: 149(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 458(if64v) 502
Store 456(f64v) 503
459(f64v): 150(ptr) Variable Function
463: 462(ptr) AccessChain 461(if64v) 32
464: 26(float) Load 463
465: 26(float) DPdx 464
466: 33(ptr) AccessChain 459(f64v) 32
Store 466 465
467: 462(ptr) AccessChain 461(if64v) 88
468: 26(float) Load 467
469: 26(float) DPdy 468
470: 33(ptr) AccessChain 459(f64v) 88
Store 470 469
471: 149(fvec3) Load 461(if64v)
472: 27(fvec2) VectorShuffle 471 471 0 1
473: 27(fvec2) DPdxFine 472
474: 149(fvec3) Load 459(f64v)
475: 149(fvec3) VectorShuffle 474 473 3 4 2
Store 459(f64v) 475
476: 149(fvec3) Load 461(if64v)
477: 27(fvec2) VectorShuffle 476 476 0 1
478: 27(fvec2) DPdyFine 477
479: 149(fvec3) Load 459(f64v)
480: 149(fvec3) VectorShuffle 479 478 3 4 2
Store 459(f64v) 480
481: 149(fvec3) Load 461(if64v)
482: 149(fvec3) DPdxCoarse 481
Store 459(f64v) 482
483: 149(fvec3) Load 461(if64v)
484: 149(fvec3) DPdxCoarse 483
Store 459(f64v) 484
485: 462(ptr) AccessChain 461(if64v) 32
486: 26(float) Load 485
487: 26(float) Fwidth 486
488: 33(ptr) AccessChain 459(f64v) 32
Store 488 487
489: 149(fvec3) Load 461(if64v)
490: 27(fvec2) VectorShuffle 489 489 0 1
491: 27(fvec2) FwidthFine 490
492: 149(fvec3) Load 459(f64v)
493: 149(fvec3) VectorShuffle 492 491 3 4 2
Store 459(f64v) 493
494: 149(fvec3) Load 461(if64v)
495: 149(fvec3) FwidthCoarse 494
Store 459(f64v) 495
496: 462(ptr) AccessChain 461(if64v) 32
497: 26(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 496
498: 33(ptr) AccessChain 459(f64v) 32
Store 498 497
500: 149(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 461(if64v) 499
501: 27(fvec2) VectorShuffle 500 500 0 1
502: 149(fvec3) Load 459(f64v)
503: 149(fvec3) VectorShuffle 502 501 3 4 2
Store 459(f64v) 503
506: 149(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 461(if64v) 505
Store 459(f64v) 506
Return
FunctionEnd

View File

@ -10,7 +10,6 @@ spv.shaderBallotAMD.comp
Capability Groups
Capability Int16
Capability StorageUniformBufferBlock16
Capability StorageUniform16
Extension "SPV_AMD_gpu_shader_half_float"
Extension "SPV_AMD_gpu_shader_int16"
Extension "SPV_AMD_shader_ballot"

View File

@ -0,0 +1,20 @@
// Verify that coverage mask is an array, as required by SPIR-V.
struct PS_INPUT
{
};
struct PS_OUTPUT
{
float4 vColor : SV_Target0;
uint nCoverageMask : SV_Coverage;
};
PS_OUTPUT main( PS_INPUT i )
{
PS_OUTPUT o;
o.vColor = float4(1.0, 0.0, 0.0, 1.0);
o.nCoverageMask = 0;
return o;
}

View File

@ -0,0 +1,9 @@
RWTexture2D < float4 > OutputTexture;
// Test conversion between SPIR-V required uint3 group id, and sub-vec3 shader declaration.
[ numthreads ( 8 , 8 , 1 ) ]
void main ( uint2 vGroupId : SV_GroupID )
{
OutputTexture[ vGroupId . xy ] = float4(1.0, 0.0, 0.0, 1.0);
}

View File

@ -0,0 +1,18 @@
struct GSPS_INPUT
{
};
// Test Append() method appearing before declaration of entry point's stream output.
void EmitVertex(in GSPS_INPUT output, inout TriangleStream<GSPS_INPUT> TriStream)
{
TriStream.Append( output );
}
[maxvertexcount(3)]
void main( triangle GSPS_INPUT input[3], inout TriangleStream<GSPS_INPUT> TriStream )
{
EmitVertex(input[0], TriStream);
EmitVertex(input[1], TriStream);
EmitVertex(input[2], TriStream);
}

8
3rdparty/glslang/Test/spv.400.frag vendored Normal file → Executable file
View File

@ -192,10 +192,10 @@ void doubles()
dvec3v += reflect(dvec3v, dvec3v);
dvec4v += reflect(dvec4v, dvec4v);
doublev += refract(doublev, doublev, doublev);
dvec2v += refract(dvec2v, dvec2v, doublev);
dvec3v += refract(dvec3v, dvec3v, doublev);
dvec4v += refract(dvec4v, dvec4v, doublev);
doublev += refract(doublev, doublev, 1.3);
dvec2v += refract(dvec2v, dvec2v, 1.3);
dvec3v += refract(dvec3v, dvec3v, 1.3);
dvec4v += refract(dvec4v, dvec4v, 1.3);
dmat2 dmat2v = outerProduct(dvec2v, dvec2v);
dmat3 dmat3v = outerProduct(dvec3v, dvec3v);

4
3rdparty/glslang/Test/spv.float64.frag vendored Normal file → Executable file
View File

@ -204,7 +204,7 @@ void builtinGeometryFuncs()
{
float64_t f64;
f64vec3 f64v1, f64v2, f64v3;
float f;
f64 = length(f64v1);
f64 = distance(f64v1, f64v2);
f64 = dot(f64v1, f64v2);
@ -212,7 +212,7 @@ void builtinGeometryFuncs()
f64v2 = normalize(f64v1);
f64v3 = faceforward(f64v1, f64v2, f64v3);
f64v3 = reflect(f64v1, f64v2);
f64v3 = refract(f64v1, f64v2, f64);
f64v3 = refract(f64v1, f64v2, f);
}
void builtinMatrixFuncs()

View File

@ -1,3 +1,3 @@
// This header is generated by the make-revision script.
#define GLSLANG_PATCH_LEVEL 2729
#define GLSLANG_PATCH_LEVEL 2743

View File

@ -603,10 +603,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"dvec3 reflect(dvec3 , dvec3 );"
"dvec4 reflect(dvec4 , dvec4 );"
"double refract(double, double, double);"
"dvec2 refract(dvec2 , dvec2 , double);"
"dvec3 refract(dvec3 , dvec3 , double);"
"dvec4 refract(dvec4 , dvec4 , double);"
"double refract(double, double, float);"
"dvec2 refract(dvec2 , dvec2 , float);"
"dvec3 refract(dvec3 , dvec3 , float);"
"dvec4 refract(dvec4 , dvec4 , float);"
"dmat2 matrixCompMult(dmat2, dmat2);"
"dmat3 matrixCompMult(dmat3, dmat3);"

View File

@ -478,7 +478,16 @@ struct TDefaultIoResolverBase : public glslang::TIoMapResolver
// Placeholder. This does not do proper cross-stage lining up, nor
// work with mixed location/no-location declarations.
int location = nextLocation;
nextLocation += TIntermediate::computeTypeLocationSize(type, stage);
int typeLocationSize;
// Dont take into account the outer-most array if the stages
// interface is automatically an array.
if (type.getQualifier().isArrayedIo(stage)) {
TType elementType(type, 0);
typeLocationSize = TIntermediate::computeTypeLocationSize(elementType, stage);
} else {
typeLocationSize = TIntermediate::computeTypeLocationSize(type, stage);
}
nextLocation += typeLocationSize;
return location;
}

View File

@ -148,6 +148,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.constructArray.vert", "main"},
{"hlsl.constructexpr.frag", "main"},
{"hlsl.constructimat.frag", "main"},
{"hlsl.coverage.frag", "main"},
{"hlsl.depthGreater.frag", "PixelShaderFunction"},
{"hlsl.depthLess.frag", "PixelShaderFunction"},
{"hlsl.discard.frag", "PixelShaderFunction"},
@ -195,6 +196,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.hull.void.tesc", "main"},
{"hlsl.hull.ctrlpt-1.tesc", "main"},
{"hlsl.hull.ctrlpt-2.tesc", "main"},
{"hlsl.groupid.comp", "main"},
{"hlsl.identifier.sample.frag", "main"},
{"hlsl.if.frag", "PixelShaderFunction"},
{"hlsl.imagefetch-subvec4.comp", "main"},
@ -370,6 +372,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.targetStruct1.frag", "main"},
{"hlsl.targetStruct2.frag", "main"},
{"hlsl.templatetypes.frag", "PixelShaderFunction"},
{"hlsl.tristream-append.geom", "main"},
{"hlsl.tx.bracket.frag", "main"},
{"hlsl.tx.overload.frag", "main"},
{"hlsl.type.half.frag", "main"},

View File

@ -1475,22 +1475,25 @@ bool HlslParseContext::isClipOrCullDistance(TBuiltInVariable builtIn)
void HlslParseContext::fixBuiltInIoType(TType& type)
{
int requiredArraySize = 0;
int requiredVectorSize = 0;
switch (type.getQualifier().builtIn) {
case EbvTessLevelOuter: requiredArraySize = 4; break;
case EbvTessLevelInner: requiredArraySize = 2; break;
case EbvTessCoord:
case EbvSampleMask:
{
// tesscoord is always a vec3 for the IO variable, no matter the shader's
// declared vector size.
TType tessCoordType(type.getBasicType(), type.getQualifier().storage, 3);
tessCoordType.getQualifier() = type.getQualifier();
type.shallowCopy(tessCoordType);
// Promote scalar to array of size 1. Leave existing arrays alone.
if (!type.isArray())
requiredArraySize = 1;
break;
}
case EbvWorkGroupId: requiredVectorSize = 3; break;
case EbvGlobalInvocationId: requiredVectorSize = 3; break;
case EbvLocalInvocationId: requiredVectorSize = 3; break;
case EbvTessCoord: requiredVectorSize = 3; break;
default:
if (isClipOrCullDistance(type)) {
const int loc = type.getQualifier().layoutLocation;
@ -1511,6 +1514,14 @@ void HlslParseContext::fixBuiltInIoType(TType& type)
return;
}
// Alter or set vector size as needed.
if (requiredVectorSize > 0) {
TType newType(type.getBasicType(), type.getQualifier().storage, requiredVectorSize);
newType.getQualifier() = type.getQualifier();
type.shallowCopy(newType);
}
// Alter or set array size as needed.
if (requiredArraySize > 0) {
if (!type.isArray() || type.getOuterArraySize() != requiredArraySize) {
@ -2697,6 +2708,15 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
} else if (assignsClipPos(left)) {
// Position can require special handling: see comment above assignPosition
return assignPosition(loc, op, left, right);
} else if (left->getQualifier().builtIn == EbvSampleMask) {
// Certain builtins are required to be arrayed outputs in SPIR-V, but may internally be scalars
// in the shader. Copy the scalar RHS into the LHS array element zero, if that happens.
if (left->isArray() && !right->isArray()) {
const TType derefType(left->getType(), 0);
left = intermediate.addIndex(EOpIndexDirect, left, intermediate.addConstantUnion(0, loc), loc);
left->setType(derefType);
// Fall through to add assign.
}
}
return intermediate.addAssign(op, left, right, loc);
@ -4487,23 +4507,18 @@ void HlslParseContext::decomposeGeometryMethods(const TSourceLoc& loc, TIntermTy
emit->setLoc(loc);
emit->setType(TType(EbtVoid));
// find the matching output
if (gsStreamOutput == nullptr) {
error(loc, "unable to find output symbol for Append()", "", "");
return;
}
sequence = intermediate.growAggregate(sequence,
handleAssign(loc, EOpAssign,
intermediate.addSymbol(*gsStreamOutput, loc),
argAggregate->getSequence()[1]->getAsTyped()),
loc);
TIntermTyped* data = argAggregate->getSequence()[1]->getAsTyped();
// This will be patched in finalization during finalizeAppendMethods()
sequence = intermediate.growAggregate(sequence, data, loc);
sequence = intermediate.growAggregate(sequence, emit);
sequence->setOperator(EOpSequence);
sequence->setLoc(loc);
sequence->setType(TType(EbtVoid));
gsAppends.push_back({sequence, loc});
node = sequence;
}
break;
@ -9919,6 +9934,31 @@ void HlslParseContext::fixTextureShadowModes()
}
}
// Finalization step: patch append methods to use proper stream output, which isn't known until
// main is parsed, which could happen after the append method is parsed.
void HlslParseContext::finalizeAppendMethods()
{
TSourceLoc loc;
loc.init();
// Nothing to do: bypass test for valid stream output.
if (gsAppends.empty())
return;
if (gsStreamOutput == nullptr) {
error(loc, "unable to find output symbol for Append()", "", "");
return;
}
// Patch append sequences, now that we know the stream output symbol.
for (auto append = gsAppends.begin(); append != gsAppends.end(); ++append) {
append->node->getSequence()[0] =
handleAssign(append->loc, EOpAssign,
intermediate.addSymbol(*gsStreamOutput, append->loc),
append->node->getSequence()[0]->getAsTyped());
}
}
// post-processing
void HlslParseContext::finish()
{
@ -9931,6 +9971,7 @@ void HlslParseContext::finish()
removeUnusedStructBufferCounters();
addPatchConstantInvocation();
fixTextureShadowModes();
finalizeAppendMethods();
// Communicate out (esp. for command line) that we formed AST that will make
// illegal AST SPIR-V and it needs transforms to legalize it.

View File

@ -266,6 +266,7 @@ protected:
TVariable* getSplitNonIoVar(int id) const;
void addPatchConstantInvocation();
void fixTextureShadowModes();
void finalizeAppendMethods();
TIntermTyped* makeIntegerIndex(TIntermTyped*);
void fixBuiltInIoType(TType&);
@ -460,6 +461,17 @@ protected:
TVector<tMipsOperatorData> mipsOperatorMipArg;
// The geometry output stream is not copied out from the entry point as a typical output variable
// is. It's written via EmitVertex (hlsl=Append), which may happen in arbitrary control flow.
// For this we need the real output symbol. Since it may not be known at the time and Append()
// method is parsed, the sequence will be patched during finalization.
struct tGsAppendData {
TIntermAggregate* node;
TSourceLoc loc;
};
TVector<tGsAppendData> gsAppends;
// A texture object may be used with shadow and non-shadow samplers, but both may not be
// alive post-DCE in the same shader. We do not know at compilation time which are alive: that's
// only known post-DCE. If a texture is used both ways, we create two textures, and