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,