mirror of
				https://gitlab.winehq.org/wine/vkd3d.git
				synced 2025-09-12 18:50:22 -07:00 
			
		
		
		
	The location of dxcompiler should be set during configuration with 'DXCOMPILER_LIBS=-L/path/to/dxcompiler', and then at runtime with LD_LIBRARY_PATH, WINEPATH or PATH as applicable. A new 'fail(sm<6)' decoration is needed on many shader declarations because dxcompiler succeeds on many shaders which fail with fxc. The opposite case is less common and is flagged with 'fail(sm>=6)'. A few tests cause dxcompiler to crash or hang, so these are avoided using [require], which now skips tests until reset instead of exiting. Also, 'todo(sm<6)' and 'todo(sm>=6)' are used to separate checking of results.
		
			
				
	
	
		
			585 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			585 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| [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]
 | |
| draw quad
 | |
| 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]
 | |
| draw quad
 | |
| 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]
 | |
| draw quad
 | |
| 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]
 | |
| draw quad
 | |
| 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]
 | |
| draw quad
 | |
| 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]
 | |
| draw quad
 | |
| 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]
 | |
| draw quad
 | |
| probe all rgba (10.0, 10.0, 11.4, 12.4)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float f[5] = {11, 12, 13, 14, 15};
 | |
|     int4 i;
 | |
| 
 | |
|     i = (int4) f;
 | |
|     return i;
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (11.0, 12.0, 13.0, 14.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| struct apple
 | |
| {
 | |
|     int2 aa;
 | |
|     float bb[2];
 | |
|     float cc;
 | |
| };
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     struct apple a = {21, 22, 23.4, 24.4, 25.0};
 | |
|     int4 i;
 | |
| 
 | |
|     i = (int4) a;
 | |
|     return i;
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (21.0, 22.0, 23.0, 24.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float4 f = {31.4, 32.4, 33.4, 34.4};
 | |
|     int3 i;
 | |
| 
 | |
|     i = (int3) f;
 | |
|     return float4(i.x, i.y, i.z, i.z);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (31.0, 32.0, 33.0, 33.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| struct apple
 | |
| {
 | |
|     int2 aa;
 | |
|     float2 bb;
 | |
| };
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     struct apple a = {41, 42, 43, 44};
 | |
|     float2x2 mat;
 | |
| 
 | |
|     mat = (float2x2) a;
 | |
|     return float4(mat);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (41.0, 42.0, 43.0, 44.0)
 | |
| 
 | |
| 
 | |
| [pixel shader fail(sm<6)]
 | |
| struct apple
 | |
| {
 | |
|     float2 aa;
 | |
|     float3 bb;
 | |
| };
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     struct apple a = {1, 2, 3, 4, 5};
 | |
|     float2x2 mat;
 | |
| 
 | |
|     mat = (float2x2) a;
 | |
|     return float4(mat);
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| struct apple
 | |
| {
 | |
|     float3 aa;
 | |
|     int bb;
 | |
| };
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float2x2 mat = {55, 56, 57, 58};
 | |
|     struct apple a;
 | |
| 
 | |
|     a = (struct apple) mat;
 | |
|     return float4(a.aa, a.bb);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (55.0, 56.0, 57.0, 58.0)
 | |
| 
 | |
| 
 | |
| [pixel shader fail(sm<6)]
 | |
| struct apple
 | |
| {
 | |
|     float2 aa;
 | |
|     float2 bb;
 | |
| };
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float3x2 mat = {1, 2, 3, 4, 5, 6};
 | |
|     struct apple a;
 | |
| 
 | |
|     a = (struct apple) mat;
 | |
|     return float4(a.aa, a.bb);
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float arr[4] = {61, 62, 63, 64};
 | |
|     int2x2 mat;
 | |
| 
 | |
|     mat = (int2x2) arr;
 | |
|     return float4(mat);
 | |
| }
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (61.0, 62.0, 63.0, 64.0)
 | |
| 
 | |
| 
 | |
| [pixel shader fail(sm<6)]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float arr[5] = {1, 2, 3, 4, 5};
 | |
|     float2x2 mat;
 | |
| 
 | |
|     mat = (float2x2) arr;
 | |
|     return float4(mat);
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float2x2 mat = {71, 72, 73, 74};
 | |
|     int arr[4];
 | |
| 
 | |
|     arr = (int[4]) mat;
 | |
|     return float4(arr);
 | |
| }
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (71.0, 72.0, 73.0, 74.0)
 | |
| 
 | |
| 
 | |
| [pixel shader fail(sm<6)]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float2x2 mat = {1, 2, 3, 4};
 | |
|     int arr[3];
 | |
| 
 | |
|     arr = (int[3]) mat;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader fail]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float2x2 mat = {1, 2, 3, 4};
 | |
|     float3 vec;
 | |
| 
 | |
|     vec = (float3) mat;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader fail(sm<6)]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float arr[5] = {1, 2, 3, 4, 5};
 | |
|     float4x1 mat;
 | |
| 
 | |
|     mat = (float4x1) arr;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float arr[5] = {81, 82, 83, 84, 85};
 | |
|     int1x4 mat;
 | |
| 
 | |
|     mat = (int1x4) arr;
 | |
|     return float4(mat);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (81.0, 82.0, 83.0, 84.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float4x1 mat = {91, 92, 93, 94};
 | |
|     int arr[3];
 | |
| 
 | |
|     arr = (int[3]) mat;
 | |
|     return float4(arr, 0);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (91.0, 92.0, 93.0, 0.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float1x4 mat = {11, 12, 13, 14};
 | |
|     int arr[3];
 | |
| 
 | |
|     arr = (int[3]) mat;
 | |
|     return float4(arr, 0);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (11.0, 12.0, 13.0, 0.0)
 | |
| 
 | |
| 
 | |
| [pixel shader fail(sm<6)]
 | |
| struct apple
 | |
| {
 | |
|     float3 aa;
 | |
|     float2 bb;
 | |
| };
 | |
| 
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     struct apple a = {1, 2, 3, 4, 5};
 | |
|     float4x1 mat;
 | |
| 
 | |
|     mat = (float4x1) a;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| struct apple
 | |
| {
 | |
|     float3 aa;
 | |
|     float2 bb;
 | |
| };
 | |
| 
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     struct apple a = {21, 22, 23, 24, 25};
 | |
|     float1x4 mat;
 | |
| 
 | |
|     mat = (float1x4) a;
 | |
|     return float4(mat);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (21.0, 22.0, 23.0, 24.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| struct apple
 | |
| {
 | |
|     int aa;
 | |
|     float2 bb;
 | |
| };
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float4x1 mat = {31, 32, 33, 34};
 | |
|     struct apple a;
 | |
| 
 | |
|     a = (struct apple) mat;
 | |
|     return float4(a.aa, a.bb, 0);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (31.0, 32.0, 33.0, 0.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| struct apple
 | |
| {
 | |
|     int aa;
 | |
|     float2 bb;
 | |
| };
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float1x4 mat = {41, 42, 43, 44};
 | |
|     struct apple a;
 | |
| 
 | |
|     a = (struct apple) mat;
 | |
|     return float4(a.aa, a.bb, 0);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (41.0, 42.0, 43.0, 0.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float4 vec = {51, 52, 53, 54};
 | |
|     int1x3 mat;
 | |
| 
 | |
|     mat = (int1x3) vec;
 | |
|     return float4(mat, 0);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (51.0, 52.0, 53.0, 0.0)
 | |
| 
 | |
| 
 | |
| [pixel shader fail(sm<6)]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float4 vec = {1, 2, 3, 4};
 | |
|     float3x1 mat;
 | |
| 
 | |
|     mat = (float3x1) vec;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float1x4 mat = {61, 62, 63, 64};
 | |
|     int3 vec;
 | |
| 
 | |
|     vec = (int1x3) mat;
 | |
|     return float4(vec, 0);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (61.0, 62.0, 63.0, 0.0)
 | |
| 
 | |
| 
 | |
| [pixel shader]
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float4x1 mat = {71, 72, 73, 74};
 | |
|     int3 vec;
 | |
| 
 | |
|     vec = (int3) mat;
 | |
|     return float4(vec, 0);
 | |
| }
 | |
| 
 | |
| 
 | |
| [test]
 | |
| draw quad
 | |
| probe all rgba (71.0, 72.0, 73.0, 0.0)
 |