From 6ac67b0a99ba4c88658bcdaabf9d462550b2dfdd Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Wed, 4 Jan 2023 22:08:50 -0800 Subject: [PATCH] D3D9: Fix backbuffer screenshots. --- Common/GPU/D3D9/thin3d_d3d9.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Common/GPU/D3D9/thin3d_d3d9.cpp b/Common/GPU/D3D9/thin3d_d3d9.cpp index 622c9ab0f5..b7e920d604 100644 --- a/Common/GPU/D3D9/thin3d_d3d9.cpp +++ b/Common/GPU/D3D9/thin3d_d3d9.cpp @@ -1454,18 +1454,21 @@ bool D3D9Context::CopyFramebufferToMemorySync(Framebuffer *src, int channelBits, LPDIRECT3DSURFACE9 offscreen = nullptr; HRESULT hr = E_UNEXPECTED; - _assert_(fb != nullptr); if (channelBits == FB_COLOR_BIT) { - fb->tex->GetLevelDesc(0, &desc); + if (fb) + fb->tex->GetLevelDesc(0, &desc); + else + deviceRTsurf->GetDesc(&desc); hr = device_->CreateOffscreenPlainSurface(desc.Width, desc.Height, desc.Format, D3DPOOL_SYSTEMMEM, &offscreen, nullptr); if (SUCCEEDED(hr)) { - hr = device_->GetRenderTargetData(fb->surf, offscreen); + hr = device_->GetRenderTargetData(fb ? fb->surf : deviceRTsurf, offscreen); if (SUCCEEDED(hr)) { hr = offscreen->LockRect(&locked, &rect, D3DLOCK_READONLY); } } } else { + _assert_(fb->depthstenciltex != nullptr); fb->depthstenciltex->GetLevelDesc(0, &desc); hr = fb->depthstenciltex->LockRect(0, &locked, &rect, D3DLOCK_READONLY); }