mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-20 13:36:41 +00:00
Fix a crash when push constants are provided insufficient data
This commit is contained in:
@@ -1715,15 +1715,23 @@ void VulkanPipelineStateViewer::addConstantBlockRow(ShaderReflection *shaderDeta
|
||||
|
||||
if(descriptorBind && descriptorBind->inlineBlock)
|
||||
{
|
||||
vecrange = QFormatStr("%1 - %2")
|
||||
vecrange = QFormatStr("%1 - %2 bytes")
|
||||
.arg(descriptorBind->byteOffset)
|
||||
.arg(descriptorBind->byteOffset + descriptorBind->byteSize);
|
||||
}
|
||||
else if(!cblock->compileConstants)
|
||||
{
|
||||
vecrange = QFormatStr("%1 - %2")
|
||||
vecrange = QFormatStr("%1 - %2 bytes")
|
||||
.arg(stage.pushConstantRangeByteOffset)
|
||||
.arg(stage.pushConstantRangeByteOffset + stage.pushConstantRangeByteSize);
|
||||
|
||||
if(stage.pushConstantRangeByteOffset + stage.pushConstantRangeByteSize >
|
||||
m_Ctx.CurVulkanPipelineState()->pushconsts.size())
|
||||
{
|
||||
filledSlot = false;
|
||||
vecrange +=
|
||||
tr(", only %1 bytes pushed").arg(m_Ctx.CurVulkanPipelineState()->pushconsts.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1071,7 +1071,7 @@ BoundCBuffer PipeState::GetConstantBuffer(ShaderStage stage, uint32_t BufIdx, ui
|
||||
if(ret.byteOffset > src->size())
|
||||
ret.byteSize = 0;
|
||||
else if(ret.byteOffset + ret.byteSize > src->size())
|
||||
ret.byteSize = src->size() - (ret.byteOffset + ret.byteSize);
|
||||
ret.byteSize = src->size() - ret.byteOffset;
|
||||
|
||||
// consume the byteoffset here when copying data from the source data
|
||||
ret.inlineData.resize((size_t)ret.byteSize);
|
||||
|
||||
Reference in New Issue
Block a user