From: Christoph Bumiller Date: Thu, 13 Oct 2011 19:27:09 +0000 (+0200) Subject: d3d1x: use ZS formats for TYPELESS resources with DS binding X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5b6f3a2e3c1d364d243f170b0c9628f746301dea;p=mesa.git d3d1x: use ZS formats for TYPELESS resources with DS binding --- diff --git a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_screen.h b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_screen.h index 8f740ba5af9..dfa0d9e1804 100644 --- a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_screen.h +++ b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_screen.h @@ -744,6 +744,16 @@ struct GalliumD3D11ScreenImpl : public GalliumD3D11Screen else templat.last_level = MAX2(MAX2(util_logbase2(templat.width0), util_logbase2(templat.height0)), util_logbase2(templat.depth0)); templat.format = dxgi_to_pipe_format[format]; + if(bind_flags & D3D11_BIND_DEPTH_STENCIL) { + // colour formats are not depth-renderable, but depth/stencil-formats may be colour-renderable + switch(format) + { + case DXGI_FORMAT_R32_TYPELESS: templat.format = PIPE_FORMAT_Z32_FLOAT; break; + case DXGI_FORMAT_R16_TYPELESS: templat.format = PIPE_FORMAT_Z16_UNORM; break; + default: + break; + } + } templat.bind = d3d11_to_pipe_bind_flags(bind_flags); if(c_p_u_access_flags & D3D11_CPU_ACCESS_READ) templat.bind |= PIPE_BIND_TRANSFER_READ;