diff --git a/src/d3d9/d3d9_adapter.cpp b/src/d3d9/d3d9_adapter.cpp index b85f7406b..44b631a46 100644 --- a/src/d3d9/d3d9_adapter.cpp +++ b/src/d3d9/d3d9_adapter.cpp @@ -529,7 +529,7 @@ namespace dxvk { // Max Vertex Blend Matrices pCaps->MaxVertexBlendMatrices = 4; // Max Vertex Blend Matrix Index - pCaps->MaxVertexBlendMatrixIndex = 8; + pCaps->MaxVertexBlendMatrixIndex = 0; // Max Point Size pCaps->MaxPointSize = 256.0f; // Max Primitive Count diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 2c4b5b1cf..71136dbd0 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -268,7 +268,15 @@ namespace dxvk { HRESULT STDMETHODCALLTYPE D3D9DeviceEx::GetDeviceCaps(D3DCAPS9* pCaps) { - return m_adapter->GetDeviceCaps(m_deviceType, pCaps); + if (pCaps == nullptr) + return D3DERR_INVALIDCALL; + + m_adapter->GetDeviceCaps(m_deviceType, pCaps); + + // When in SWVP mode, 256 matrices can be used for indexed vertex blending + pCaps->MaxVertexBlendMatrixIndex = m_isSWVP ? 255 : 8; + + return D3D_OK; }