mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-09-13 09:16:14 -07:00
tests: Test function call syntax for state blocks.
This commit is contained in:
parent
9ede222714
commit
00c8cf1bcc
Notes:
Alexandre Julliard
2024-04-11 17:02:42 -05:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Zebediah Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/739
@ -185,6 +185,7 @@ vkd3d_shader_tests = \
|
||||
tests/hlsl/smoothstep.shader_test \
|
||||
tests/hlsl/sqrt.shader_test \
|
||||
tests/hlsl/srv-buffers.shader_test \
|
||||
tests/hlsl/state-block-function-syntax.shader_test \
|
||||
tests/hlsl/state-block-syntax.shader_test \
|
||||
tests/hlsl/static-initializer.shader_test \
|
||||
tests/hlsl/step.shader_test \
|
||||
|
99
tests/hlsl/state-block-function-syntax.shader_test
Normal file
99
tests/hlsl/state-block-function-syntax.shader_test
Normal file
@ -0,0 +1,99 @@
|
||||
% Unlike assignment syntax, only these names are allowed.
|
||||
% The parameter count is also checked.
|
||||
[pixel shader todo]
|
||||
sampler sam
|
||||
{
|
||||
SetBlendState(foo, bar, baz); // 3 parameters
|
||||
SetDepthStencilState(foo, 2); // 2 parameters
|
||||
SetRasterizerState(foo); // 1 parameter
|
||||
SetVertexShader(vs); // 1 parameter
|
||||
SetDomainShader(ds); // 1 paramter
|
||||
SetHullShader(100); // 1 parameter
|
||||
SetGeometryShader(foo + bar); // 1 parameter
|
||||
SetPixelShader(ps1); // 1 parameter
|
||||
SetComputeShader("random string"); // 1 parameter
|
||||
OMSetRenderTargets(RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV); // 2 to 9 parameters
|
||||
};
|
||||
|
||||
float4 main() : sv_target { return 0; }
|
||||
|
||||
|
||||
[pixel shader fail(sm<6)]
|
||||
sampler sam
|
||||
{
|
||||
SetSomeotherState();
|
||||
};
|
||||
|
||||
float4 main() : sv_target { return 0; }
|
||||
|
||||
|
||||
% It is allowed to use functions together with assignment syntax.
|
||||
[pixel shader todo]
|
||||
sampler sam
|
||||
{
|
||||
SetDepthStencilState(foo, bar);
|
||||
arbitrary_field = 42;
|
||||
};
|
||||
|
||||
float4 main() : sv_target { return 0; }
|
||||
|
||||
|
||||
% Test complex expression on the arguments, including function calls.
|
||||
[pixel shader todo]
|
||||
float4 addition(float4 a, float4 b)
|
||||
{
|
||||
return a + b;
|
||||
}
|
||||
|
||||
sampler sam
|
||||
{
|
||||
SetBlendState(addition(foo, bar), p + q, p / q);
|
||||
};
|
||||
|
||||
float4 main() : sv_target { return 0; }
|
||||
|
||||
|
||||
% Test the same thing on technique passes
|
||||
[pixel shader todo]
|
||||
technique tech1
|
||||
{
|
||||
pass pass1
|
||||
{
|
||||
SetBlendState(foo, bar, baz);
|
||||
SetDepthStencilState(foo, 2);
|
||||
SetRasterizerState(foo);
|
||||
SetVertexShader(vs);
|
||||
}
|
||||
}
|
||||
|
||||
float4 main() : sv_target { return 0; }
|
||||
|
||||
|
||||
% It is not allowed to call the functions to set state blocks on the rhs using the assignment syntax
|
||||
% for state groups or passes.
|
||||
[pixel shader fail(sm<6)]
|
||||
float4 main() : sv_target { return 0; }
|
||||
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
cat = SetPixelShader(foobar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
% It not allowed to call the functions to set states outside state blocks or passes.
|
||||
[pixel shader fail]
|
||||
DepthStencilState dss1
|
||||
{
|
||||
DepthEnable = false;
|
||||
DepthWriteMask = Zero;
|
||||
DepthFunc = Less;
|
||||
};
|
||||
|
||||
float4 main() : sv_target
|
||||
{
|
||||
SetDepthStencilState(NULL, dss1);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user