Hi,
The subject is not very accurate.
On Thu, Nov 19, 2015 at 10:29 AM, Alistair Leslie-Hughes
<leslie_alistair(a)hotmail.com> wrote:
> Fixed failed tests.
>
> Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
> ---
> dlls/d3d11/device.c | 7 ++++++-
> dlls/d3d11/tests/d3d11.c | 2 ++
> 2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
> index f2bc4d6..c6e54cf 100644
> --- a/dlls/d3d11/device.c
> +++ b/dlls/d3d11/device.c
> @@ -603,10 +603,15 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetRenderTargetsAndUnord
> }
>
> static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11DeviceContext *iface,
> - ID3D11BlendState *blend_state, const FLOAT blend_factor[4], UINT sample_mask)
> + ID3D11BlendState *blend_state, const FLOAT arg_blend_factor[4], UINT sample_mask)
> {
> struct d3d_device *device = device_from_immediate_ID3D11DeviceContext(iface);
> const D3D11_BLEND_DESC *desc;
> + const FLOAT blend_default[4] = {1.0f, 1.0f, 1.0f, 1.0f};
> + const FLOAT *blend_factor = blend_default;
> +
> + if(arg_blend_factor)
> + blend_factor = arg_blend_factor;
There is a missing space after "if".
>
> TRACE("iface %p, blend_state %p, blend_factor {%.8e %.8e %.8e %.8e}, sample_mask 0x%08x.\n",
> iface, blend_state, blend_factor[0], blend_factor[1], blend_factor[2], blend_factor[3], sample_mask);
We should print actual arguments. If blend_factor is allowed to be
NULL it should be treated as a pointer.
> diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
> index 7021c6f..f42edf7 100644
> --- a/dlls/d3d11/tests/d3d11.c
> +++ b/dlls/d3d11/tests/d3d11.c
> @@ -2777,6 +2777,8 @@ static void test_blend(void)
>
> ID3D11DeviceContext_ClearRenderTargetView(context, backbuffer_rtv, red);
>
> + ID3D11DeviceContext_OMSetBlendState(context, src_blend, NULL, D3D11_DEFAULT_SAMPLE_MASK);
> +
A test showing that passing NULL to OmSetBlendState() resets the blend
factor to (1.0, 1.0, 1.0 ,1.0) would be useful. Unfortunately,
d3d11_immediate_context_OMGetBlendState() is not implemented yet.
Also, the test_blend() is not the best place for this test as it is a
visual test. The test should be probably placed in test_clear_state()
but it is not ported from d3d10core tests yet.
I think the best way would be to fix this issue in D3D10 as well and
add a test in test_clear_state(). The test_clear_state() will be
eventually ported to d3d11 tests.
Thanks,
Józef Kucia