Add empty nodes to VBNodes tracking, to keep indices == vb slots

* This fixes VB highlighting when the bindings are sparse
This commit is contained in:
baldurk
2018-11-14 18:32:35 +00:00
parent cc637cb08a
commit a7be02bd0b
4 changed files with 28 additions and 4 deletions
@@ -1488,6 +1488,10 @@ void D3D11PipelineStateViewer::setState()
ui->iaBuffers->addTopLevelItem(node);
}
else
{
m_VBNodes.push_back(NULL);
}
}
ui->iaBuffers->clearSelection();
ui->iaBuffers->endUpdate();
@@ -2286,7 +2290,7 @@ void D3D11PipelineStateViewer::highlightIABind(int slot)
{
RDTreeWidgetItem *item = m_VBNodes[(int)slot];
if(!m_EmptyNodes.contains(item))
if(item && !m_EmptyNodes.contains(item))
{
item->setBackgroundColor(col);
item->setForegroundColor(contrastingColor(col, QColor(0, 0, 0)));
@@ -1472,6 +1472,10 @@ void D3D12PipelineStateViewer::setState()
ui->iaBuffers->addTopLevelItem(node);
}
else
{
m_VBNodes.push_back(NULL);
}
continue;
}
@@ -1514,6 +1518,10 @@ void D3D12PipelineStateViewer::setState()
ui->iaBuffers->addTopLevelItem(node);
}
else
{
m_VBNodes.push_back(NULL);
}
}
ui->iaBuffers->clearSelection();
ui->iaBuffers->endUpdate();
@@ -2130,7 +2138,7 @@ void D3D12PipelineStateViewer::highlightIABind(int slot)
if(slot < m_VBNodes.count())
{
if(!m_EmptyNodes.contains(m_VBNodes[slot]))
if(m_VBNodes[slot] && !m_EmptyNodes.contains(m_VBNodes[slot]))
{
m_VBNodes[slot]->setBackgroundColor(col);
m_VBNodes[slot]->setForegroundColor(contrastingColor(col, QColor(0, 0, 0)));
@@ -1410,6 +1410,10 @@ void GLPipelineStateViewer::setState()
ui->viBuffers->addTopLevelItem(node);
}
else
{
m_VBNodes.push_back(NULL);
}
}
ui->viBuffers->clearSelection();
ui->viBuffers->endUpdate();
@@ -2253,7 +2257,7 @@ void GLPipelineStateViewer::highlightIABind(int slot)
if(slot < m_VBNodes.count())
{
if(!m_EmptyNodes.contains(m_VBNodes[slot]))
if(m_VBNodes[slot] && !m_EmptyNodes.contains(m_VBNodes[slot]))
{
m_VBNodes[slot]->setBackgroundColor(col);
m_VBNodes[slot]->setForegroundColor(contrastingColor(col, QColor(0, 0, 0)));
@@ -1791,6 +1791,10 @@ void VulkanPipelineStateViewer::setState()
ui->viBuffers->addTopLevelItem(node);
}
else
{
m_VBNodes.push_back(NULL);
}
}
for(; i < (int)ARRAY_COUNT(usedBindings); i++)
@@ -1811,6 +1815,10 @@ void VulkanPipelineStateViewer::setState()
m_VBNodes.push_back(node);
}
else
{
m_VBNodes.push_back(NULL);
}
}
}
ui->viBuffers->clearSelection();
@@ -2429,7 +2437,7 @@ void VulkanPipelineStateViewer::highlightIABind(int slot)
if(slot < m_VBNodes.count())
{
if(!m_EmptyNodes.contains(m_VBNodes[slot]))
if(m_VBNodes[slot] && !m_EmptyNodes.contains(m_VBNodes[slot]))
{
m_VBNodes[slot]->setBackgroundColor(col);
m_VBNodes[slot]->setForegroundColor(contrastingColor(col, QColor(0, 0, 0)));