From b958473cc9117780f3846ea40b6358c69083a39c Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Tue, 26 May 2020 13:14:58 +0100 Subject: [PATCH] [d3d9] Move pLockedBox/Rect checks to subresource --- src/d3d9/d3d9_surface.cpp | 3 +++ src/d3d9/d3d9_texture.cpp | 9 --------- src/d3d9/d3d9_volume.cpp | 3 +++ 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/d3d9/d3d9_surface.cpp b/src/d3d9/d3d9_surface.cpp index 77e3f555a..ee01a6d00 100644 --- a/src/d3d9/d3d9_surface.cpp +++ b/src/d3d9/d3d9_surface.cpp @@ -100,6 +100,9 @@ namespace dxvk { } HRESULT STDMETHODCALLTYPE D3D9Surface::LockRect(D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) { + if (unlikely(pLockedRect == nullptr)) + return D3DERR_INVALIDCALL; + D3DBOX box; if (pRect != nullptr) { box.Left = pRect->left; diff --git a/src/d3d9/d3d9_texture.cpp b/src/d3d9/d3d9_texture.cpp index 38fd450c5..1cf50b49a 100644 --- a/src/d3d9/d3d9_texture.cpp +++ b/src/d3d9/d3d9_texture.cpp @@ -63,9 +63,6 @@ namespace dxvk { if (unlikely(Level >= m_texture.ExposedMipLevels())) return D3DERR_INVALIDCALL; - if (unlikely(pLockedRect == nullptr)) - return D3DERR_INVALIDCALL; - return GetSubresource(Level)->LockRect(pLockedRect, pRect, Flags); } @@ -143,9 +140,6 @@ namespace dxvk { if (unlikely(Level >= m_texture.ExposedMipLevels())) return D3DERR_INVALIDCALL; - if (unlikely(pLockedBox == nullptr)) - return D3DERR_INVALIDCALL; - return GetSubresource(Level)->LockBox(pLockedBox, pBox, Flags); } @@ -223,9 +217,6 @@ namespace dxvk { if (unlikely(Face > D3DCUBEMAP_FACE_NEGATIVE_Z || Level >= m_texture.ExposedMipLevels())) return D3DERR_INVALIDCALL; - if (unlikely(pLockedRect == nullptr)) - return D3DERR_INVALIDCALL; - return GetSubresource(m_texture.CalcSubresource(UINT(Face), Level))->LockRect(pLockedRect, pRect, Flags); } diff --git a/src/d3d9/d3d9_volume.cpp b/src/d3d9/d3d9_volume.cpp index dddb166e0..399566f30 100644 --- a/src/d3d9/d3d9_volume.cpp +++ b/src/d3d9/d3d9_volume.cpp @@ -91,6 +91,9 @@ namespace dxvk { HRESULT STDMETHODCALLTYPE D3D9Volume::LockBox(D3DLOCKED_BOX* pLockedBox, CONST D3DBOX* pBox, DWORD Flags) { + if (unlikely(pLockedBox == nullptr)) + return D3DERR_INVALIDCALL; + return m_parent->LockImage( m_texture, m_face, m_mipLevel,