mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
f15d8dc9e9
This test is important because it checks that all the valid names for stateblock functions with the expected amount of arguments are tested, but, after parsing state block function calls, the only reason it is not passing is that we don't parse strings yet.
109 lines
2.2 KiB
Plaintext
109 lines
2.2 KiB
Plaintext
% 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(ARG); // 1 parameter
|
|
OMSetRenderTargets(RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV); // 2 to 9 parameters
|
|
};
|
|
|
|
float4 main() : sv_target { return 0; }
|
|
|
|
|
|
[pixel shader todo]
|
|
sampler sam
|
|
{
|
|
SetComputeShader("random string");
|
|
};
|
|
|
|
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;
|
|
}
|