Don't crash if vertex buffer stride is 0 when picking vertices

This commit is contained in:
baldurk
2019-10-23 11:23:32 +01:00
parent bb8c8294e5
commit a08455c4fb
4 changed files with 5 additions and 5 deletions
+2 -2
View File
@@ -1385,8 +1385,8 @@ static void ConfigureMeshColumns(ICaptureContext &ctx, PopulateBufferData *bufda
BufferDescription *buf = ctx.GetBuffer(vb.resourceId);
if(buf)
{
numRowsUpperBound =
qMax(numRowsUpperBound, uint32_t(buf->length - vb.byteOffset) / vb.byteStride);
numRowsUpperBound = qMax(numRowsUpperBound,
uint32_t(buf->length - vb.byteOffset) / qMax(1U, vb.byteStride));
}
}
+1 -1
View File
@@ -2941,7 +2941,7 @@ uint32_t D3D11Replay::PickVertex(uint32_t eventId, int32_t width, int32_t height
GetDebugManager()->GetBufferData(vb, cfg.position.vertexByteOffset, 0, oldData);
// clamp maxIndex to upper bound in case we got invalid indices or primitive restart indices
maxIndex = RDCMIN(maxIndex, uint32_t(oldData.size() / cfg.position.vertexByteStride));
maxIndex = RDCMIN(maxIndex, uint32_t(oldData.size() / RDCMAX(1U, cfg.position.vertexByteStride)));
if(m_VertexPick.PickVBBuf == NULL || m_VertexPick.PickVBSize < (maxIndex + 1) * sizeof(Vec4f))
{
+1 -1
View File
@@ -2075,7 +2075,7 @@ uint32_t D3D12Replay::PickVertex(uint32_t eventId, int32_t width, int32_t height
GetDebugManager()->GetBufferData(vb, cfg.position.vertexByteOffset, 0, oldData);
// clamp maxIndex to upper bound in case we got invalid indices or primitive restart indices
maxIndex = RDCMIN(maxIndex, uint32_t(oldData.size() / cfg.position.vertexByteStride));
maxIndex = RDCMIN(maxIndex, uint32_t(oldData.size() / RDCMAX(1U, cfg.position.vertexByteStride)));
if(vb)
{
+1 -1
View File
@@ -2128,7 +2128,7 @@ uint32_t GLReplay::PickVertex(uint32_t eventId, int32_t width, int32_t height,
GetBufferData(cfg.position.vertexResourceId, cfg.position.vertexByteOffset, 0, oldData);
// clamp maxIndex to upper bound in case we got invalid indices or primitive restart indices
maxIndex = RDCMIN(maxIndex, uint32_t(oldData.size() / cfg.position.vertexByteStride));
maxIndex = RDCMIN(maxIndex, uint32_t(oldData.size() / RDCMAX(1U, cfg.position.vertexByteStride)));
if(DebugData.pickVBBuf == 0 || DebugData.pickVBSize < (maxIndex + 1) * sizeof(Vec4f))
{