diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp index 32074f84a..1073163b4 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp @@ -158,7 +158,7 @@ static XTL::INDEX16 *pQuadToTriangleIndexBuffer = nullptr; static UINT QuadToTriangleIndexBuffer_Size = 0; // = NrOfQuadVertices static XTL::IDirect3DSurface *g_DefaultHostDepthBufferSuface = NULL; -static XTL::X_D3DSurface *g_XboxBackBufferSurface = NULL; +XTL::X_D3DSurface *g_XboxBackBufferSurface = NULL; static XTL::X_D3DSurface *g_XboxDefaultDepthStencilSurface = NULL; XTL::X_D3DSurface *g_pXboxRenderTarget = NULL; static XTL::X_D3DSurface *g_pXboxDepthStencil = NULL; diff --git a/src/core/hle/D3D8/XbVertexBuffer.cpp b/src/core/hle/D3D8/XbVertexBuffer.cpp index 4dc0b58d8..92c60e045 100644 --- a/src/core/hle/D3D8/XbVertexBuffer.cpp +++ b/src/core/hle/D3D8/XbVertexBuffer.cpp @@ -55,7 +55,8 @@ extern XTL::X_D3DVertexBuffer *g_pVertexBuffer = NULL; extern DWORD XTL::g_dwPrimPerFrame = 0; extern XTL::X_D3DVertexBuffer*g_D3DStreams[16]; extern UINT g_D3DStreamStrides[16]; -extern XTL::X_D3DSurface* g_pXboxRenderTarget; +extern XTL::X_D3DSurface* g_pXboxRenderTarget; +extern XTL::X_D3DSurface* g_XboxBackBufferSurface; void *GetDataFromXboxResource(XTL::X_D3DResource *pXboxResource); bool GetHostRenderTargetDimensions(DWORD* pHostWidth, DWORD* pHostHeight, XTL::IDirect3DSurface* pHostRenderTarget = nullptr); uint32_t GetPixelContainerWidth(XTL::X_D3DPixelContainer* pPixelContainer); @@ -682,6 +683,12 @@ void XTL::CxbxVertexBufferConverter::ConvertStream // the uiTextureCoordinatesByteOffsetInVertex on host will match Xbox } + // If for some reason the Xbox Render Target is not set, fallback to the backbuffer + if (g_pXboxRenderTarget == xbnullptr) { + LOG_TEST_CASE("SetRenderTarget fallback to backbuffer"); + g_pXboxRenderTarget = g_XboxBackBufferSurface; + } + DWORD HostRenderTarget_Width, HostRenderTarget_Height; DWORD XboxRenderTarget_Width = GetPixelContainerWidth(g_pXboxRenderTarget); DWORD XboxRenderTarget_Height = GetPixelContainerHeight(g_pXboxRenderTarget);