diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/state_trackers/nine/adapter9.c | 6 | ||||
-rw-r--r-- | src/gallium/state_trackers/nine/swapchain9.c | 16 |
2 files changed, 5 insertions, 17 deletions
diff --git a/src/gallium/state_trackers/nine/adapter9.c b/src/gallium/state_trackers/nine/adapter9.c index 09bfa3989ff..e9c911b1ea6 100644 --- a/src/gallium/state_trackers/nine/adapter9.c +++ b/src/gallium/state_trackers/nine/adapter9.c @@ -297,7 +297,11 @@ NineAdapter9_CheckDeviceFormat( struct NineAdapter9 *This, bind = 0; if (Usage & D3DUSAGE_RENDERTARGET) bind |= PIPE_BIND_RENDER_TARGET; - if (Usage & D3DUSAGE_DEPTHSTENCIL) bind |= PIPE_BIND_DEPTH_STENCIL; + if (Usage & D3DUSAGE_DEPTHSTENCIL) { + if (!depth_stencil_format(CheckFormat)) + return D3DERR_NOTAVAILABLE; + bind |= d3d9_get_pipe_depth_format_bindings(CheckFormat); + } /* API hack because setting RT[0] to NULL is forbidden */ if (CheckFormat == D3DFMT_NULL && bind == PIPE_BIND_RENDER_TARGET && diff --git a/src/gallium/state_trackers/nine/swapchain9.c b/src/gallium/state_trackers/nine/swapchain9.c index 86c9be66ae6..37e433ff746 100644 --- a/src/gallium/state_trackers/nine/swapchain9.c +++ b/src/gallium/state_trackers/nine/swapchain9.c @@ -342,13 +342,6 @@ NineSwapChain9_Resize( struct NineSwapChain9 *This, } if (pParams->EnableAutoDepthStencil) { tmplt.bind = d3d9_get_pipe_depth_format_bindings(pParams->AutoDepthStencilFormat); - /* Checking the d3d9 depth format for texture support indicates the app if it can use - * the format for shadow mapping or texturing. If the check returns true, then the app - * is allowed to use this functionnality, so try first to create the buffer - * with PIPE_BIND_SAMPLER_VIEW. If the format can't be created with it, try without. - * If it fails with PIPE_BIND_SAMPLER_VIEW, then the app check for texture support - * would fail too, so we are fine. */ - tmplt.bind |= PIPE_BIND_SAMPLER_VIEW; tmplt.nr_samples = multisample_type; tmplt.format = d3d9_to_pipe_format_checked(This->screen, pParams->AutoDepthStencilFormat, @@ -356,15 +349,6 @@ NineSwapChain9_Resize( struct NineSwapChain9 *This, tmplt.nr_samples, tmplt.bind, FALSE, FALSE); - if (tmplt.format == PIPE_FORMAT_NONE) { - tmplt.bind &= ~PIPE_BIND_SAMPLER_VIEW; - tmplt.format = d3d9_to_pipe_format_checked(This->screen, - pParams->AutoDepthStencilFormat, - PIPE_TEXTURE_2D, - tmplt.nr_samples, - tmplt.bind, - FALSE, FALSE); - } if (tmplt.format == PIPE_FORMAT_NONE) return D3DERR_INVALIDCALL; |