From a4961df6f04140da28418d3458b756610172bebf Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 20 Jan 2020 15:04:14 +0000 Subject: [PATCH] Don't return an index byte stride if postvs data doesn't use indices * Since we use the index byte stride to indicate whether a draw is indexed or not, returning a valid value here is misleading. --- renderdoc/driver/d3d11/d3d11_postvs.cpp | 16 +++++++++++----- renderdoc/driver/gl/gl_postvs.cpp | 7 ++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/renderdoc/driver/d3d11/d3d11_postvs.cpp b/renderdoc/driver/d3d11/d3d11_postvs.cpp index 146f64453..f5ea2e281 100644 --- a/renderdoc/driver/d3d11/d3d11_postvs.cpp +++ b/renderdoc/driver/d3d11/d3d11_postvs.cpp @@ -114,14 +114,20 @@ MeshFormat D3D11Replay::GetPostVSBuffers(uint32_t eventId, uint32_t instID, uint MeshFormat ret; - if(s.useIndices && s.idxBuf) - ret.indexResourceId = ((WrappedID3D11Buffer *)s.idxBuf)->GetResourceID(); - else - ret.indexResourceId = ResourceId(); ret.indexByteOffset = 0; - ret.indexByteStride = s.idxFmt == DXGI_FORMAT_R16_UINT ? 2 : 4; ret.baseVertex = 0; + if(s.useIndices && s.idxBuf) + { + ret.indexResourceId = ((WrappedID3D11Buffer *)s.idxBuf)->GetResourceID(); + ret.indexByteStride = s.idxFmt == DXGI_FORMAT_R16_UINT ? 2 : 4; + } + else + { + ret.indexResourceId = ResourceId(); + ret.indexByteStride = 0; + } + if(s.buf) ret.vertexResourceId = ((WrappedID3D11Buffer *)s.buf)->GetResourceID(); else diff --git a/renderdoc/driver/gl/gl_postvs.cpp b/renderdoc/driver/gl/gl_postvs.cpp index 984610966..3cd0298c7 100644 --- a/renderdoc/driver/gl/gl_postvs.cpp +++ b/renderdoc/driver/gl/gl_postvs.cpp @@ -1862,11 +1862,16 @@ MeshFormat GLReplay::GetPostVSBuffers(uint32_t eventId, uint32_t instID, uint32_ MeshFormat ret; if(s.useIndices && s.idxBuf) + { ret.indexResourceId = m_pDriver->GetResourceManager()->GetID(BufferRes(ctx, s.idxBuf)); + ret.indexByteStride = s.idxByteWidth; + } else + { ret.indexResourceId = ResourceId(); + ret.indexByteStride = 0; + } ret.indexByteOffset = 0; - ret.indexByteStride = s.idxByteWidth; ret.baseVertex = 0; if(s.buf)