From 8bd678afc0442fd0c7b67c5ccad9206ff7a0e4ed Mon Sep 17 00:00:00 2001 From: vlj Date: Tue, 26 May 2015 00:28:20 +0200 Subject: [PATCH] d3d12: Fix vertex buffer reconstruction with mismatching stride --- rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp b/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp index 653ea21454..0a19646bf4 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp @@ -169,15 +169,16 @@ std::vector FormatVertexData(RSXVertexData *m_vertex_data) size_t elementCount = m_vertex_data[i].data.size() / (m_vertex_data[i].size * m_vertex_data[i].GetTypeSize()); std::pair range = std::make_pair(m_vertex_data[i].addr, m_vertex_data[i].addr + elementCount * m_vertex_data[i].stride); bool isMerged = false; + size_t stride = m_vertex_data[i].stride; for (VertexBufferFormat &vbf : Result) { - if (overlaps(vbf.range, range)) + if (overlaps(vbf.range, range) && vbf.stride == stride) { // Extend buffer if necessary vbf.range.first = MIN2(vbf.range.first, range.first); vbf.range.second = MAX2(vbf.range.second, range.second); vbf.elementCount = MAX2(vbf.elementCount, elementCount); - assert(vbf.stride == m_vertex_data[i].stride); + vbf.attributeId.push_back(i); isMerged = true; break;