vkd3d-shader/hlsl: Generate IR for user-defined function calls.

This commit is contained in:
Zebediah Figura
2021-09-09 21:06:38 -05:00
committed by Alexandre Julliard
parent 30550c0831
commit b29d3489de
Notes: Alexandre Julliard 2023-01-13 22:23:38 +01:00
Approved-by: Francisco Casas (@fcasas)
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/47
9 changed files with 220 additions and 79 deletions

View File

@@ -9,7 +9,7 @@ float4 main() : sv_target
% It's legal to call an undefined function in unused code, though.
[pixel shader todo]
[pixel shader]
float4 func();
@@ -23,7 +23,7 @@ float4 main() : sv_target
return 0;
}
[pixel shader fail todo]
[pixel shader fail]
void func(inout float o)
{
@@ -37,7 +37,7 @@ float4 main() : sv_target
return 0;
}
[pixel shader fail todo]
[pixel shader fail]
void func(inout float2 o)
{
@@ -51,7 +51,7 @@ float4 main() : sv_target
return 0;
}
[pixel shader fail todo]
[pixel shader fail]
void func(out float o)
{
@@ -65,7 +65,7 @@ float4 main() : sv_target
return x;
}
[pixel shader fail todo]
[pixel shader fail]
void func(inout float o)
{
@@ -78,7 +78,7 @@ float4 main() : sv_target
return x;
}
[pixel shader fail todo]
[pixel shader fail]
void func()
{
@@ -118,7 +118,7 @@ void func()
{
}
[pixel shader todo]
[pixel shader]
float func(in float a, out float b, inout float c)
{
@@ -139,10 +139,10 @@ float4 main() : sv_target
}
[test]
todo draw quad
probe all rgba (0.5, 0.6, 0.7, 0)
draw quad
todo probe all rgba (0.5, 0.6, 0.7, 0)
[pixel shader todo]
[pixel shader]
void func(in float a, inout float2 b)
{
@@ -160,5 +160,5 @@ float4 main() : sv_target
}
[test]
todo draw quad
probe all rgba (0.6, 0.1, 0.5, 0)
draw quad
todo probe all rgba (0.6, 0.1, 0.5, 0)

View File

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

View File

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

View File

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

View File

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