Revert "Simplified D3DDevice_GetBackBuffer and D3DDevice_SetRenderTarget"

This reverts commit da9a919a89.
This commit is contained in:
PatrickvL 2017-05-15 00:18:28 +01:00
parent 5c36b9bef5
commit 61c7457448
1 changed files with 26 additions and 18 deletions

View File

@ -1937,7 +1937,6 @@ static void EmuUnswizzleTextureStages()
HRESULT hRet; HRESULT hRet;
XTL::IDirect3DTexture8 *pHostTexture = GetHostTexture(pPixelContainer); XTL::IDirect3DTexture8 *pHostTexture = GetHostTexture(pPixelContainer);
if (pHostTexture != nullptr) if (pHostTexture != nullptr)
{ {
hRet = pHostTexture->UnlockRect(0); // remove old lock hRet = pHostTexture->UnlockRect(0); // remove old lock
@ -2810,13 +2809,7 @@ XTL::X_D3DSurface* WINAPI XTL::EMUPATCH(D3DDevice_GetBackBuffer2)
} }
//*/ //*/
static X_D3DSurface *pBackBuffer = EmuNewD3DSurface();
static X_D3DSurface *pBackBuffer;
#if 1
pBackBuffer = g_pCachedRenderTarget;
pBackBuffer->Common++;
#else
pBackBuffer = EmuNewD3DSurface();
XTL::IDirect3DSurface8 *pNewHostSurface = nullptr; XTL::IDirect3DSurface8 *pNewHostSurface = nullptr;
if(BackBuffer == -1) if(BackBuffer == -1)
@ -2831,7 +2824,7 @@ XTL::X_D3DSurface* WINAPI XTL::EMUPATCH(D3DDevice_GetBackBuffer2)
SetHostSurface(pBackBuffer, pNewHostSurface); SetHostSurface(pBackBuffer, pNewHostSurface);
// update data pointer // update data pointer
pBackBuffer->Data = X_D3DRESOURCE_DATA_BACK_BUFFER; pBackBuffer->Data = X_D3DRESOURCE_DATA_BACK_BUFFER;
#endif
return pBackBuffer; return pBackBuffer;
} }
@ -8183,18 +8176,33 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_SetRenderTarget)
LOG_FUNC_ARG(pNewZStencil) LOG_FUNC_ARG(pNewZStencil)
LOG_FUNC_END; LOG_FUNC_END;
IDirect3DSurface8 *pPCRenderTarget = nullptr;
if (pRenderTarget == NULL)
pRenderTarget = g_pCachedRenderTarget;
EmuVerifyResourceIsRegistered(pRenderTarget);
IDirect3DSurface8 *pPCRenderTarget = GetHostSurface(pRenderTarget);
IDirect3DSurface8 *pPCNewZStencil = nullptr; IDirect3DSurface8 *pPCNewZStencil = nullptr;
if(pRenderTarget != NULL)
{
if(GetHostSurface(pRenderTarget) != nullptr)
{
EmuVerifyResourceIsRegistered(pRenderTarget);
pPCRenderTarget = GetHostSurface(pRenderTarget);
}
else
{
pPCRenderTarget = GetHostSurface(g_pCachedRenderTarget);
}
}
if(pNewZStencil != NULL) if(pNewZStencil != NULL)
{ {
EmuVerifyResourceIsRegistered(pNewZStencil); if(GetHostSurface(pNewZStencil) != nullptr)
pPCNewZStencil = GetHostSurface(pNewZStencil); {
EmuVerifyResourceIsRegistered(pNewZStencil);
pPCNewZStencil = GetHostSurface(pNewZStencil);
}
else
{
pPCNewZStencil = GetHostSurface(g_pCachedDepthStencil);
}
} }
// TODO: Follow that stencil! // TODO: Follow that stencil!