mirror of
				https://gitlab.winehq.org/wine/vkd3d.git
				synced 2025-09-12 18:50:22 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			137 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| [pixel shader fail]
 | |
| /* The same function signature cannot be defined twice. */
 | |
| 
 | |
| float func(int arg)
 | |
| {
 | |
|     return 0.1;
 | |
| }
 | |
| 
 | |
| float func(int arg)
 | |
| {
 | |
|     return 0.1;
 | |
| }
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader todo]
 | |
| /* Test a basic overload. */
 | |
| float func(int arg)
 | |
| {
 | |
|     return 0.1;
 | |
| }
 | |
| 
 | |
| float func(uint arg)
 | |
| {
 | |
|     return 0.2;
 | |
| }
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     int i = 1;
 | |
|     uint u = 1;
 | |
|     return float4(func(i), func(u), func(int2(1, 1)), func(uint2(1, 1)));
 | |
| }
 | |
| 
 | |
| [test]
 | |
| todo(sm<6) draw quad
 | |
| probe all rgba (0.1, 0.2, 0.1, 0.2)
 | |
| 
 | |
| 
 | |
| [pixel shader fail todo]
 | |
| float func(int arg)
 | |
| {
 | |
|     return 1.0;
 | |
| }
 | |
| 
 | |
| float func(uint arg)
 | |
| {
 | |
|     return 2.0;
 | |
| }
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     return func(3); // whether 3 is signed or unsigned is unspecified.
 | |
| }
 | |
| 
 | |
| 
 | |
| [pixel shader todo]
 | |
| float func(int arg)
 | |
| {
 | |
|     return 1.0;
 | |
| }
 | |
| 
 | |
| float func(uint arg)
 | |
| {
 | |
|     return 2.0;
 | |
| }
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     int a = 3;
 | |
|     uint b = 3l;
 | |
| 
 | |
|     return float4(func(a), func(b), func(3u), func(3lu));
 | |
| }
 | |
| 
 | |
| [test]
 | |
| todo(sm<6) draw quad
 | |
| todo(sm<6) probe all rgba (1.0, 2.0, 2.0, 2.0)
 | |
| 
 | |
| 
 | |
| % float and float1 can be defined separately...
 | |
| 
 | |
| [pixel shader]
 | |
| void func(float arg) {}
 | |
| void func(float1 arg) {}
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     return 1.0;
 | |
| }
 | |
| 
 | |
| 
 | |
| % ...but invoking them is considered ambiguous and fails.
 | |
| 
 | |
| [pixel shader fail todo]
 | |
| 
 | |
| void func(float arg) {}
 | |
| void func(float1 arg) {}
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float x = 1.0;
 | |
|     func(x);
 | |
|     return 1.0;
 | |
| }
 | |
| 
 | |
| [pixel shader fail todo]
 | |
| 
 | |
| void func(float arg) {}
 | |
| void func(float1 arg) {}
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float1 x = {1.0};
 | |
|     func(x);
 | |
|     return 1.0;
 | |
| }
 | |
| 
 | |
| 
 | |
| % This holds true even if one variant isn't actually defined.
 | |
| 
 | |
| [pixel shader fail todo]
 | |
| 
 | |
| void func(float arg);
 | |
| void func(float1 arg) {}
 | |
| 
 | |
| float4 main() : sv_target
 | |
| {
 | |
|     float1 x = {1.0};
 | |
|     func(x);
 | |
|     return 1.0;
 | |
| }
 |