tests: Test explicit casts between types that are component-wise compatible.

This commit is contained in:
Francisco Casas 2022-10-12 17:01:26 -03:00 committed by Alexandre Julliard
parent 653b109d8f
commit 09d7442cb1
Notes: Alexandre Julliard 2022-10-18 00:13:00 +02:00
Approved-by: Zebediah Figura (@zfigura)
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/29
2 changed files with 186 additions and 0 deletions

View File

@ -59,6 +59,7 @@ vkd3d_shader_tests = \
tests/bitwise.shader_test \
tests/cast-broadcast.shader_test \
tests/cast-componentwise-equal.shader_test \
tests/cast-componentwise-compatible.shader_test \
tests/cast-to-float.shader_test \
tests/cast-to-half.shader_test \
tests/cast-to-int.shader_test \

View File

@ -0,0 +1,185 @@
[pixel shader]
struct apple
{
float3 aa;
int bb;
};
float4 main() : sv_target
{
float f[4] = {1, 2, 3, 4};
struct apple a;
a = (struct apple) f;
return a.aa.xyzx;
}
[test]
todo draw quad
todo probe all rgba (1.0, 2.0, 3.0, 1.0)
[pixel shader]
struct apple
{
float3 aa;
int bb;
float cc;
};
float4 main() : sv_target
{
struct apple a = {5, 6, 7, 8.8, 9.0};
float f[4];
f = (float[4]) a;
return float4(f);
}
[test]
todo draw quad
todo probe all rgba (5.0, 6.0, 7.0, 8.0)
[pixel shader]
float4 main() : sv_target
{
float f[6] = {1, 2, 3, 4, 5, 6};
int i[4];
i = (int[4]) f;
return float4(i[0], i[1], i[2], i[3]);
}
[test]
todo draw quad
todo probe all rgba (1.0, 2.0, 3.0, 4.0)
[pixel shader]
Texture2D tex;
struct apple
{
int2 aa;
Texture2D bb;
float cc;
};
struct banana
{
float aa[2];
Texture2D bb;
int cc;
};
float4 main() : sv_target
{
struct apple a = {1, 2, tex, 7.2};
struct banana b;
b = (struct banana) a;
return b.cc;
}
[test]
todo draw quad
todo probe all rgba (7.0, 7.0, 7.0, 7.0)
[pixel shader]
Texture2D tex;
struct apple
{
int2 aa;
Texture2D bb;
float cc;
float4 dd;
Texture2D ee;
};
struct banana
{
float aa[2];
Texture2D bb;
int cc;
};
float4 main() : sv_target
{
struct apple a = {1, 2, tex, 3, 4, 5, 6, 7, tex};
struct banana b;
b = (struct banana) a;
return b.cc;
}
[test]
todo draw quad
todo probe all rgba (3.0, 3.0, 3.0, 3.0)
[pixel shader fail]
struct apple
{
int2 aa;
float bb;
};
struct banana
{
int2 aa;
float bb;
float cc;
};
float4 main() : sv_target
{
struct apple a = {1, 2, 3};
struct banana b;
b = (struct banana) a;
return b.bb;
}
[pixel shader]
float4 main() : sv_target
{
float4 v = float4(10.1, 20.2, 30.3, 40.4);
int i[3];
i = (int[3]) v;
return float4(i[0], i[1], i[2], i[2]);
}
[test]
todo draw quad
todo probe all rgba (10.0, 20.0, 30.0, 30.0)
[pixel shader]
struct apple
{
int aa;
float bb[2];
};
float4 main() : sv_target
{
float4 f = {10.4, 11.4, 12.4, 13.4};
struct apple a;
a = (struct apple) f;
return float4(a.aa, a.aa, a.bb[0], a.bb[1]);
}
[test]
todo draw quad
todo probe all rgba (10.0, 10.0, 11.4, 12.4)