vkd3d-shader/hlsl: Emit a hlsl_fixme() for HLSL_IR_CALL instructions.

Avoid outputting invalid shaders.
This commit is contained in:
Zebediah Figura 2023-01-30 13:29:17 -06:00 committed by Alexandre Julliard
parent f9e7cb6345
commit aa3badbd9d
Notes: Alexandre Julliard 2023-01-31 22:50:33 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Francisco Casas (@fcasas)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/65
8 changed files with 39 additions and 31 deletions

View File

@ -824,6 +824,10 @@ static void write_sm1_instructions(struct hlsl_ctx *ctx, struct vkd3d_bytecode_b
switch (instr->type) switch (instr->type)
{ {
case HLSL_IR_CALL:
hlsl_fixme(ctx, &instr->loc, "Inline call instructions.\n");
break;
case HLSL_IR_CONSTANT: case HLSL_IR_CONSTANT:
write_sm1_constant(ctx, buffer, instr); write_sm1_constant(ctx, buffer, instr);
break; break;

View File

@ -2360,6 +2360,10 @@ static void write_sm4_block(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *
switch (instr->type) switch (instr->type)
{ {
case HLSL_IR_CALL:
hlsl_fixme(ctx, &instr->loc, "Inline call instructions.\n");
break;
case HLSL_IR_CONSTANT: case HLSL_IR_CONSTANT:
write_sm4_constant(ctx, buffer, hlsl_ir_constant(instr)); write_sm4_constant(ctx, buffer, hlsl_ir_constant(instr));
break; break;

View File

@ -118,7 +118,7 @@ void func()
{ {
} }
[pixel shader] [pixel shader todo]
float func(in float a, out float b, inout float c) float func(in float a, out float b, inout float c)
{ {
@ -139,10 +139,10 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.5, 0.6, 0.7, 0) todo probe all rgba (0.5, 0.6, 0.7, 0)
[pixel shader] [pixel shader todo]
void func(in float a, inout float2 b) void func(in float a, inout float2 b)
{ {
@ -160,7 +160,7 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.6, 0.1, 0.5, 0) todo probe all rgba (0.6, 0.1, 0.5, 0)
% Recursion is forbidden. % Recursion is forbidden.

View File

@ -153,7 +153,7 @@ static int x = 1;
[numthreads((x = 2), 1, 1)] [numthreads((x = 2), 1, 1)]
void main() {} void main() {}
[compute shader] [compute shader todo]
static int x = 1; static int x = 1;

View File

@ -38,7 +38,7 @@ float4x1 main() : sv_target
draw quad draw quad
probe all rgba (0.4, 0.3, 0.2, 0.1) probe all rgba (0.4, 0.3, 0.2, 0.1)
[pixel shader] [pixel shader todo]
float3 func() float3 func()
{ {
return float3x1(0.4, 0.3, 0.2); return float3x1(0.4, 0.3, 0.2);
@ -50,10 +50,10 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader] [pixel shader todo]
float3 func() float3 func()
{ {
return float1x3(0.4, 0.3, 0.2); return float1x3(0.4, 0.3, 0.2);
@ -65,10 +65,10 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader] [pixel shader todo]
float1x3 func() float1x3 func()
{ {
return float3(0.4, 0.3, 0.2); return float3(0.4, 0.3, 0.2);
@ -80,10 +80,10 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader] [pixel shader todo]
float3x1 func() float3x1 func()
{ {
return float3(0.4, 0.3, 0.2); return float3(0.4, 0.3, 0.2);
@ -95,7 +95,7 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader fail] [pixel shader fail]
@ -120,7 +120,7 @@ float4 main() : sv_target
return float4(func(), 0.0); return float4(func(), 0.0);
} }
[pixel shader] [pixel shader todo]
float3 func() float3 func()
{ {
return float4(0.4, 0.3, 0.2, 0.1); return float4(0.4, 0.3, 0.2, 0.1);
@ -132,10 +132,10 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader] [pixel shader todo]
float3 func() float3 func()
{ {
return float4x1(0.4, 0.3, 0.2, 0.1); return float4x1(0.4, 0.3, 0.2, 0.1);
@ -147,10 +147,10 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader] [pixel shader todo]
float3 func() float3 func()
{ {
return float1x4(0.4, 0.3, 0.2, 0.1); return float1x4(0.4, 0.3, 0.2, 0.1);
@ -162,7 +162,7 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader fail todo] [pixel shader fail todo]
@ -176,7 +176,7 @@ float4 main() : sv_target
return float4(func(), 0.0); return float4(func(), 0.0);
} }
[pixel shader] [pixel shader todo]
float3x1 func() float3x1 func()
{ {
return float4x1(0.4, 0.3, 0.2, 0.1); return float4x1(0.4, 0.3, 0.2, 0.1);
@ -188,7 +188,7 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader fail] [pixel shader fail]
@ -202,7 +202,7 @@ float4 main() : sv_target
return float4(func(), 0.0); return float4(func(), 0.0);
} }
[pixel shader] [pixel shader todo]
float1x3 func() float1x3 func()
{ {
return float4(0.4, 0.3, 0.2, 0.1); return float4(0.4, 0.3, 0.2, 0.1);
@ -214,7 +214,7 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader fail] [pixel shader fail]
@ -228,7 +228,7 @@ float4 main() : sv_target
return float4(func(), 0.0); return float4(func(), 0.0);
} }
[pixel shader] [pixel shader todo]
float1x3 func() float1x3 func()
{ {
return float1x4(0.4, 0.3, 0.2, 0.1); return float1x4(0.4, 0.3, 0.2, 0.1);
@ -240,5 +240,5 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0) todo probe all rgba (0.4, 0.3, 0.2, 0.0)

View File

@ -1,4 +1,4 @@
[pixel shader] [pixel shader todo]
float myfunc() float myfunc()
{ {
return 0.6; return 0.6;
@ -12,7 +12,7 @@ float4 main() : sv_target
} }
[test] [test]
draw quad todo draw quad
todo probe all rgba (0.8, 0.0, 0.0, 0.0) todo probe all rgba (0.8, 0.0, 0.0, 0.0)

View File

@ -1,4 +1,4 @@
[pixel shader] [pixel shader todo]
void sub2(in uniform float4 i, out float4 o) void sub2(in uniform float4 i, out float4 o)
{ {
o = i; o = i;
@ -17,5 +17,5 @@ void main(in uniform float4 a, uniform float4 b, out float4 o : sv_target)
[test] [test]
uniform 0 float4 0.1 0.0 0.0 0.0 uniform 0 float4 0.1 0.0 0.0 0.0
uniform 4 float4 0.2 0.0 0.0 0.0 uniform 4 float4 0.2 0.0 0.0 0.0
draw quad todo draw quad
todo probe all rgba (0.1, 0.2, 0.3, 0.4) todo probe all rgba (0.1, 0.2, 0.3, 0.4)

View File

@ -7,7 +7,7 @@ size (1, 1)
0.1 0.2 0.3 0.4 0.1 0.2 0.3 0.4
[compute shader] [compute shader todo]
RWTexture2D<float4> u; RWTexture2D<float4> u;
@ -23,5 +23,5 @@ void main()
} }
[test] [test]
dispatch 1 1 1 todo dispatch 1 1 1
todo probe uav 0 (0, 0) rgba (0.1, 0.3, 0.3, 0.5) todo probe uav 0 (0, 0) rgba (0.1, 0.3, 0.3, 0.5)