From 6848a32c3d7c8669385089898b01ab914efd0864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Wed, 16 Mar 2016 10:02:35 +0100 Subject: [PATCH] d3d11: Fill unused fields in D3D11_DEPTH_STENCIL_DESC with default values. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Józef Kucia Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/d3d11/device.c | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 845a33ec0ac..8e293031312 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -2233,13 +2233,37 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateDepthStencilState(ID3D11Devi * it as a key in the rbtree. */ memset(&tmp_desc, 0, sizeof(tmp_desc)); tmp_desc.DepthEnable = desc->DepthEnable; - tmp_desc.DepthWriteMask = desc->DepthWriteMask; - tmp_desc.DepthFunc = desc->DepthFunc; + if (desc->DepthEnable) + { + tmp_desc.DepthWriteMask = desc->DepthWriteMask; + tmp_desc.DepthFunc = desc->DepthFunc; + } + else + { + tmp_desc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL; + tmp_desc.DepthFunc = D3D11_COMPARISON_LESS; + } tmp_desc.StencilEnable = desc->StencilEnable; - tmp_desc.StencilReadMask = desc->StencilReadMask; - tmp_desc.StencilWriteMask = desc->StencilWriteMask; - tmp_desc.FrontFace = desc->FrontFace; - tmp_desc.BackFace = desc->BackFace; + if (desc->StencilEnable) + { + tmp_desc.StencilReadMask = desc->StencilReadMask; + tmp_desc.StencilWriteMask = desc->StencilWriteMask; + tmp_desc.FrontFace = desc->FrontFace; + tmp_desc.BackFace = desc->BackFace; + } + else + { + tmp_desc.StencilReadMask = D3D11_DEFAULT_STENCIL_READ_MASK; + tmp_desc.StencilWriteMask = D3D11_DEFAULT_STENCIL_WRITE_MASK; + tmp_desc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP; + tmp_desc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP; + tmp_desc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP; + tmp_desc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS; + tmp_desc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP; + tmp_desc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP; + tmp_desc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP; + tmp_desc.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS; + } wined3d_mutex_lock(); if ((entry = wine_rb_get(&device->depthstencil_states, &tmp_desc)))