Disable stages in vulkan pipeline state view if raster discard is on

This commit is contained in:
baldurk
2020-06-04 16:17:31 +01:00
parent bdead116eb
commit 88231cbe41
2 changed files with 14 additions and 9 deletions
@@ -2108,11 +2108,10 @@ void GLPipelineStateViewer::setState()
else
{
bool raster = true;
bool fbo = true;
if(state.vertexProcessing.discard)
{
raster = fbo = false;
raster = false;
}
if(state.geometryShader.shaderResourceId == ResourceId() && state.transformFeedback.active)
@@ -2128,9 +2127,7 @@ void GLPipelineStateViewer::setState()
{true, true, state.tessControlShader.shaderResourceId != ResourceId(),
state.tessEvalShader.shaderResourceId != ResourceId(),
state.geometryShader.shaderResourceId != ResourceId() || state.transformFeedback.active,
raster,
!state.vertexProcessing.discard && state.fragmentShader.shaderResourceId != ResourceId(),
fbo, false});
raster, raster && state.fragmentShader.shaderResourceId != ResourceId(), raster, false});
}
}
@@ -2596,6 +2596,13 @@ void VulkanPipelineStateViewer::setState()
{
bool xfbActive = !state.transformFeedback.buffers.isEmpty();
bool raster = true;
if(state.rasterizer.rasterizerDiscardEnable)
{
raster = false;
}
if(state.geometryShader.resourceId == ResourceId() && xfbActive)
{
ui->pipeFlow->setStageName(4, lit("XFB"), tr("Transform Feedback"));
@@ -2605,10 +2612,11 @@ void VulkanPipelineStateViewer::setState()
ui->pipeFlow->setStageName(4, lit("GS"), tr("Geometry Shader"));
}
ui->pipeFlow->setStagesEnabled({true, true, state.tessControlShader.resourceId != ResourceId(),
state.tessEvalShader.resourceId != ResourceId(),
state.geometryShader.resourceId != ResourceId() || xfbActive, true,
state.fragmentShader.resourceId != ResourceId(), true, false});
ui->pipeFlow->setStagesEnabled(
{true, true, state.tessControlShader.resourceId != ResourceId(),
state.tessEvalShader.resourceId != ResourceId(),
state.geometryShader.resourceId != ResourceId() || xfbActive, raster,
raster && state.fragmentShader.resourceId != ResourceId(), raster, false});
}
}