Module: vkd3d
Branch: master
Commit: aa3badbd9d17225bb84ca5f03aa87f0eb0954b64
URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/aa3badbd9d17225bb84ca5f03aa87…
Author: Zebediah Figura <zfigura(a)codeweavers.com>
Date: Mon Jan 30 13:29:17 2023 -0600
vkd3d-shader/hlsl: Emit a hlsl_fixme() for HLSL_IR_CALL instructions.
Avoid outputting invalid shaders.
---
libs/vkd3d-shader/hlsl_sm1.c | 4 +++
libs/vkd3d-shader/hlsl_sm4.c | 4 +++
tests/hlsl-function.shader_test | 8 ++---
tests/hlsl-numthreads.shader_test | 2 +-
tests/hlsl-return-implicit-conversion.shader_test | 40 +++++++++++------------
tests/hlsl-static-initializer.shader_test | 4 +--
tests/hlsl-storage-qualifiers.shader_test | 4 +--
tests/uav-out-param.shader_test | 4 +--
8 files changed, 39 insertions(+), 31 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl_sm1.c b/libs/vkd3d-shader/hlsl_sm1.c
index a66d4028..facf81b8 100644
--- a/libs/vkd3d-shader/hlsl_sm1.c
+++ b/libs/vkd3d-shader/hlsl_sm1.c
@@ -824,6 +824,10 @@ static void write_sm1_instructions(struct hlsl_ctx *ctx, struct
vkd3d_bytecode_b
switch (instr->type)
{
+ case HLSL_IR_CALL:
+ hlsl_fixme(ctx, &instr->loc, "Inline call
instructions.\n");
+ break;
+
case HLSL_IR_CONSTANT:
write_sm1_constant(ctx, buffer, instr);
break;
diff --git a/libs/vkd3d-shader/hlsl_sm4.c b/libs/vkd3d-shader/hlsl_sm4.c
index af59b7c7..fb14889d 100644
--- a/libs/vkd3d-shader/hlsl_sm4.c
+++ b/libs/vkd3d-shader/hlsl_sm4.c
@@ -2360,6 +2360,10 @@ static void write_sm4_block(struct hlsl_ctx *ctx, struct
vkd3d_bytecode_buffer *
switch (instr->type)
{
+ case HLSL_IR_CALL:
+ hlsl_fixme(ctx, &instr->loc, "Inline call
instructions.\n");
+ break;
+
case HLSL_IR_CONSTANT:
write_sm4_constant(ctx, buffer, hlsl_ir_constant(instr));
break;
diff --git a/tests/hlsl-function.shader_test b/tests/hlsl-function.shader_test
index eee6f2d1..e3ed5819 100644
--- a/tests/hlsl-function.shader_test
+++ b/tests/hlsl-function.shader_test
@@ -118,7 +118,7 @@ void func()
{
}
-[pixel shader]
+[pixel shader todo]
float func(in float a, out float b, inout float c)
{
@@ -139,10 +139,10 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.5, 0.6, 0.7, 0)
-[pixel shader]
+[pixel shader todo]
void func(in float a, inout float2 b)
{
@@ -160,7 +160,7 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.6, 0.1, 0.5, 0)
% Recursion is forbidden.
diff --git a/tests/hlsl-numthreads.shader_test b/tests/hlsl-numthreads.shader_test
index 404d7d76..0d75a924 100644
--- a/tests/hlsl-numthreads.shader_test
+++ b/tests/hlsl-numthreads.shader_test
@@ -153,7 +153,7 @@ static int x = 1;
[numthreads((x = 2), 1, 1)]
void main() {}
-[compute shader]
+[compute shader todo]
static int x = 1;
diff --git a/tests/hlsl-return-implicit-conversion.shader_test
b/tests/hlsl-return-implicit-conversion.shader_test
index e88a4109..a58d015d 100644
--- a/tests/hlsl-return-implicit-conversion.shader_test
+++ b/tests/hlsl-return-implicit-conversion.shader_test
@@ -38,7 +38,7 @@ float4x1 main() : sv_target
draw quad
probe all rgba (0.4, 0.3, 0.2, 0.1)
-[pixel shader]
+[pixel shader todo]
float3 func()
{
return float3x1(0.4, 0.3, 0.2);
@@ -50,10 +50,10 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
-[pixel shader]
+[pixel shader todo]
float3 func()
{
return float1x3(0.4, 0.3, 0.2);
@@ -65,10 +65,10 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
-[pixel shader]
+[pixel shader todo]
float1x3 func()
{
return float3(0.4, 0.3, 0.2);
@@ -80,10 +80,10 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
-[pixel shader]
+[pixel shader todo]
float3x1 func()
{
return float3(0.4, 0.3, 0.2);
@@ -95,7 +95,7 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader fail]
@@ -120,7 +120,7 @@ float4 main() : sv_target
return float4(func(), 0.0);
}
-[pixel shader]
+[pixel shader todo]
float3 func()
{
return float4(0.4, 0.3, 0.2, 0.1);
@@ -132,10 +132,10 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
-[pixel shader]
+[pixel shader todo]
float3 func()
{
return float4x1(0.4, 0.3, 0.2, 0.1);
@@ -147,10 +147,10 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
-[pixel shader]
+[pixel shader todo]
float3 func()
{
return float1x4(0.4, 0.3, 0.2, 0.1);
@@ -162,7 +162,7 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader fail todo]
@@ -176,7 +176,7 @@ float4 main() : sv_target
return float4(func(), 0.0);
}
-[pixel shader]
+[pixel shader todo]
float3x1 func()
{
return float4x1(0.4, 0.3, 0.2, 0.1);
@@ -188,7 +188,7 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader fail]
@@ -202,7 +202,7 @@ float4 main() : sv_target
return float4(func(), 0.0);
}
-[pixel shader]
+[pixel shader todo]
float1x3 func()
{
return float4(0.4, 0.3, 0.2, 0.1);
@@ -214,7 +214,7 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
[pixel shader fail]
@@ -228,7 +228,7 @@ float4 main() : sv_target
return float4(func(), 0.0);
}
-[pixel shader]
+[pixel shader todo]
float1x3 func()
{
return float1x4(0.4, 0.3, 0.2, 0.1);
@@ -240,5 +240,5 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.4, 0.3, 0.2, 0.0)
diff --git a/tests/hlsl-static-initializer.shader_test
b/tests/hlsl-static-initializer.shader_test
index 6dc874f9..286145c4 100644
--- a/tests/hlsl-static-initializer.shader_test
+++ b/tests/hlsl-static-initializer.shader_test
@@ -1,4 +1,4 @@
-[pixel shader]
+[pixel shader todo]
float myfunc()
{
return 0.6;
@@ -12,7 +12,7 @@ float4 main() : sv_target
}
[test]
-draw quad
+todo draw quad
todo probe all rgba (0.8, 0.0, 0.0, 0.0)
diff --git a/tests/hlsl-storage-qualifiers.shader_test
b/tests/hlsl-storage-qualifiers.shader_test
index 59066c5f..965101e8 100644
--- a/tests/hlsl-storage-qualifiers.shader_test
+++ b/tests/hlsl-storage-qualifiers.shader_test
@@ -1,4 +1,4 @@
-[pixel shader]
+[pixel shader todo]
void sub2(in uniform float4 i, out float4 o)
{
o = i;
@@ -17,5 +17,5 @@ void main(in uniform float4 a, uniform float4 b, out float4 o :
sv_target)
[test]
uniform 0 float4 0.1 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)
diff --git a/tests/uav-out-param.shader_test b/tests/uav-out-param.shader_test
index 054a2da6..646d14f6 100644
--- a/tests/uav-out-param.shader_test
+++ b/tests/uav-out-param.shader_test
@@ -7,7 +7,7 @@ size (1, 1)
0.1 0.2 0.3 0.4
-[compute shader]
+[compute shader todo]
RWTexture2D<float4> u;
@@ -23,5 +23,5 @@ void main()
}
[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)