st/nine: Improve Reset on Ex devices
Found with wine tests Signed-off-by: Axel Davy <davyaxel0@gmail.com> Acked-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10160>
This commit is contained in:
parent
ee580c96ef
commit
006338f702
|
@ -1995,6 +1995,8 @@ NineDevice9_SetRenderTarget( struct NineDevice9 *This,
|
|||
This->state.scissor.miny = 0;
|
||||
This->state.scissor.maxx = rt->desc.Width;
|
||||
This->state.scissor.maxy = rt->desc.Height;
|
||||
nine_context_set_viewport(This, &This->state.viewport);
|
||||
nine_context_set_scissor(This, &This->state.scissor);
|
||||
}
|
||||
|
||||
if (This->state.rt[i] != NineSurface9(pRenderTarget))
|
||||
|
|
|
@ -222,6 +222,7 @@ NineDevice9Ex_ResetEx( struct NineDevice9Ex *This,
|
|||
D3DDISPLAYMODEEX *pFullscreenDisplayMode )
|
||||
{
|
||||
HRESULT hr = D3D_OK;
|
||||
float MinZ, MaxZ;
|
||||
unsigned i;
|
||||
|
||||
DBG("This=%p pPresentationParameters=%p pFullscreenDisplayMode=%p\n", This, pPresentationParameters, pFullscreenDisplayMode);
|
||||
|
@ -235,8 +236,17 @@ NineDevice9Ex_ResetEx( struct NineDevice9Ex *This,
|
|||
break;
|
||||
}
|
||||
|
||||
MinZ = This->base.state.viewport.MinZ; /* These are preserved */
|
||||
MaxZ = This->base.state.viewport.MaxZ;
|
||||
NineDevice9_SetRenderTarget(
|
||||
(struct NineDevice9 *)This, 0, (IDirect3DSurface9 *)This->base.swapchains[0]->buffers[0]);
|
||||
This->base.state.viewport.MinZ = MinZ;
|
||||
This->base.state.viewport.MaxZ = MaxZ;
|
||||
nine_context_set_viewport(&This->base, &This->base.state.viewport);
|
||||
|
||||
if (This->base.nswapchains && This->base.swapchains[0]->params.EnableAutoDepthStencil)
|
||||
NineDevice9_SetDepthStencilSurface(
|
||||
&This->base, (IDirect3DSurface9 *)This->base.swapchains[0]->zsbuf);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -246,6 +256,7 @@ NineDevice9Ex_Reset( struct NineDevice9Ex *This,
|
|||
D3DPRESENT_PARAMETERS *pPresentationParameters )
|
||||
{
|
||||
HRESULT hr = D3D_OK;
|
||||
float MinZ, MaxZ;
|
||||
unsigned i;
|
||||
|
||||
DBG("This=%p pPresentationParameters=%p\n", This, pPresentationParameters);
|
||||
|
@ -257,13 +268,17 @@ NineDevice9Ex_Reset( struct NineDevice9Ex *This,
|
|||
break;
|
||||
}
|
||||
|
||||
nine_csmt_process(&This->base);
|
||||
nine_device_state_clear((struct NineDevice9 *)This);
|
||||
nine_context_clear(&This->base);
|
||||
|
||||
NineDevice9_SetDefaultState((struct NineDevice9 *)This, TRUE);
|
||||
MinZ = This->base.state.viewport.MinZ; /* These are preserved */
|
||||
MaxZ = This->base.state.viewport.MaxZ;
|
||||
NineDevice9_SetRenderTarget(
|
||||
(struct NineDevice9 *)This, 0, (IDirect3DSurface9 *)This->base.swapchains[0]->buffers[0]);
|
||||
This->base.state.viewport.MinZ = MinZ;
|
||||
This->base.state.viewport.MaxZ = MaxZ;
|
||||
nine_context_set_viewport(&This->base, &This->base.state.viewport);
|
||||
|
||||
if (This->base.nswapchains && This->base.swapchains[0]->params.EnableAutoDepthStencil)
|
||||
NineDevice9_SetDepthStencilSurface(
|
||||
&This->base, (IDirect3DSurface9 *)This->base.swapchains[0]->zsbuf);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
|
|
@ -1851,19 +1851,7 @@ CSMT_ITEM_NO_WAIT(nine_context_set_render_target,
|
|||
const unsigned i = RenderTargetIndex;
|
||||
|
||||
if (i == 0) {
|
||||
context->viewport.X = 0;
|
||||
context->viewport.Y = 0;
|
||||
context->viewport.Width = rt->desc.Width;
|
||||
context->viewport.Height = rt->desc.Height;
|
||||
context->viewport.MinZ = 0.0f;
|
||||
context->viewport.MaxZ = 1.0f;
|
||||
|
||||
context->scissor.minx = 0;
|
||||
context->scissor.miny = 0;
|
||||
context->scissor.maxx = rt->desc.Width;
|
||||
context->scissor.maxy = rt->desc.Height;
|
||||
|
||||
context->changed.group |= NINE_STATE_VIEWPORT | NINE_STATE_SCISSOR | NINE_STATE_MULTISAMPLE;
|
||||
context->changed.group |= NINE_STATE_MULTISAMPLE;
|
||||
|
||||
if (context->rt[0] &&
|
||||
(context->rt[0]->desc.MultiSampleType <= D3DMULTISAMPLE_NONMASKABLE) !=
|
||||
|
|
Loading…
Reference in New Issue