Add HLSL memory barrier intrinsics, fix dst, add lit & EvaluateAttributeSnapped

This commit is contained in:
LoopDawg 2016-06-15 09:50:24 -06:00
parent 19b92fff7e
commit 6e72fddaa2
18 changed files with 1170 additions and 466 deletions

View File

@ -1405,6 +1405,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case glslang::EOpMemoryBarrierImage: case glslang::EOpMemoryBarrierImage:
case glslang::EOpMemoryBarrierShared: case glslang::EOpMemoryBarrierShared:
case glslang::EOpGroupMemoryBarrier: case glslang::EOpGroupMemoryBarrier:
case glslang::EOpAllMemoryBarrierWithGroupSync:
case glslang::EOpGroupMemoryBarrierWithGroupSync:
case glslang::EOpWorkgroupMemoryBarrier:
case glslang::EOpWorkgroupMemoryBarrierWithGroupSync:
noReturnValue = true; noReturnValue = true;
// These all have 0 operands and will naturally finish up in the code below for 0 operands // These all have 0 operands and will naturally finish up in the code below for 0 operands
break; break;
@ -3986,6 +3990,21 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
case glslang::EOpGroupMemoryBarrier: case glslang::EOpGroupMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask);
return 0; return 0;
case glslang::EOpAllMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier.
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsAllMemory);
return 0;
case glslang::EOpGroupMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier.
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask);
return 0;
case glslang::EOpWorkgroupMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsWorkgroupMemoryMask);
return 0;
case glslang::EOpWorkgroupMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier.
builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeWorkgroup, spv::MemorySemanticsWorkgroupMemoryMask);
return 0;
default: default:
logger->missingFunctionality("unknown operation with no arguments"); logger->missingFunctionality("unknown operation with no arguments");
return 0; return 0;

View File

@ -0,0 +1,70 @@
hlsl.intrinsics.barriers.comp
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: ComputeShaderFunction( (temp float)
0:3 Function Parameters:
0:? Sequence
0:4 MemoryBarrier (global void)
0:5 AllMemoryBarrierWithGroupSync (global void)
0:6 GroupMemoryBarrier (global void)
0:7 GroupMemoryBarrierWithGroupSync (global void)
0:8 WorkgroupMemoryBarrier (global void)
0:9 WorkgroupMemoryBarrierWithGroupSync (global void)
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:? Linker Objects
Linked compute stage:
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
0:14 Function Definition: ComputeShaderFunction( (temp float)
0:3 Function Parameters:
0:? Sequence
0:4 MemoryBarrier (global void)
0:5 AllMemoryBarrierWithGroupSync (global void)
0:6 GroupMemoryBarrier (global void)
0:7 GroupMemoryBarrierWithGroupSync (global void)
0:8 WorkgroupMemoryBarrier (global void)
0:9 WorkgroupMemoryBarrierWithGroupSync (global void)
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 15
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "ComputeShaderFunction"
ExecutionMode 4 LocalSize 1 1 1
Source HLSL 450
Name 4 "ComputeShaderFunction"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 1
8: 6(int) Constant 4048
9: 6(int) Constant 512
10: 6(int) Constant 2
11: 6(int) Constant 256
12: TypeFloat 32
13: 12(float) Constant 0
4(ComputeShaderFunction): 2 Function None 3
5: Label
MemoryBarrier 7 8
ControlBarrier 7 7 8
MemoryBarrier 7 9
ControlBarrier 7 7 9
MemoryBarrier 10 11
ControlBarrier 10 10 11
ReturnValue 13
FunctionEnd

View File

@ -0,0 +1,160 @@
hlsl.intrinsics.evalfns.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
0:3 Function Parameters:
0:3 'inF1' (in float)
0:3 'inF2' (in 2-component vector of float)
0:3 'inF3' (in 3-component vector of float)
0:3 'inF4' (in 4-component vector of float)
0:3 'inI2' (in 2-component vector of int)
0:? Sequence
0:4 interpolateAtOffset (temp float)
0:4 'inF1' (in float)
0:? Constant:
0:? -0.500000
0:? -0.062500
0:5 interpolateAtOffset (temp 2-component vector of float)
0:5 'inF2' (in 2-component vector of float)
0:? Constant:
0:? 0.000000
0:? 0.062500
0:6 interpolateAtOffset (temp 3-component vector of float)
0:6 'inF3' (in 3-component vector of float)
0:? Constant:
0:? 0.187500
0:? -0.375000
0:7 interpolateAtOffset (temp 4-component vector of float)
0:7 'inF4' (in 4-component vector of float)
0:? Constant:
0:? 0.437500
0:? -0.500000
0:9 interpolateAtOffset (temp float)
0:9 'inF1' (in float)
0:9 vector-scale (temp 2-component vector of float)
0:9 Convert int to float (temp 2-component vector of float)
0:9 right-shift (temp 2-component vector of int)
0:9 left-shift (temp 2-component vector of int)
0:9 'inI2' (in 2-component vector of int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
0:9 0.062500
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
0:3 Function Parameters:
0:3 'inF1' (in float)
0:3 'inF2' (in 2-component vector of float)
0:3 'inF3' (in 3-component vector of float)
0:3 'inF4' (in 4-component vector of float)
0:3 'inI2' (in 2-component vector of int)
0:? Sequence
0:4 interpolateAtOffset (temp float)
0:4 'inF1' (in float)
0:? Constant:
0:? -0.500000
0:? -0.062500
0:5 interpolateAtOffset (temp 2-component vector of float)
0:5 'inF2' (in 2-component vector of float)
0:? Constant:
0:? 0.000000
0:? 0.062500
0:6 interpolateAtOffset (temp 3-component vector of float)
0:6 'inF3' (in 3-component vector of float)
0:? Constant:
0:? 0.187500
0:? -0.375000
0:7 interpolateAtOffset (temp 4-component vector of float)
0:7 'inF4' (in 4-component vector of float)
0:? Constant:
0:? 0.437500
0:? -0.500000
0:9 interpolateAtOffset (temp float)
0:9 'inF1' (in float)
0:9 vector-scale (temp 2-component vector of float)
0:9 Convert int to float (temp 2-component vector of float)
0:9 right-shift (temp 2-component vector of int)
0:9 left-shift (temp 2-component vector of int)
0:9 'inI2' (in 2-component vector of int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
0:9 0.062500
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 46
Capability Shader
Capability InterpolationFunction
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 8 15 22 29 36
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "main"
Name 8 "inF1"
Name 15 "inF2"
Name 22 "inF3"
Name 29 "inF4"
Name 36 "inI2"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Input 6(float)
8(inF1): 7(ptr) Variable Input
9: TypeVector 6(float) 2
10: 6(float) Constant 3204448256
11: 6(float) Constant 3179282432
12: 9(fvec2) ConstantComposite 10 11
14: TypePointer Input 9(fvec2)
15(inF2): 14(ptr) Variable Input
16: 6(float) Constant 0
17: 6(float) Constant 1031798784
18: 9(fvec2) ConstantComposite 16 17
20: TypeVector 6(float) 3
21: TypePointer Input 20(fvec3)
22(inF3): 21(ptr) Variable Input
23: 6(float) Constant 1044381696
24: 6(float) Constant 3200253952
25: 9(fvec2) ConstantComposite 23 24
27: TypeVector 6(float) 4
28: TypePointer Input 27(fvec4)
29(inF4): 28(ptr) Variable Input
30: 6(float) Constant 1054867456
31: 9(fvec2) ConstantComposite 30 10
33: TypeInt 32 1
34: TypeVector 33(int) 2
35: TypePointer Input 34(ivec2)
36(inI2): 35(ptr) Variable Input
38: 33(int) Constant 28
4(main): 2 Function None 3
5: Label
13: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 8(inF1) 12
19: 9(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 15(inF2) 18
26: 20(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 22(inF3) 25
32: 27(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 29(inF4) 31
37: 34(ivec2) Load 36(inI2)
39: 34(ivec2) CompositeConstruct 38 38
40: 34(ivec2) ShiftLeftLogical 37 39
41: 34(ivec2) CompositeConstruct 38 38
42: 34(ivec2) ShiftRightArithmetic 40 41
43: 9(fvec2) ConvertSToF 42
44: 9(fvec2) VectorTimesScalar 43 17
45: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 8(inF1) 44
Return
FunctionEnd

View File

@ -0,0 +1,129 @@
hlsl.intrinsics.f1632.frag
ERROR: 0:3: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:16: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:23: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:30: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 4 compilation errors. No code generated.
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:8 Function Definition: PixelShaderFunction(f1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
0:3 ERROR: Bad unary op
(global uint)
0:3 'inF0' (in float)
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
0:14 Function Definition: PixelShaderFunction(vf1; (temp 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:21 Function Definition: PixelShaderFunction(vf2; (temp 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:? Sequence
0:16 ERROR: Bad unary op
(global 2-component vector of uint)
0:16 'inF0' (in 2-component vector of float)
0:18 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:28 Function Definition: PixelShaderFunction(vf3; (temp 3-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 3-component vector of float)
0:? Sequence
0:23 ERROR: Bad unary op
(global 3-component vector of uint)
0:23 'inF0' (in 3-component vector of float)
0:25 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:35 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:29 Function Parameters:
0:29 'inF0' (in 4-component vector of float)
0:? Sequence
0:30 ERROR: Bad unary op
(global 4-component vector of uint)
0:30 'inF0' (in 4-component vector of float)
0:32 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:8 Function Definition: PixelShaderFunction(f1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
0:3 ERROR: Bad unary op
(global uint)
0:3 'inF0' (in float)
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
0:14 Function Definition: PixelShaderFunction(vf1; (temp 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:21 Function Definition: PixelShaderFunction(vf2; (temp 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:? Sequence
0:16 ERROR: Bad unary op
(global 2-component vector of uint)
0:16 'inF0' (in 2-component vector of float)
0:18 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:28 Function Definition: PixelShaderFunction(vf3; (temp 3-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 3-component vector of float)
0:? Sequence
0:23 ERROR: Bad unary op
(global 3-component vector of uint)
0:23 'inF0' (in 3-component vector of float)
0:25 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:35 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
0:29 Function Parameters:
0:29 'inF0' (in 4-component vector of float)
0:? Sequence
0:30 ERROR: Bad unary op
(global 4-component vector of uint)
0:30 'inF0' (in 4-component vector of float)
0:32 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? Linker Objects
SPIR-V is not generated for failed compile or link

View File

@ -638,7 +638,7 @@ gl_FragCoord origin is upper left
0:281 dot-product (global float) 0:281 dot-product (global float)
0:281 'inF0' (in 4-component vector of float) 0:281 'inF0' (in 4-component vector of float)
0:281 'inF1' (in 4-component vector of float) 0:281 'inF1' (in 4-component vector of float)
0:282 Construct vec4 (temp float) 0:282 Construct vec4 (temp 4-component vector of float)
0:282 Constant: 0:282 Constant:
0:282 1.000000 0:282 1.000000
0:282 component-wise multiply (temp float) 0:282 component-wise multiply (temp float)
@ -2088,7 +2088,7 @@ gl_FragCoord origin is upper left
0:281 dot-product (global float) 0:281 dot-product (global float)
0:281 'inF0' (in 4-component vector of float) 0:281 'inF0' (in 4-component vector of float)
0:281 'inF1' (in 4-component vector of float) 0:281 'inF1' (in 4-component vector of float)
0:282 Construct vec4 (temp float) 0:282 Construct vec4 (temp 4-component vector of float)
0:282 Constant: 0:282 Constant:
0:282 1.000000 0:282 1.000000
0:282 component-wise multiply (temp float) 0:282 component-wise multiply (temp float)
@ -2897,13 +2897,13 @@ gl_FragCoord origin is upper left
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 1264 // Id's are bound by 1265
Capability Shader Capability Shader
Capability DerivativeControl Capability DerivativeControl
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 48 67 73 80 195 213 219 226 366 384 390 397 539 557 563 570 718 732 747 856 870 885 997 1011 1026 EntryPoint Fragment 4 "PixelShaderFunction" 48 67 73 80 195 213 219 226 366 384 390 397 539 557 563 570 719 733 748 857 871 886 998 1012 1027
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 450 Source HLSL 450
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
@ -2947,58 +2947,58 @@ gl_FragCoord origin is upper left
Name 557 "inU0" Name 557 "inU0"
Name 563 "inF1" Name 563 "inF1"
Name 570 "inF2" Name 570 "inF2"
Name 634 "ResType" Name 635 "ResType"
Name 718 "inF0" Name 719 "inF0"
Name 732 "inF1" Name 733 "inF1"
Name 747 "inF2" Name 748 "inF2"
Name 790 "ResType" Name 791 "ResType"
Name 856 "inF0" Name 857 "inF0"
Name 870 "inF1" Name 871 "inF1"
Name 885 "inF2" Name 886 "inF2"
Name 931 "ResType" Name 932 "ResType"
Name 997 "inF0" Name 998 "inF0"
Name 1011 "inF1" Name 1012 "inF1"
Name 1026 "inF2" Name 1027 "inF2"
Name 1075 "ResType" Name 1076 "ResType"
Name 1140 "r0" Name 1141 "r0"
Name 1144 "r1" Name 1145 "r1"
Name 1148 "r2" Name 1149 "r2"
Name 1152 "r3" Name 1153 "r3"
Name 1156 "r4" Name 1157 "r4"
Name 1160 "r5" Name 1161 "r5"
Name 1164 "r6" Name 1165 "r6"
Name 1168 "r7" Name 1169 "r7"
Name 1172 "r8" Name 1173 "r8"
Name 1176 "r0" Name 1177 "r0"
Name 1180 "r1" Name 1181 "r1"
Name 1184 "r2" Name 1185 "r2"
Name 1188 "r3" Name 1189 "r3"
Name 1192 "r4" Name 1193 "r4"
Name 1196 "r5" Name 1197 "r5"
Name 1200 "r6" Name 1201 "r6"
Name 1204 "r7" Name 1205 "r7"
Name 1208 "r8" Name 1209 "r8"
Name 1212 "r0" Name 1213 "r0"
Name 1216 "r1" Name 1217 "r1"
Name 1220 "r2" Name 1221 "r2"
Name 1224 "r3" Name 1225 "r3"
Name 1228 "r4" Name 1229 "r4"
Name 1232 "r5" Name 1233 "r5"
Name 1236 "r6" Name 1237 "r6"
Name 1240 "r7" Name 1241 "r7"
Name 1244 "r8" Name 1245 "r8"
Name 1249 "gs_ua" Name 1250 "gs_ua"
Name 1250 "gs_ub" Name 1251 "gs_ub"
Name 1251 "gs_uc" Name 1252 "gs_uc"
Name 1253 "gs_ua2" Name 1254 "gs_ua2"
Name 1254 "gs_ub2" Name 1255 "gs_ub2"
Name 1255 "gs_uc2" Name 1256 "gs_uc2"
Name 1257 "gs_ua3" Name 1258 "gs_ua3"
Name 1258 "gs_ub3" Name 1259 "gs_ub3"
Name 1259 "gs_uc3" Name 1260 "gs_uc3"
Name 1261 "gs_ua4" Name 1262 "gs_ua4"
Name 1262 "gs_ub4" Name 1263 "gs_ub4"
Name 1263 "gs_uc4" Name 1264 "gs_uc4"
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -3078,42 +3078,42 @@ gl_FragCoord origin is upper left
574: 34(fvec4) ConstantComposite 84 84 84 84 574: 34(fvec4) ConstantComposite 84 84 84 84
575: TypeVector 50(bool) 4 575: TypeVector 50(bool) 4
585: 554(ivec4) ConstantComposite 93 241 412 159 585: 554(ivec4) ConstantComposite 93 241 412 159
634(ResType): TypeStruct 34(fvec4) 551(ivec4) 635(ResType): TypeStruct 34(fvec4) 551(ivec4)
678: 64(int) Constant 4 679: 64(int) Constant 4
679: 554(ivec4) ConstantComposite 327 159 241 678 680: 554(ivec4) ConstantComposite 327 159 241 679
714: 6(float) Constant 1082130432 715: 6(float) Constant 1082130432
715: 34(fvec4) ConstantComposite 156 325 535 714 716: 34(fvec4) ConstantComposite 156 325 535 715
717: TypePointer Input 10 718: TypePointer Input 10
718(inF0): 717(ptr) Variable Input 719(inF0): 718(ptr) Variable Input
732(inF1): 717(ptr) Variable Input 733(inF1): 718(ptr) Variable Input
738: 10 ConstantComposite 230 230 739: 10 ConstantComposite 230 230
739: TypeMatrix 231(bvec2) 2 740: TypeMatrix 231(bvec2) 2
747(inF2): 717(ptr) Variable Input 748(inF2): 718(ptr) Variable Input
790(ResType): TypeStruct 10 207(ivec2) 791(ResType): TypeStruct 10 207(ivec2)
852: 8(fvec2) ConstantComposite 325 325 853: 8(fvec2) ConstantComposite 325 325
853: 10 ConstantComposite 852 852 854: 10 ConstantComposite 853 853
855: TypePointer Input 23 856: TypePointer Input 23
856(inF0): 855(ptr) Variable Input 857(inF0): 856(ptr) Variable Input
870(inF1): 855(ptr) Variable Input 871(inF1): 856(ptr) Variable Input
876: 23 ConstantComposite 401 401 401 877: 23 ConstantComposite 401 401 401
877: TypeMatrix 402(bvec3) 3 878: TypeMatrix 402(bvec3) 3
885(inF2): 855(ptr) Variable Input 886(inF2): 856(ptr) Variable Input
931(ResType): TypeStruct 23 378(ivec3) 932(ResType): TypeStruct 23 378(ivec3)
993: 21(fvec3) ConstantComposite 535 535 535 994: 21(fvec3) ConstantComposite 535 535 535
994: 23 ConstantComposite 993 993 993 995: 23 ConstantComposite 994 994 994
996: TypePointer Input 36 997: TypePointer Input 36
997(inF0): 996(ptr) Variable Input 998(inF0): 997(ptr) Variable Input
1011(inF1): 996(ptr) Variable Input 1012(inF1): 997(ptr) Variable Input
1017: 36 ConstantComposite 574 574 574 574 1018: 36 ConstantComposite 574 574 574 574
1018: TypeMatrix 575(bvec4) 4 1019: TypeMatrix 575(bvec4) 4
1026(inF2): 996(ptr) Variable Input 1027(inF2): 997(ptr) Variable Input
1075(ResType): TypeStruct 36 551(ivec4) 1076(ResType): TypeStruct 36 551(ivec4)
1137: 34(fvec4) ConstantComposite 714 714 714 714 1138: 34(fvec4) ConstantComposite 715 715 715 715
1138: 36 ConstantComposite 1137 1137 1137 1137 1139: 36 ConstantComposite 1138 1138 1138 1138
1248: TypePointer Function 64(int) 1249: TypePointer Function 64(int)
1252: TypePointer Function 210(ivec2) 1253: TypePointer Function 210(ivec2)
1256: TypePointer Function 381(ivec3) 1257: TypePointer Function 381(ivec3)
1260: TypePointer Function 554(ivec4) 1261: TypePointer Function 554(ivec4)
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
49: 6(float) Load 48(inF0) 49: 6(float) Load 48(inF0)
@ -3260,51 +3260,51 @@ gl_FragCoord origin is upper left
17(inFM0): 11(ptr) FunctionParameter 17(inFM0): 11(ptr) FunctionParameter
18(inFM1): 11(ptr) FunctionParameter 18(inFM1): 11(ptr) FunctionParameter
20: Label 20: Label
1140(r0): 7(ptr) Variable Function 1141(r0): 7(ptr) Variable Function
1144(r1): 9(ptr) Variable Function 1145(r1): 9(ptr) Variable Function
1148(r2): 9(ptr) Variable Function 1149(r2): 9(ptr) Variable Function
1152(r3): 7(ptr) Variable Function 1153(r3): 7(ptr) Variable Function
1156(r4): 9(ptr) Variable Function 1157(r4): 9(ptr) Variable Function
1160(r5): 9(ptr) Variable Function 1161(r5): 9(ptr) Variable Function
1164(r6): 11(ptr) Variable Function 1165(r6): 11(ptr) Variable Function
1168(r7): 11(ptr) Variable Function 1169(r7): 11(ptr) Variable Function
1172(r8): 11(ptr) Variable Function 1173(r8): 11(ptr) Variable Function
1141: 6(float) Load 13(inF0) 1142: 6(float) Load 13(inF0)
1142: 6(float) Load 14(inF1) 1143: 6(float) Load 14(inF1)
1143: 6(float) FMul 1141 1142 1144: 6(float) FMul 1142 1143
Store 1140(r0) 1143 Store 1141(r0) 1144
1145: 8(fvec2) Load 15(inFV0) 1146: 8(fvec2) Load 15(inFV0)
1146: 6(float) Load 13(inF0) 1147: 6(float) Load 13(inF0)
1147: 8(fvec2) VectorTimesScalar 1145 1146 1148: 8(fvec2) VectorTimesScalar 1146 1147
Store 1144(r1) 1147 Store 1145(r1) 1148
1149: 6(float) Load 13(inF0) 1150: 6(float) Load 13(inF0)
1150: 8(fvec2) Load 15(inFV0) 1151: 8(fvec2) Load 15(inFV0)
1151: 8(fvec2) VectorTimesScalar 1150 1149 1152: 8(fvec2) VectorTimesScalar 1151 1150
Store 1148(r2) 1151 Store 1149(r2) 1152
1153: 8(fvec2) Load 15(inFV0) 1154: 8(fvec2) Load 15(inFV0)
1154: 8(fvec2) Load 16(inFV1) 1155: 8(fvec2) Load 16(inFV1)
1155: 6(float) Dot 1153 1154 1156: 6(float) Dot 1154 1155
Store 1152(r3) 1155 Store 1153(r3) 1156
1157: 10 Load 17(inFM0) 1158: 10 Load 17(inFM0)
1158: 8(fvec2) Load 15(inFV0) 1159: 8(fvec2) Load 15(inFV0)
1159: 8(fvec2) MatrixTimesVector 1157 1158 1160: 8(fvec2) MatrixTimesVector 1158 1159
Store 1156(r4) 1159 Store 1157(r4) 1160
1161: 8(fvec2) Load 15(inFV0) 1162: 8(fvec2) Load 15(inFV0)
1162: 10 Load 17(inFM0) 1163: 10 Load 17(inFM0)
1163: 8(fvec2) VectorTimesMatrix 1161 1162 1164: 8(fvec2) VectorTimesMatrix 1162 1163
Store 1160(r5) 1163 Store 1161(r5) 1164
1165: 10 Load 17(inFM0) 1166: 10 Load 17(inFM0)
1166: 6(float) Load 13(inF0) 1167: 6(float) Load 13(inF0)
1167: 10 MatrixTimesScalar 1165 1166 1168: 10 MatrixTimesScalar 1166 1167
Store 1164(r6) 1167 Store 1165(r6) 1168
1169: 6(float) Load 13(inF0) 1170: 6(float) Load 13(inF0)
1170: 10 Load 17(inFM0) 1171: 10 Load 17(inFM0)
1171: 10 MatrixTimesScalar 1170 1169 1172: 10 MatrixTimesScalar 1171 1170
Store 1168(r7) 1171 Store 1169(r7) 1172
1173: 10 Load 17(inFM0) 1174: 10 Load 17(inFM0)
1174: 10 Load 18(inFM1) 1175: 10 Load 18(inFM1)
1175: 10 MatrixTimesMatrix 1173 1174 1176: 10 MatrixTimesMatrix 1174 1175
Store 1172(r8) 1175 Store 1173(r8) 1176
Return Return
FunctionEnd FunctionEnd
32(TestGenMul(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 25 32(TestGenMul(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 25
@ -3315,51 +3315,51 @@ gl_FragCoord origin is upper left
30(inFM0): 24(ptr) FunctionParameter 30(inFM0): 24(ptr) FunctionParameter
31(inFM1): 24(ptr) FunctionParameter 31(inFM1): 24(ptr) FunctionParameter
33: Label 33: Label
1176(r0): 7(ptr) Variable Function 1177(r0): 7(ptr) Variable Function
1180(r1): 22(ptr) Variable Function 1181(r1): 22(ptr) Variable Function
1184(r2): 22(ptr) Variable Function 1185(r2): 22(ptr) Variable Function
1188(r3): 7(ptr) Variable Function 1189(r3): 7(ptr) Variable Function
1192(r4): 22(ptr) Variable Function 1193(r4): 22(ptr) Variable Function
1196(r5): 22(ptr) Variable Function 1197(r5): 22(ptr) Variable Function
1200(r6): 24(ptr) Variable Function 1201(r6): 24(ptr) Variable Function
1204(r7): 24(ptr) Variable Function 1205(r7): 24(ptr) Variable Function
1208(r8): 24(ptr) Variable Function 1209(r8): 24(ptr) Variable Function
1177: 6(float) Load 26(inF0) 1178: 6(float) Load 26(inF0)
1178: 6(float) Load 27(inF1) 1179: 6(float) Load 27(inF1)
1179: 6(float) FMul 1177 1178 1180: 6(float) FMul 1178 1179
Store 1176(r0) 1179 Store 1177(r0) 1180
1181: 21(fvec3) Load 28(inFV0) 1182: 21(fvec3) Load 28(inFV0)
1182: 6(float) Load 26(inF0) 1183: 6(float) Load 26(inF0)
1183: 21(fvec3) VectorTimesScalar 1181 1182 1184: 21(fvec3) VectorTimesScalar 1182 1183
Store 1180(r1) 1183 Store 1181(r1) 1184
1185: 6(float) Load 26(inF0) 1186: 6(float) Load 26(inF0)
1186: 21(fvec3) Load 28(inFV0) 1187: 21(fvec3) Load 28(inFV0)
1187: 21(fvec3) VectorTimesScalar 1186 1185 1188: 21(fvec3) VectorTimesScalar 1187 1186
Store 1184(r2) 1187 Store 1185(r2) 1188
1189: 21(fvec3) Load 28(inFV0) 1190: 21(fvec3) Load 28(inFV0)
1190: 21(fvec3) Load 29(inFV1) 1191: 21(fvec3) Load 29(inFV1)
1191: 6(float) Dot 1189 1190 1192: 6(float) Dot 1190 1191
Store 1188(r3) 1191 Store 1189(r3) 1192
1193: 23 Load 30(inFM0) 1194: 23 Load 30(inFM0)
1194: 21(fvec3) Load 28(inFV0) 1195: 21(fvec3) Load 28(inFV0)
1195: 21(fvec3) MatrixTimesVector 1193 1194 1196: 21(fvec3) MatrixTimesVector 1194 1195
Store 1192(r4) 1195 Store 1193(r4) 1196
1197: 21(fvec3) Load 28(inFV0) 1198: 21(fvec3) Load 28(inFV0)
1198: 23 Load 30(inFM0) 1199: 23 Load 30(inFM0)
1199: 21(fvec3) VectorTimesMatrix 1197 1198 1200: 21(fvec3) VectorTimesMatrix 1198 1199
Store 1196(r5) 1199 Store 1197(r5) 1200
1201: 23 Load 30(inFM0) 1202: 23 Load 30(inFM0)
1202: 6(float) Load 26(inF0) 1203: 6(float) Load 26(inF0)
1203: 23 MatrixTimesScalar 1201 1202 1204: 23 MatrixTimesScalar 1202 1203
Store 1200(r6) 1203 Store 1201(r6) 1204
1205: 6(float) Load 26(inF0) 1206: 6(float) Load 26(inF0)
1206: 23 Load 30(inFM0) 1207: 23 Load 30(inFM0)
1207: 23 MatrixTimesScalar 1206 1205 1208: 23 MatrixTimesScalar 1207 1206
Store 1204(r7) 1207 Store 1205(r7) 1208
1209: 23 Load 30(inFM0) 1210: 23 Load 30(inFM0)
1210: 23 Load 31(inFM1) 1211: 23 Load 31(inFM1)
1211: 23 MatrixTimesMatrix 1209 1210 1212: 23 MatrixTimesMatrix 1210 1211
Store 1208(r8) 1211 Store 1209(r8) 1212
Return Return
FunctionEnd FunctionEnd
45(TestGenMul(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 38 45(TestGenMul(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 38
@ -3370,62 +3370,62 @@ gl_FragCoord origin is upper left
43(inFM0): 37(ptr) FunctionParameter 43(inFM0): 37(ptr) FunctionParameter
44(inFM1): 37(ptr) FunctionParameter 44(inFM1): 37(ptr) FunctionParameter
46: Label 46: Label
1212(r0): 7(ptr) Variable Function 1213(r0): 7(ptr) Variable Function
1216(r1): 35(ptr) Variable Function 1217(r1): 35(ptr) Variable Function
1220(r2): 35(ptr) Variable Function 1221(r2): 35(ptr) Variable Function
1224(r3): 7(ptr) Variable Function 1225(r3): 7(ptr) Variable Function
1228(r4): 35(ptr) Variable Function 1229(r4): 35(ptr) Variable Function
1232(r5): 35(ptr) Variable Function 1233(r5): 35(ptr) Variable Function
1236(r6): 37(ptr) Variable Function 1237(r6): 37(ptr) Variable Function
1240(r7): 37(ptr) Variable Function 1241(r7): 37(ptr) Variable Function
1244(r8): 37(ptr) Variable Function 1245(r8): 37(ptr) Variable Function
1249(gs_ua): 1248(ptr) Variable Function 1250(gs_ua): 1249(ptr) Variable Function
1250(gs_ub): 1248(ptr) Variable Function 1251(gs_ub): 1249(ptr) Variable Function
1251(gs_uc): 1248(ptr) Variable Function 1252(gs_uc): 1249(ptr) Variable Function
1253(gs_ua2): 1252(ptr) Variable Function 1254(gs_ua2): 1253(ptr) Variable Function
1254(gs_ub2): 1252(ptr) Variable Function 1255(gs_ub2): 1253(ptr) Variable Function
1255(gs_uc2): 1252(ptr) Variable Function 1256(gs_uc2): 1253(ptr) Variable Function
1257(gs_ua3): 1256(ptr) Variable Function 1258(gs_ua3): 1257(ptr) Variable Function
1258(gs_ub3): 1256(ptr) Variable Function 1259(gs_ub3): 1257(ptr) Variable Function
1259(gs_uc3): 1256(ptr) Variable Function 1260(gs_uc3): 1257(ptr) Variable Function
1261(gs_ua4): 1260(ptr) Variable Function 1262(gs_ua4): 1261(ptr) Variable Function
1262(gs_ub4): 1260(ptr) Variable Function 1263(gs_ub4): 1261(ptr) Variable Function
1263(gs_uc4): 1260(ptr) Variable Function 1264(gs_uc4): 1261(ptr) Variable Function
1213: 6(float) Load 39(inF0) 1214: 6(float) Load 39(inF0)
1214: 6(float) Load 40(inF1) 1215: 6(float) Load 40(inF1)
1215: 6(float) FMul 1213 1214 1216: 6(float) FMul 1214 1215
Store 1212(r0) 1215 Store 1213(r0) 1216
1217: 34(fvec4) Load 41(inFV0) 1218: 34(fvec4) Load 41(inFV0)
1218: 6(float) Load 39(inF0) 1219: 6(float) Load 39(inF0)
1219: 34(fvec4) VectorTimesScalar 1217 1218 1220: 34(fvec4) VectorTimesScalar 1218 1219
Store 1216(r1) 1219 Store 1217(r1) 1220
1221: 6(float) Load 39(inF0) 1222: 6(float) Load 39(inF0)
1222: 34(fvec4) Load 41(inFV0) 1223: 34(fvec4) Load 41(inFV0)
1223: 34(fvec4) VectorTimesScalar 1222 1221 1224: 34(fvec4) VectorTimesScalar 1223 1222
Store 1220(r2) 1223 Store 1221(r2) 1224
1225: 34(fvec4) Load 41(inFV0) 1226: 34(fvec4) Load 41(inFV0)
1226: 34(fvec4) Load 42(inFV1) 1227: 34(fvec4) Load 42(inFV1)
1227: 6(float) Dot 1225 1226 1228: 6(float) Dot 1226 1227
Store 1224(r3) 1227 Store 1225(r3) 1228
1229: 36 Load 43(inFM0) 1230: 36 Load 43(inFM0)
1230: 34(fvec4) Load 41(inFV0) 1231: 34(fvec4) Load 41(inFV0)
1231: 34(fvec4) MatrixTimesVector 1229 1230 1232: 34(fvec4) MatrixTimesVector 1230 1231
Store 1228(r4) 1231 Store 1229(r4) 1232
1233: 34(fvec4) Load 41(inFV0) 1234: 34(fvec4) Load 41(inFV0)
1234: 36 Load 43(inFM0) 1235: 36 Load 43(inFM0)
1235: 34(fvec4) VectorTimesMatrix 1233 1234 1236: 34(fvec4) VectorTimesMatrix 1234 1235
Store 1232(r5) 1235 Store 1233(r5) 1236
1237: 36 Load 43(inFM0) 1238: 36 Load 43(inFM0)
1238: 6(float) Load 39(inF0) 1239: 6(float) Load 39(inF0)
1239: 36 MatrixTimesScalar 1237 1238 1240: 36 MatrixTimesScalar 1238 1239
Store 1236(r6) 1239 Store 1237(r6) 1240
1241: 6(float) Load 39(inF0) 1242: 6(float) Load 39(inF0)
1242: 36 Load 43(inFM0) 1243: 36 Load 43(inFM0)
1243: 36 MatrixTimesScalar 1242 1241 1244: 36 MatrixTimesScalar 1243 1242
Store 1240(r7) 1243 Store 1241(r7) 1244
1245: 36 Load 43(inFM0) 1246: 36 Load 43(inFM0)
1246: 36 Load 44(inFM1) 1247: 36 Load 44(inFM1)
1247: 36 MatrixTimesMatrix 1245 1246 1248: 36 MatrixTimesMatrix 1246 1247
Store 1244(r8) 1247 Store 1245(r8) 1248
Return Return
FunctionEnd FunctionEnd

View File

@ -0,0 +1,134 @@
hlsl.intrinsics.lit.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
0:2 Function Parameters:
0:2 'n_dot_l' (in float)
0:2 'n_dot_h' (in float)
0:2 'm' (in float)
0:? Sequence
0:3 move second child to first child (temp 4-component vector of float)
0:3 'r0' (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 Constant:
0:3 1.000000
0:3 max (temp float)
0:3 'n_dot_l' (in float)
0:3 Constant:
0:3 0.000000
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
0:3 'n_dot_l' (in float)
0:3 'n_dot_h' (in float)
0:3 Constant:
0:3 0.000000
0:3 true case
0:3 Constant:
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
0:3 'n_dot_h' (in float)
0:3 'm' (in float)
0:3 Constant:
0:3 1.000000
0:? Linker Objects
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
0:2 Function Parameters:
0:2 'n_dot_l' (in float)
0:2 'n_dot_h' (in float)
0:2 'm' (in float)
0:? Sequence
0:3 move second child to first child (temp 4-component vector of float)
0:3 'r0' (temp 4-component vector of float)
0:3 Construct vec4 (temp 4-component vector of float)
0:3 Constant:
0:3 1.000000
0:3 max (temp float)
0:3 'n_dot_l' (in float)
0:3 Constant:
0:3 0.000000
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
0:3 'n_dot_l' (in float)
0:3 'n_dot_h' (in float)
0:3 Constant:
0:3 0.000000
0:3 true case
0:3 Constant:
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
0:3 'n_dot_h' (in float)
0:3 'm' (in float)
0:3 Constant:
0:3 1.000000
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 33
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 12 19 28
ExecutionMode 4 OriginUpperLeft
Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "r0"
Name 12 "n_dot_l"
Name 19 "n_dot_h"
Name 28 "m"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: 6(float) Constant 1065353216
11: TypePointer Input 6(float)
12(n_dot_l): 11(ptr) Variable Input
14: 6(float) Constant 0
16: TypePointer Function 6(float)
19(n_dot_h): 11(ptr) Variable Input
22: TypeBool
28(m): 11(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
9(r0): 8(ptr) Variable Function
17: 16(ptr) Variable Function
13: 6(float) Load 12(n_dot_l)
15: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 13 14
18: 6(float) Load 12(n_dot_l)
20: 6(float) Load 19(n_dot_h)
21: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 18 20
23: 22(bool) FOrdLessThan 21 14
SelectionMerge 25 None
BranchConditional 23 24 26
24: Label
Store 17 14
Branch 25
26: Label
27: 6(float) Load 19(n_dot_h)
29: 6(float) Load 28(m)
30: 6(float) FMul 27 29
Store 17 30
Branch 25
25: Label
31: 6(float) Load 17
32: 7(fvec4) CompositeConstruct 10 15 31 10
Store 9(r0) 32
Return
FunctionEnd

View File

@ -1,4 +1,6 @@
hlsl.intrinsics.negative.vert hlsl.intrinsics.negative.vert
ERROR: 0:18: 'AllMemoryBarrier' : no matching overloaded function found
ERROR: 0:19: 'AllMemoryBarrierWithGroupSync' : no matching overloaded function found
ERROR: 0:20: 'asdouble' : no matching overloaded function found ERROR: 0:20: 'asdouble' : no matching overloaded function found
ERROR: 0:21: 'CheckAccessFullyMapped' : no matching overloaded function found ERROR: 0:21: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:22: 'CheckAccessFullyMapped' : no matching overloaded function found ERROR: 0:22: 'CheckAccessFullyMapped' : no matching overloaded function found
@ -6,6 +8,8 @@ ERROR: 0:23: 'clip' : no matching overloaded function found
ERROR: 0:24: 'countbits' : no matching overloaded function found ERROR: 0:24: 'countbits' : no matching overloaded function found
ERROR: 0:25: 'cross' : no matching overloaded function found ERROR: 0:25: 'cross' : no matching overloaded function found
ERROR: 0:26: 'D3DCOLORtoUBYTE4' : no matching overloaded function found ERROR: 0:26: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:27: 'DeviceMemoryBarrier' : no matching overloaded function found
ERROR: 0:28: 'DeviceMemoryBarrierWithGroupSync' : no matching overloaded function found
ERROR: 0:29: 'ddx' : no matching overloaded function found ERROR: 0:29: 'ddx' : no matching overloaded function found
ERROR: 0:30: 'ddx_coarse' : no matching overloaded function found ERROR: 0:30: 'ddx_coarse' : no matching overloaded function found
ERROR: 0:31: 'ddx_fine' : no matching overloaded function found ERROR: 0:31: 'ddx_fine' : no matching overloaded function found
@ -35,6 +39,8 @@ ERROR: 0:54: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:55: 'InterlockedOr' : no matching overloaded function found ERROR: 0:55: 'InterlockedOr' : no matching overloaded function found
ERROR: 0:56: 'InterlockedXor' : no matching overloaded function found ERROR: 0:56: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:57: 'InterlockedXor' : no matching overloaded function found ERROR: 0:57: 'InterlockedXor' : no matching overloaded function found
ERROR: 0:58: 'GroupMemoryBarrier' : no matching overloaded function found
ERROR: 0:59: 'GroupMemoryBarrierWithGroupSync' : no matching overloaded function found
ERROR: 0:60: 'length' : no matching overloaded function found ERROR: 0:60: 'length' : no matching overloaded function found
ERROR: 0:61: 'msad4' : no matching overloaded function found ERROR: 0:61: 'msad4' : no matching overloaded function found
ERROR: 0:62: 'normalize' : no matching overloaded function found ERROR: 0:62: 'normalize' : no matching overloaded function found
@ -226,7 +232,7 @@ ERROR: 0:270: 'normalize' : no matching overloaded function found
ERROR: 0:270: 'reflect' : no matching overloaded function found ERROR: 0:270: 'reflect' : no matching overloaded function found
ERROR: 0:270: 'refract' : no matching overloaded function found ERROR: 0:270: 'refract' : no matching overloaded function found
ERROR: 0:270: 'reversebits' : no matching overloaded function found ERROR: 0:270: 'reversebits' : no matching overloaded function found
ERROR: 227 compilation errors. No code generated. ERROR: 233 compilation errors. No code generated.
Shader version: 450 Shader version: 450
@ -238,6 +244,10 @@ ERROR: node is still EOpNull!
0:15 'inF2' (in float) 0:15 'inF2' (in float)
0:15 'inI0' (in int) 0:15 'inI0' (in int)
0:? Sequence 0:? Sequence
0:18 Constant:
0:18 0.000000
0:19 Constant:
0:19 0.000000
0:20 Constant: 0:20 Constant:
0:20 0.000000 0:20 0.000000
0:21 Constant: 0:21 Constant:
@ -252,6 +262,10 @@ ERROR: node is still EOpNull!
0:25 0.000000 0:25 0.000000
0:26 Constant: 0:26 Constant:
0:26 0.000000 0:26 0.000000
0:27 Constant:
0:27 0.000000
0:28 Constant:
0:28 0.000000
0:29 Constant: 0:29 Constant:
0:29 0.000000 0:29 0.000000
0:30 Constant: 0:30 Constant:
@ -310,6 +324,10 @@ ERROR: node is still EOpNull!
0:56 0.000000 0:56 0.000000
0:57 Constant: 0:57 Constant:
0:57 0.000000 0:57 0.000000
0:58 Constant:
0:58 0.000000
0:59 Constant:
0:59 0.000000
0:60 Constant: 0:60 Constant:
0:60 0.000000 0:60 0.000000
0:61 Constant: 0:61 Constant:
@ -821,6 +839,10 @@ ERROR: node is still EOpNull!
0:15 'inF2' (in float) 0:15 'inF2' (in float)
0:15 'inI0' (in int) 0:15 'inI0' (in int)
0:? Sequence 0:? Sequence
0:18 Constant:
0:18 0.000000
0:19 Constant:
0:19 0.000000
0:20 Constant: 0:20 Constant:
0:20 0.000000 0:20 0.000000
0:21 Constant: 0:21 Constant:
@ -835,6 +857,10 @@ ERROR: node is still EOpNull!
0:25 0.000000 0:25 0.000000
0:26 Constant: 0:26 Constant:
0:26 0.000000 0:26 0.000000
0:27 Constant:
0:27 0.000000
0:28 Constant:
0:28 0.000000
0:29 Constant: 0:29 Constant:
0:29 0.000000 0:29 0.000000
0:30 Constant: 0:30 Constant:
@ -893,6 +919,10 @@ ERROR: node is still EOpNull!
0:56 0.000000 0:56 0.000000
0:57 Constant: 0:57 Constant:
0:57 0.000000 0:57 0.000000
0:58 Constant:
0:58 0.000000
0:59 Constant:
0:59 0.000000
0:60 Constant: 0:60 Constant:
0:60 0.000000 0:60 0.000000
0:61 Constant: 0:61 Constant:

View File

@ -530,7 +530,7 @@ Shader version: 450
0:227 dot-product (global float) 0:227 dot-product (global float)
0:227 'inF0' (in 4-component vector of float) 0:227 'inF0' (in 4-component vector of float)
0:227 'inF1' (in 4-component vector of float) 0:227 'inF1' (in 4-component vector of float)
0:228 Construct vec4 (temp float) 0:228 Construct vec4 (temp 4-component vector of float)
0:228 Constant: 0:228 Constant:
0:228 1.000000 0:228 1.000000
0:228 component-wise multiply (temp float) 0:228 component-wise multiply (temp float)
@ -1759,7 +1759,7 @@ Shader version: 450
0:227 dot-product (global float) 0:227 dot-product (global float)
0:227 'inF0' (in 4-component vector of float) 0:227 'inF0' (in 4-component vector of float)
0:227 'inF1' (in 4-component vector of float) 0:227 'inF1' (in 4-component vector of float)
0:228 Construct vec4 (temp float) 0:228 Construct vec4 (temp 4-component vector of float)
0:228 Constant: 0:228 Constant:
0:228 1.000000 0:228 1.000000
0:228 component-wise multiply (temp float) 0:228 component-wise multiply (temp float)
@ -2455,12 +2455,12 @@ Shader version: 450
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 1089 // Id's are bound by 1090
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "VertexShaderFunction" 48 67 73 80 174 192 198 205 321 339 345 352 470 488 494 501 625 639 646 741 755 762 860 874 881 EntryPoint Vertex 4 "VertexShaderFunction" 48 67 73 80 174 192 198 205 321 339 345 352 470 488 494 501 626 640 647 742 756 763 861 875 882
Source HLSL 450 Source HLSL 450
Name 4 "VertexShaderFunction" Name 4 "VertexShaderFunction"
Name 19 "TestGenMul(f1;f1;vf2;vf2;mf22;mf22;" Name 19 "TestGenMul(f1;f1;vf2;vf2;mf22;mf22;"
@ -2503,46 +2503,46 @@ Shader version: 450
Name 488 "inU0" Name 488 "inU0"
Name 494 "inF1" Name 494 "inF1"
Name 501 "inF2" Name 501 "inF2"
Name 545 "ResType" Name 546 "ResType"
Name 625 "inF0" Name 626 "inF0"
Name 639 "inF1" Name 640 "inF1"
Name 646 "inF2" Name 647 "inF2"
Name 677 "ResType" Name 678 "ResType"
Name 741 "inF0" Name 742 "inF0"
Name 755 "inF1" Name 756 "inF1"
Name 762 "inF2" Name 763 "inF2"
Name 796 "ResType" Name 797 "ResType"
Name 860 "inF0" Name 861 "inF0"
Name 874 "inF1" Name 875 "inF1"
Name 881 "inF2" Name 882 "inF2"
Name 918 "ResType" Name 919 "ResType"
Name 981 "r0" Name 982 "r0"
Name 985 "r1" Name 986 "r1"
Name 989 "r2" Name 990 "r2"
Name 993 "r3" Name 994 "r3"
Name 997 "r4" Name 998 "r4"
Name 1001 "r5" Name 1002 "r5"
Name 1005 "r6" Name 1006 "r6"
Name 1009 "r7" Name 1010 "r7"
Name 1013 "r8" Name 1014 "r8"
Name 1017 "r0" Name 1018 "r0"
Name 1021 "r1" Name 1022 "r1"
Name 1025 "r2" Name 1026 "r2"
Name 1029 "r3" Name 1030 "r3"
Name 1033 "r4" Name 1034 "r4"
Name 1037 "r5" Name 1038 "r5"
Name 1041 "r6" Name 1042 "r6"
Name 1045 "r7" Name 1046 "r7"
Name 1049 "r8" Name 1050 "r8"
Name 1053 "r0" Name 1054 "r0"
Name 1057 "r1" Name 1058 "r1"
Name 1061 "r2" Name 1062 "r2"
Name 1065 "r3" Name 1066 "r3"
Name 1069 "r4" Name 1070 "r4"
Name 1073 "r5" Name 1074 "r5"
Name 1077 "r6" Name 1078 "r6"
Name 1081 "r7" Name 1082 "r7"
Name 1085 "r8" Name 1086 "r8"
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -2618,33 +2618,33 @@ Shader version: 450
494(inF1): 469(ptr) Variable Input 494(inF1): 469(ptr) Variable Input
501(inF2): 469(ptr) Variable Input 501(inF2): 469(ptr) Variable Input
508: 485(ivec4) ConstantComposite 87 212 359 136 508: 485(ivec4) ConstantComposite 87 212 359 136
545(ResType): TypeStruct 34(fvec4) 482(ivec4) 546(ResType): TypeStruct 34(fvec4) 482(ivec4)
550: TypeVector 50(bool) 4 551: TypeVector 50(bool) 4
585: 64(int) Constant 4 586: 64(int) Constant 4
586: 485(ivec4) ConstantComposite 282 136 212 585 587: 485(ivec4) ConstantComposite 282 136 212 586
621: 6(float) Constant 1082130432 622: 6(float) Constant 1082130432
622: 34(fvec4) ConstantComposite 144 280 466 621 623: 34(fvec4) ConstantComposite 144 280 466 622
624: TypePointer Input 10 625: TypePointer Input 10
625(inF0): 624(ptr) Variable Input 626(inF0): 625(ptr) Variable Input
639(inF1): 624(ptr) Variable Input 640(inF1): 625(ptr) Variable Input
646(inF2): 624(ptr) Variable Input 647(inF2): 625(ptr) Variable Input
677(ResType): TypeStruct 10 186(ivec2) 678(ResType): TypeStruct 10 186(ivec2)
737: 8(fvec2) ConstantComposite 280 280 738: 8(fvec2) ConstantComposite 280 280
738: 10 ConstantComposite 737 737 739: 10 ConstantComposite 738 738
740: TypePointer Input 23 741: TypePointer Input 23
741(inF0): 740(ptr) Variable Input 742(inF0): 741(ptr) Variable Input
755(inF1): 740(ptr) Variable Input 756(inF1): 741(ptr) Variable Input
762(inF2): 740(ptr) Variable Input 763(inF2): 741(ptr) Variable Input
796(ResType): TypeStruct 23 333(ivec3) 797(ResType): TypeStruct 23 333(ivec3)
856: 21(fvec3) ConstantComposite 466 466 466 857: 21(fvec3) ConstantComposite 466 466 466
857: 23 ConstantComposite 856 856 856 858: 23 ConstantComposite 857 857 857
859: TypePointer Input 36 860: TypePointer Input 36
860(inF0): 859(ptr) Variable Input 861(inF0): 860(ptr) Variable Input
874(inF1): 859(ptr) Variable Input 875(inF1): 860(ptr) Variable Input
881(inF2): 859(ptr) Variable Input 882(inF2): 860(ptr) Variable Input
918(ResType): TypeStruct 36 482(ivec4) 919(ResType): TypeStruct 36 482(ivec4)
978: 34(fvec4) ConstantComposite 621 621 621 621 979: 34(fvec4) ConstantComposite 622 622 622 622
979: 36 ConstantComposite 978 978 978 978 980: 36 ConstantComposite 979 979 979 979
4(VertexShaderFunction): 2 Function None 3 4(VertexShaderFunction): 2 Function None 3
5: Label 5: Label
49: 6(float) Load 48(inF0) 49: 6(float) Load 48(inF0)
@ -2768,51 +2768,51 @@ Shader version: 450
17(inFM0): 11(ptr) FunctionParameter 17(inFM0): 11(ptr) FunctionParameter
18(inFM1): 11(ptr) FunctionParameter 18(inFM1): 11(ptr) FunctionParameter
20: Label 20: Label
981(r0): 7(ptr) Variable Function 982(r0): 7(ptr) Variable Function
985(r1): 9(ptr) Variable Function 986(r1): 9(ptr) Variable Function
989(r2): 9(ptr) Variable Function 990(r2): 9(ptr) Variable Function
993(r3): 7(ptr) Variable Function 994(r3): 7(ptr) Variable Function
997(r4): 9(ptr) Variable Function 998(r4): 9(ptr) Variable Function
1001(r5): 9(ptr) Variable Function 1002(r5): 9(ptr) Variable Function
1005(r6): 11(ptr) Variable Function 1006(r6): 11(ptr) Variable Function
1009(r7): 11(ptr) Variable Function 1010(r7): 11(ptr) Variable Function
1013(r8): 11(ptr) Variable Function 1014(r8): 11(ptr) Variable Function
982: 6(float) Load 13(inF0) 983: 6(float) Load 13(inF0)
983: 6(float) Load 14(inF1) 984: 6(float) Load 14(inF1)
984: 6(float) FMul 982 983 985: 6(float) FMul 983 984
Store 981(r0) 984 Store 982(r0) 985
986: 8(fvec2) Load 15(inFV0) 987: 8(fvec2) Load 15(inFV0)
987: 6(float) Load 13(inF0) 988: 6(float) Load 13(inF0)
988: 8(fvec2) VectorTimesScalar 986 987 989: 8(fvec2) VectorTimesScalar 987 988
Store 985(r1) 988 Store 986(r1) 989
990: 6(float) Load 13(inF0) 991: 6(float) Load 13(inF0)
991: 8(fvec2) Load 15(inFV0) 992: 8(fvec2) Load 15(inFV0)
992: 8(fvec2) VectorTimesScalar 991 990 993: 8(fvec2) VectorTimesScalar 992 991
Store 989(r2) 992 Store 990(r2) 993
994: 8(fvec2) Load 15(inFV0) 995: 8(fvec2) Load 15(inFV0)
995: 8(fvec2) Load 16(inFV1) 996: 8(fvec2) Load 16(inFV1)
996: 6(float) Dot 994 995 997: 6(float) Dot 995 996
Store 993(r3) 996 Store 994(r3) 997
998: 10 Load 17(inFM0) 999: 10 Load 17(inFM0)
999: 8(fvec2) Load 15(inFV0) 1000: 8(fvec2) Load 15(inFV0)
1000: 8(fvec2) MatrixTimesVector 998 999 1001: 8(fvec2) MatrixTimesVector 999 1000
Store 997(r4) 1000 Store 998(r4) 1001
1002: 8(fvec2) Load 15(inFV0) 1003: 8(fvec2) Load 15(inFV0)
1003: 10 Load 17(inFM0) 1004: 10 Load 17(inFM0)
1004: 8(fvec2) VectorTimesMatrix 1002 1003 1005: 8(fvec2) VectorTimesMatrix 1003 1004
Store 1001(r5) 1004 Store 1002(r5) 1005
1006: 10 Load 17(inFM0) 1007: 10 Load 17(inFM0)
1007: 6(float) Load 13(inF0) 1008: 6(float) Load 13(inF0)
1008: 10 MatrixTimesScalar 1006 1007 1009: 10 MatrixTimesScalar 1007 1008
Store 1005(r6) 1008 Store 1006(r6) 1009
1010: 6(float) Load 13(inF0) 1011: 6(float) Load 13(inF0)
1011: 10 Load 17(inFM0) 1012: 10 Load 17(inFM0)
1012: 10 MatrixTimesScalar 1011 1010 1013: 10 MatrixTimesScalar 1012 1011
Store 1009(r7) 1012 Store 1010(r7) 1013
1014: 10 Load 17(inFM0) 1015: 10 Load 17(inFM0)
1015: 10 Load 18(inFM1) 1016: 10 Load 18(inFM1)
1016: 10 MatrixTimesMatrix 1014 1015 1017: 10 MatrixTimesMatrix 1015 1016
Store 1013(r8) 1016 Store 1014(r8) 1017
Return Return
FunctionEnd FunctionEnd
32(TestGenMul(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 25 32(TestGenMul(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 25
@ -2823,51 +2823,51 @@ Shader version: 450
30(inFM0): 24(ptr) FunctionParameter 30(inFM0): 24(ptr) FunctionParameter
31(inFM1): 24(ptr) FunctionParameter 31(inFM1): 24(ptr) FunctionParameter
33: Label 33: Label
1017(r0): 7(ptr) Variable Function 1018(r0): 7(ptr) Variable Function
1021(r1): 22(ptr) Variable Function 1022(r1): 22(ptr) Variable Function
1025(r2): 22(ptr) Variable Function 1026(r2): 22(ptr) Variable Function
1029(r3): 7(ptr) Variable Function 1030(r3): 7(ptr) Variable Function
1033(r4): 22(ptr) Variable Function 1034(r4): 22(ptr) Variable Function
1037(r5): 22(ptr) Variable Function 1038(r5): 22(ptr) Variable Function
1041(r6): 24(ptr) Variable Function 1042(r6): 24(ptr) Variable Function
1045(r7): 24(ptr) Variable Function 1046(r7): 24(ptr) Variable Function
1049(r8): 24(ptr) Variable Function 1050(r8): 24(ptr) Variable Function
1018: 6(float) Load 26(inF0) 1019: 6(float) Load 26(inF0)
1019: 6(float) Load 27(inF1) 1020: 6(float) Load 27(inF1)
1020: 6(float) FMul 1018 1019 1021: 6(float) FMul 1019 1020
Store 1017(r0) 1020 Store 1018(r0) 1021
1022: 21(fvec3) Load 28(inFV0) 1023: 21(fvec3) Load 28(inFV0)
1023: 6(float) Load 26(inF0) 1024: 6(float) Load 26(inF0)
1024: 21(fvec3) VectorTimesScalar 1022 1023 1025: 21(fvec3) VectorTimesScalar 1023 1024
Store 1021(r1) 1024 Store 1022(r1) 1025
1026: 6(float) Load 26(inF0) 1027: 6(float) Load 26(inF0)
1027: 21(fvec3) Load 28(inFV0) 1028: 21(fvec3) Load 28(inFV0)
1028: 21(fvec3) VectorTimesScalar 1027 1026 1029: 21(fvec3) VectorTimesScalar 1028 1027
Store 1025(r2) 1028 Store 1026(r2) 1029
1030: 21(fvec3) Load 28(inFV0) 1031: 21(fvec3) Load 28(inFV0)
1031: 21(fvec3) Load 29(inFV1) 1032: 21(fvec3) Load 29(inFV1)
1032: 6(float) Dot 1030 1031 1033: 6(float) Dot 1031 1032
Store 1029(r3) 1032 Store 1030(r3) 1033
1034: 23 Load 30(inFM0) 1035: 23 Load 30(inFM0)
1035: 21(fvec3) Load 28(inFV0) 1036: 21(fvec3) Load 28(inFV0)
1036: 21(fvec3) MatrixTimesVector 1034 1035 1037: 21(fvec3) MatrixTimesVector 1035 1036
Store 1033(r4) 1036 Store 1034(r4) 1037
1038: 21(fvec3) Load 28(inFV0) 1039: 21(fvec3) Load 28(inFV0)
1039: 23 Load 30(inFM0) 1040: 23 Load 30(inFM0)
1040: 21(fvec3) VectorTimesMatrix 1038 1039 1041: 21(fvec3) VectorTimesMatrix 1039 1040
Store 1037(r5) 1040 Store 1038(r5) 1041
1042: 23 Load 30(inFM0) 1043: 23 Load 30(inFM0)
1043: 6(float) Load 26(inF0) 1044: 6(float) Load 26(inF0)
1044: 23 MatrixTimesScalar 1042 1043 1045: 23 MatrixTimesScalar 1043 1044
Store 1041(r6) 1044 Store 1042(r6) 1045
1046: 6(float) Load 26(inF0) 1047: 6(float) Load 26(inF0)
1047: 23 Load 30(inFM0) 1048: 23 Load 30(inFM0)
1048: 23 MatrixTimesScalar 1047 1046 1049: 23 MatrixTimesScalar 1048 1047
Store 1045(r7) 1048 Store 1046(r7) 1049
1050: 23 Load 30(inFM0) 1051: 23 Load 30(inFM0)
1051: 23 Load 31(inFM1) 1052: 23 Load 31(inFM1)
1052: 23 MatrixTimesMatrix 1050 1051 1053: 23 MatrixTimesMatrix 1051 1052
Store 1049(r8) 1052 Store 1050(r8) 1053
Return Return
FunctionEnd FunctionEnd
45(TestGenMul(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 38 45(TestGenMul(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 38
@ -2878,50 +2878,50 @@ Shader version: 450
43(inFM0): 37(ptr) FunctionParameter 43(inFM0): 37(ptr) FunctionParameter
44(inFM1): 37(ptr) FunctionParameter 44(inFM1): 37(ptr) FunctionParameter
46: Label 46: Label
1053(r0): 7(ptr) Variable Function 1054(r0): 7(ptr) Variable Function
1057(r1): 35(ptr) Variable Function 1058(r1): 35(ptr) Variable Function
1061(r2): 35(ptr) Variable Function 1062(r2): 35(ptr) Variable Function
1065(r3): 7(ptr) Variable Function 1066(r3): 7(ptr) Variable Function
1069(r4): 35(ptr) Variable Function 1070(r4): 35(ptr) Variable Function
1073(r5): 35(ptr) Variable Function 1074(r5): 35(ptr) Variable Function
1077(r6): 37(ptr) Variable Function 1078(r6): 37(ptr) Variable Function
1081(r7): 37(ptr) Variable Function 1082(r7): 37(ptr) Variable Function
1085(r8): 37(ptr) Variable Function 1086(r8): 37(ptr) Variable Function
1054: 6(float) Load 39(inF0) 1055: 6(float) Load 39(inF0)
1055: 6(float) Load 40(inF1) 1056: 6(float) Load 40(inF1)
1056: 6(float) FMul 1054 1055 1057: 6(float) FMul 1055 1056
Store 1053(r0) 1056 Store 1054(r0) 1057
1058: 34(fvec4) Load 41(inFV0) 1059: 34(fvec4) Load 41(inFV0)
1059: 6(float) Load 39(inF0) 1060: 6(float) Load 39(inF0)
1060: 34(fvec4) VectorTimesScalar 1058 1059 1061: 34(fvec4) VectorTimesScalar 1059 1060
Store 1057(r1) 1060 Store 1058(r1) 1061
1062: 6(float) Load 39(inF0) 1063: 6(float) Load 39(inF0)
1063: 34(fvec4) Load 41(inFV0) 1064: 34(fvec4) Load 41(inFV0)
1064: 34(fvec4) VectorTimesScalar 1063 1062 1065: 34(fvec4) VectorTimesScalar 1064 1063
Store 1061(r2) 1064 Store 1062(r2) 1065
1066: 34(fvec4) Load 41(inFV0) 1067: 34(fvec4) Load 41(inFV0)
1067: 34(fvec4) Load 42(inFV1) 1068: 34(fvec4) Load 42(inFV1)
1068: 6(float) Dot 1066 1067 1069: 6(float) Dot 1067 1068
Store 1065(r3) 1068 Store 1066(r3) 1069
1070: 36 Load 43(inFM0) 1071: 36 Load 43(inFM0)
1071: 34(fvec4) Load 41(inFV0) 1072: 34(fvec4) Load 41(inFV0)
1072: 34(fvec4) MatrixTimesVector 1070 1071 1073: 34(fvec4) MatrixTimesVector 1071 1072
Store 1069(r4) 1072 Store 1070(r4) 1073
1074: 34(fvec4) Load 41(inFV0) 1075: 34(fvec4) Load 41(inFV0)
1075: 36 Load 43(inFM0) 1076: 36 Load 43(inFM0)
1076: 34(fvec4) VectorTimesMatrix 1074 1075 1077: 34(fvec4) VectorTimesMatrix 1075 1076
Store 1073(r5) 1076 Store 1074(r5) 1077
1078: 36 Load 43(inFM0) 1079: 36 Load 43(inFM0)
1079: 6(float) Load 39(inF0) 1080: 6(float) Load 39(inF0)
1080: 36 MatrixTimesScalar 1078 1079 1081: 36 MatrixTimesScalar 1079 1080
Store 1077(r6) 1080 Store 1078(r6) 1081
1082: 6(float) Load 39(inF0) 1083: 6(float) Load 39(inF0)
1083: 36 Load 43(inFM0) 1084: 36 Load 43(inFM0)
1084: 36 MatrixTimesScalar 1083 1082 1085: 36 MatrixTimesScalar 1084 1083
Store 1081(r7) 1084 Store 1082(r7) 1085
1086: 36 Load 43(inFM0) 1087: 36 Load 43(inFM0)
1087: 36 Load 44(inFM1) 1088: 36 Load 44(inFM1)
1088: 36 MatrixTimesMatrix 1086 1087 1089: 36 MatrixTimesMatrix 1087 1088
Store 1085(r8) 1088 Store 1086(r8) 1089
Return Return
FunctionEnd FunctionEnd

View File

@ -0,0 +1,13 @@
float ComputeShaderFunction()
{
AllMemoryBarrier();
AllMemoryBarrierWithGroupSync();
DeviceMemoryBarrier();
DeviceMemoryBarrierWithGroupSync();
GroupMemoryBarrier();
GroupMemoryBarrierWithGroupSync();
return 0.0;
}

View File

@ -0,0 +1,10 @@
void main(float inF1, float2 inF2, float3 inF3, float4 inF4, int2 inI2) : COLOR
{
EvaluateAttributeSnapped(inF1, int2(8,15));
EvaluateAttributeSnapped(inF2, int2(0,1));
EvaluateAttributeSnapped(inF3, int2(3,10));
EvaluateAttributeSnapped(inF4, int2(7,8));
EvaluateAttributeSnapped(inF1, inI2);
}

View File

@ -0,0 +1,34 @@
float PixelShaderFunction(float inF0)
{
f32tof16(inF0);
return 0.0;
}
float1 PixelShaderFunction(float1 inF0)
{
// TODO: ... add when float1 prototypes are generated
return 0.0;
}
float2 PixelShaderFunction(float2 inF0)
{
f32tof16(inF0);
return float2(1,2);
}
float3 PixelShaderFunction(float3 inF0)
{
f32tof16(inF0);
return float3(1,2,3);
}
float4 PixelShaderFunction(float4 inF0)
{
f32tof16(inF0);
return float4(1,2,3,4);
}

View File

@ -0,0 +1,4 @@
void PixelShaderFunction(float n_dot_l, float n_dot_h, float m)
{
float4 r0 = lit(n_dot_l, n_dot_h, m);
}

View File

@ -15,8 +15,8 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
{ {
uint out_u1; uint out_u1;
// AllMemoryBarrier(); // invalid in fragment stage TODO: parser currently crashes on empty arg list AllMemoryBarrier(); // expected error: only valid in compute stage
// AllMemoryBarrierWithGroupSync(); // invalid in fragment stage TODO: parser currently crashes on empty arg list AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
asdouble(inF0, inF1); // expected error: only integer inputs asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(3.0); // expected error: only valid on integers CheckAccessFullyMapped(3.0); // expected error: only valid on integers
CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
@ -24,8 +24,8 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
countbits(inF0); // expected error: only integer inputs countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
// DeviceMemoryBarrier(); // TODO: expected error: only valid in pixel & compute stages DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages
// DeviceMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
ddx(inF0); // expected error: only valid in pixel stage ddx(inF0); // expected error: only valid in pixel stage
ddx_coarse(inF0); // expected error: only valid in pixel stage ddx_coarse(inF0); // expected error: only valid in pixel stage
ddx_fine(inF0); // expected error: only valid in pixel stage ddx_fine(inF0); // expected error: only valid in pixel stage
@ -55,8 +55,8 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
// GroupMemoryBarrier(); // TODO: expected error: only valid in compute stage GroupMemoryBarrier(); // expected error: only valid in compute stage
// GroupMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
length(inF0); // expect error: invalid on scalars length(inF0); // expect error: invalid on scalars
msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
normalize(inF0); // expect error: invalid on scalars normalize(inF0); // expect error: invalid on scalars

View File

@ -515,7 +515,14 @@ enum TOperator {
EOpInterlockedMin, // ... EOpInterlockedMin, // ...
EOpInterlockedOr, // ... EOpInterlockedOr, // ...
EOpInterlockedXor, // ... EOpInterlockedXor, // ...
EOpAllMemoryBarrierWithGroupSync, // memory barriers without non-hlsl AST equivalents
EOpGroupMemoryBarrierWithGroupSync, // ...
EOpWorkgroupMemoryBarrier, // ...
EOpWorkgroupMemoryBarrierWithGroupSync, // ...
EOpEvaluateAttributeSnapped, // InterpolateAtOffset with int position on 16x16 grid
EOpF32tof16, // HLSL conversion: half of a PackHalf2x16
EOpF16tof32, // HLSL conversion: half of an UnpackHalf2x16
EOpLit, // HLSL lighting coefficient vector
}; };
class TIntermTraverser; class TIntermTraverser;

View File

@ -543,6 +543,11 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpSinCos: out.debug << "sincos"; break; case EOpSinCos: out.debug << "sincos"; break;
case EOpGenMul: out.debug << "mul"; break; case EOpGenMul: out.debug << "mul"; break;
case EOpAllMemoryBarrierWithGroupSync: out.debug << "AllMemoryBarrierWithGroupSync"; break;
case EOpGroupMemoryBarrierWithGroupSync: out.debug << "GroupMemoryBarrierWithGroupSync"; break;
case EOpWorkgroupMemoryBarrier: out.debug << "WorkgroupMemoryBarrier"; break;
case EOpWorkgroupMemoryBarrierWithGroupSync: out.debug << "WorkgroupMemoryBarrierWithGroupSync"; break;
default: out.debug.message(EPrefixError, "Bad aggregation op"); default: out.debug.message(EPrefixError, "Bad aggregation op");
} }

View File

@ -81,8 +81,12 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.float4.frag", "PixelShaderFunction"}, {"hlsl.float4.frag", "PixelShaderFunction"},
{"hlsl.forLoop.frag", "PixelShaderFunction"}, {"hlsl.forLoop.frag", "PixelShaderFunction"},
{"hlsl.if.frag", "PixelShaderFunction"}, {"hlsl.if.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.barriers.comp", "ComputeShaderFunction"},
{"hlsl.intrinsics.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.comp", "ComputeShaderFunction"},
{"hlsl.intrinsics.evalfns.frag", "main"},
{"hlsl.intrinsics.f1632.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.lit.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
{"hlsl.intrinsics.negative.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.negative.vert", "VertexShaderFunction"}, {"hlsl.intrinsics.negative.vert", "VertexShaderFunction"},

View File

@ -967,6 +967,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
dst->getSequence().push_back(handleBinaryMath(loc, "mul", EOpMul, src0y, src1y)); dst->getSequence().push_back(handleBinaryMath(loc, "mul", EOpMul, src0y, src1y));
dst->getSequence().push_back(src0z); dst->getSequence().push_back(src0z);
dst->getSequence().push_back(src1w); dst->getSequence().push_back(src1w);
dst->setType(TType(EbtFloat, EvqTemporary, 4));
dst->setLoc(loc); dst->setLoc(loc);
node = dst; node = dst;
@ -1028,6 +1029,90 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
break; break;
} }
case EOpEvaluateAttributeSnapped:
{
// SPIR-V InterpolateAtOffset uses float vec2 offset in pixels
// HLSL uses int2 offset on a 16x16 grid in [-8..7] on x & y:
// iU = (iU<<28)>>28
// fU = ((float)iU)/16
// Targets might handle this natively, in which case they can disable
// decompositions.
TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // value
TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // offset
TIntermTyped* i28 = intermediate.addConstantUnion(28, loc, true);
TIntermTyped* iU = handleBinaryMath(loc, ">>", EOpRightShift,
handleBinaryMath(loc, "<<", EOpLeftShift, arg1, i28),
i28);
TIntermTyped* recip16 = intermediate.addConstantUnion((1.0/16.0), EbtFloat, loc, true);
TIntermTyped* floatOffset = handleBinaryMath(loc, "mul", EOpMul,
intermediate.addConversion(EOpConstructFloat,
TType(EbtFloat, EvqTemporary, 2), iU),
recip16);
TIntermAggregate* interp = new TIntermAggregate(EOpInterpolateAtOffset);
interp->getSequence().push_back(arg0);
interp->getSequence().push_back(floatOffset);
interp->setLoc(loc);
interp->setType(arg0->getType());
interp->getWritableType().getQualifier().makeTemporary();
node = interp;
break;
}
case EOpLit:
{
TIntermTyped* n_dot_l = argAggregate->getSequence()[0]->getAsTyped();
TIntermTyped* n_dot_h = argAggregate->getSequence()[1]->getAsTyped();
TIntermTyped* m = argAggregate->getSequence()[2]->getAsTyped();
TIntermAggregate* dst = new TIntermAggregate(EOpConstructVec4);
// Ambient
dst->getSequence().push_back(intermediate.addConstantUnion(1.0, EbtFloat, loc, true));
// Diffuse:
TIntermTyped* zero = intermediate.addConstantUnion(0.0, EbtFloat, loc, true);
TIntermAggregate* diffuse = new TIntermAggregate(EOpMax);
diffuse->getSequence().push_back(n_dot_l);
diffuse->getSequence().push_back(zero);
diffuse->setLoc(loc);
diffuse->setType(TType(EbtFloat));
dst->getSequence().push_back(diffuse);
// Specular:
TIntermAggregate* min_ndot = new TIntermAggregate(EOpMin);
min_ndot->getSequence().push_back(n_dot_l);
min_ndot->getSequence().push_back(n_dot_h);
min_ndot->setLoc(loc);
min_ndot->setType(TType(EbtFloat));
TIntermTyped* compare = handleBinaryMath(loc, "<", EOpLessThan, min_ndot, zero);
TIntermTyped* n_dot_h_m = handleBinaryMath(loc, "mul", EOpMul, n_dot_h, m); // n_dot_h * m
dst->getSequence().push_back(intermediate.addSelection(compare, zero, n_dot_h_m, loc));
// One:
dst->getSequence().push_back(intermediate.addConstantUnion(1.0, EbtFloat, loc, true));
dst->setLoc(loc);
dst->setType(TType(EbtFloat, EvqTemporary, 4));
node = dst;
break;
}
case EOpF16tof32:
case EOpF32tof16:
{
// Temporary until decomposition is available.
error(loc, "unimplemented intrinsic: handle natively", "f32tof16", "");
break;
}
default: default:
break; // most pass through unchanged break; // most pass through unchanged
} }

View File

@ -283,7 +283,7 @@ void TBuiltInParseablesHlsl::initialize(int version, EProfile profile, const Spv
// { "errorf", "-", "-", "", "", EShLangAll }, TODO: varargs // { "errorf", "-", "-", "", "", EShLangAll }, TODO: varargs
{ "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangFragmentMask }, { "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
{ "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangFragmentMask }, { "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangFragmentMask },
{ "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,F", EShLangFragmentMask }, { "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangFragmentMask },
{ "exp", nullptr, nullptr, "SVM", "F", EShLangAll }, { "exp", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "exp2", nullptr, nullptr, "SVM", "F", EShLangAll }, { "exp2", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "f16tof32", nullptr, "F", "SV", "U", EShLangAll }, { "f16tof32", nullptr, "F", "SV", "U", EShLangAll },
@ -519,8 +519,8 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
symbolTable.relateToOperator("abs", EOpAbs); symbolTable.relateToOperator("abs", EOpAbs);
symbolTable.relateToOperator("acos", EOpAcos); symbolTable.relateToOperator("acos", EOpAcos);
symbolTable.relateToOperator("all", EOpAll); symbolTable.relateToOperator("all", EOpAll);
// symbolTable.relateToOperator("AllMemoryBarrier"); symbolTable.relateToOperator("AllMemoryBarrier", EOpMemoryBarrier);
// symbolTable.relateToOperator("AllMemoryBarrierWithGroupSync"); symbolTable.relateToOperator("AllMemoryBarrierWithGroupSync", EOpAllMemoryBarrierWithGroupSync);
symbolTable.relateToOperator("any", EOpAny); symbolTable.relateToOperator("any", EOpAny);
symbolTable.relateToOperator("asdouble", EOpUint64BitsToDouble); symbolTable.relateToOperator("asdouble", EOpUint64BitsToDouble);
symbolTable.relateToOperator("asfloat", EOpIntBitsToFloat); symbolTable.relateToOperator("asfloat", EOpIntBitsToFloat);
@ -546,19 +546,19 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
symbolTable.relateToOperator("ddy_fine", EOpDPdyFine); symbolTable.relateToOperator("ddy_fine", EOpDPdyFine);
symbolTable.relateToOperator("degrees", EOpDegrees); symbolTable.relateToOperator("degrees", EOpDegrees);
symbolTable.relateToOperator("determinant", EOpDeterminant); symbolTable.relateToOperator("determinant", EOpDeterminant);
// symbolTable.relateToOperator("DeviceMemoryBarrier"); symbolTable.relateToOperator("DeviceMemoryBarrier", EOpGroupMemoryBarrier); // == ScopeDevice+CrossWorkGroup
// symbolTable.relateToOperator("DeviceMemoryBarrierWithGroupSync"); symbolTable.relateToOperator("DeviceMemoryBarrierWithGroupSync", EOpGroupMemoryBarrierWithGroupSync); // ...
symbolTable.relateToOperator("distance", EOpDistance); symbolTable.relateToOperator("distance", EOpDistance);
symbolTable.relateToOperator("dot", EOpDot); symbolTable.relateToOperator("dot", EOpDot);
symbolTable.relateToOperator("dst", EOpDst); symbolTable.relateToOperator("dst", EOpDst);
// symbolTable.relateToOperator("errorf"); // symbolTable.relateToOperator("errorf", EOpErrorf);
symbolTable.relateToOperator("EvaluateAttributeAtCentroid", EOpInterpolateAtCentroid); symbolTable.relateToOperator("EvaluateAttributeAtCentroid", EOpInterpolateAtCentroid);
symbolTable.relateToOperator("EvaluateAttributeAtSample", EOpInterpolateAtSample); symbolTable.relateToOperator("EvaluateAttributeAtSample", EOpInterpolateAtSample);
// symbolTable.relateToOperator("EvaluateAttributeSnapped"); // TODO: hsnflr positions. new op? symbolTable.relateToOperator("EvaluateAttributeSnapped", EOpEvaluateAttributeSnapped);
symbolTable.relateToOperator("exp", EOpExp); symbolTable.relateToOperator("exp", EOpExp);
symbolTable.relateToOperator("exp2", EOpExp2); symbolTable.relateToOperator("exp2", EOpExp2);
// symbolTable.relateToOperator("f16tof32"); symbolTable.relateToOperator("f16tof32", EOpF16tof32);
// symbolTable.relateToOperator("f32tof16"); symbolTable.relateToOperator("f32tof16", EOpF32tof16);
symbolTable.relateToOperator("faceforward", EOpFaceForward); symbolTable.relateToOperator("faceforward", EOpFaceForward);
symbolTable.relateToOperator("firstbithigh", EOpFindMSB); symbolTable.relateToOperator("firstbithigh", EOpFindMSB);
symbolTable.relateToOperator("firstbitlow", EOpFindLSB); symbolTable.relateToOperator("firstbitlow", EOpFindLSB);
@ -570,8 +570,8 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
symbolTable.relateToOperator("fwidth", EOpFwidth); symbolTable.relateToOperator("fwidth", EOpFwidth);
// symbolTable.relateToOperator("GetRenderTargetSampleCount"); // symbolTable.relateToOperator("GetRenderTargetSampleCount");
// symbolTable.relateToOperator("GetRenderTargetSamplePosition"); // symbolTable.relateToOperator("GetRenderTargetSamplePosition");
// symbolTable.relateToOperator("GroupMemoryBarrier"); symbolTable.relateToOperator("GroupMemoryBarrier", EOpWorkgroupMemoryBarrier);
// symbolTable.relateToOperator("GroupMemoryBarrierWithGroupSync"); symbolTable.relateToOperator("GroupMemoryBarrierWithGroupSync", EOpWorkgroupMemoryBarrierWithGroupSync);
symbolTable.relateToOperator("InterlockedAdd", EOpInterlockedAdd); symbolTable.relateToOperator("InterlockedAdd", EOpInterlockedAdd);
symbolTable.relateToOperator("InterlockedAnd", EOpInterlockedAnd); symbolTable.relateToOperator("InterlockedAnd", EOpInterlockedAnd);
symbolTable.relateToOperator("InterlockedCompareExchange", EOpInterlockedCompareExchange); symbolTable.relateToOperator("InterlockedCompareExchange", EOpInterlockedCompareExchange);
@ -586,7 +586,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
symbolTable.relateToOperator("isnan", EOpIsNan); symbolTable.relateToOperator("isnan", EOpIsNan);
symbolTable.relateToOperator("ldexp", EOpLdexp); symbolTable.relateToOperator("ldexp", EOpLdexp);
symbolTable.relateToOperator("length", EOpLength); symbolTable.relateToOperator("length", EOpLength);
// symbolTable.relateToOperator("lit"); symbolTable.relateToOperator("lit", EOpLit);
symbolTable.relateToOperator("log", EOpLog); symbolTable.relateToOperator("log", EOpLog);
symbolTable.relateToOperator("log10", EOpLog10); symbolTable.relateToOperator("log10", EOpLog10);
symbolTable.relateToOperator("log2", EOpLog2); symbolTable.relateToOperator("log2", EOpLog2);
@ -599,7 +599,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, con
// symbolTable.relateToOperator("noise", EOpNoise); // TODO: check return type // symbolTable.relateToOperator("noise", EOpNoise); // TODO: check return type
symbolTable.relateToOperator("normalize", EOpNormalize); symbolTable.relateToOperator("normalize", EOpNormalize);
symbolTable.relateToOperator("pow", EOpPow); symbolTable.relateToOperator("pow", EOpPow);
// symbolTable.relateToOperator("printf"); // symbolTable.relateToOperator("printf", EOpPrintf);
// symbolTable.relateToOperator("Process2DQuadTessFactorsAvg"); // symbolTable.relateToOperator("Process2DQuadTessFactorsAvg");
// symbolTable.relateToOperator("Process2DQuadTessFactorsMax"); // symbolTable.relateToOperator("Process2DQuadTessFactorsMax");
// symbolTable.relateToOperator("Process2DQuadTessFactorsMin"); // symbolTable.relateToOperator("Process2DQuadTessFactorsMin");