diff --git a/src/d3d8/d3d8_device.cpp b/src/d3d8/d3d8_device.cpp index a41a71af2..dd0298489 100644 --- a/src/d3d8/d3d8_device.cpp +++ b/src/d3d8/d3d8_device.cpp @@ -1402,7 +1402,10 @@ namespace dxvk { if (ShouldBatch()) m_batcher->SetStream(StreamNumber, buffer, Stride); - m_streams[StreamNumber] = D3D8VBO {buffer, Stride}; + m_streams[StreamNumber].buffer = buffer; + // The previous stride is preserved if pStreamData is NULL + if (likely(buffer != nullptr)) + m_streams[StreamNumber].stride = Stride; } return res; diff --git a/src/d3d8/d3d8_state_block.h b/src/d3d8/d3d8_state_block.h index 8b5ede1bd..1976e79c9 100644 --- a/src/d3d8/d3d8_state_block.h +++ b/src/d3d8/d3d8_state_block.h @@ -103,7 +103,9 @@ namespace dxvk { inline HRESULT SetStreamSource(UINT StreamNumber, IDirect3DVertexBuffer8* pStreamData, UINT Stride) { m_streams[StreamNumber].buffer = pStreamData; - m_streams[StreamNumber].stride = Stride; + // The previous stride is preserved if pStreamData is NULL + if (likely(pStreamData != nullptr)) + m_streams[StreamNumber].stride = Stride; m_capture.streams.set(StreamNumber, true); return D3D_OK; }