From 65581ca3226b8a8cf8f6c7816053dbe91188df8c Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 1 Aug 2022 20:38:17 +0100 Subject: [PATCH] Subtract per-draw index byte offset from index buffer size --- qrenderdoc/Windows/BufferViewer.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index 13394e115..bea7df3f1 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -3805,8 +3805,15 @@ void BufferViewer::UI_CalculateMeshFormats() m_VSInPosition.indexByteStride = ib.byteStride; m_VSInPosition.baseVertex = action->baseVertex; m_VSInPosition.indexResourceId = ib.resourceId; - m_VSInPosition.indexByteOffset = ib.byteOffset + action->indexOffset * ib.byteStride; - m_VSInPosition.indexByteSize = ib.byteSize; + + uint32_t drawIdxByteOffs = action->indexOffset * ib.byteStride; + m_VSInPosition.indexByteOffset = ib.byteOffset + drawIdxByteOffs; + if(ib.byteSize >= ~0U) + m_VSInPosition.indexByteSize = ib.byteSize; + else if(drawIdxByteOffs > ib.byteSize) + m_VSInPosition.indexByteSize = 0; + else + m_VSInPosition.indexByteSize = ib.byteSize - drawIdxByteOffs; if((action->flags & ActionFlags::Indexed) && m_VSInPosition.indexByteStride == 0) m_VSInPosition.indexByteStride = 4U;