From 52612c1f66dcd4ef68af378e9f08e91e89f795ba Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 28 Apr 2021 10:36:59 +0100 Subject: [PATCH] Apply out-of-bounds index count clamping to VS output --- qrenderdoc/Windows/BufferViewer.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index f81662df1..582a3530d 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -1827,8 +1827,19 @@ static void RT_FetchMeshData(IReplayController *r, ICaptureContext &ctx, Populat data->vsinConfig.buffers.push_back(buf); } - data->vsoutConfig.numRows = data->postVS.numIndices; - data->vsoutConfig.unclampedNumRows = 0; + if(data->postVS.numIndices <= data->vsinConfig.numRows) + { + data->vsoutConfig.numRows = data->postVS.numIndices; + data->vsoutConfig.unclampedNumRows = 0; + } + else + { + // the vertex shader can't run any expansion, so apply the same clamping to it as we applied to + // the inputs. This protects against draws with an invalid number of vertices. + data->vsoutConfig.numRows = data->vsinConfig.numRows; + data->vsoutConfig.unclampedNumRows = data->vsinConfig.unclampedNumRows; + } + data->vsoutConfig.baseVertex = data->postVS.baseVertex; data->vsoutConfig.displayBaseVertex = data->vsinConfig.baseVertex;