From 5cc0fd5c25d3b82194bc37b09a3e250ff46eaf2d Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Wed, 18 Dec 2019 22:50:54 +0000 Subject: [PATCH] [d3d9] Simplify SetViewport pViewport == nullptr is illegal --- src/d3d9/d3d9_device.cpp | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index e1d9a6ede..df06b2035 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -1460,27 +1460,16 @@ namespace dxvk { HRESULT STDMETHODCALLTYPE D3D9DeviceEx::SetViewport(const D3DVIEWPORT9* pViewport) { D3D9DeviceLock lock = LockDevice(); - D3DVIEWPORT9 viewport; - if (pViewport == nullptr) { - auto rtv = m_state.renderTargets[0]->GetRenderTargetView(false); - - viewport.X = 0; - viewport.Y = 0; - viewport.Width = rtv->image()->info().extent.width; - viewport.Height = rtv->image()->info().extent.height; - viewport.MinZ = 0.0f; - viewport.MaxZ = 1.0f; - } - else - viewport = *pViewport; + if (unlikely(pViewport == nullptr)) + return D3DERR_INVALIDCALL; if (unlikely(ShouldRecord())) - return m_recorder->SetViewport(&viewport); + return m_recorder->SetViewport(pViewport); - if (m_state.viewport == viewport) + if (m_state.viewport == *pViewport) return D3D_OK; - m_state.viewport = viewport; + m_state.viewport = *pViewport; m_flags.set(D3D9DeviceFlag::DirtyViewportScissor); m_flags.set(D3D9DeviceFlag::DirtyFFViewport);