mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-24 23:46:41 +00:00
Improve handling of resource arrays for D3D12
When getting read only resources from the pipe state, stitch back up according to the bindpoint mappings. When displaying resources in UI, don't traverse unbounded arrays. Fix resource swizzle on load/sample/ gather instructions, which happens on fetch result, not on the source operand. Added more tests for unbounded arrays and different ways to index into arrays.
This commit is contained in:
committed by
Baldur Karlsson
parent
a344d226ee
commit
67447b7b7e
@@ -2269,6 +2269,14 @@ void ShaderViewer::updateDebugState()
|
||||
VariableTag(DebugVariableReference(DebugVariableType::ReadOnlyResource, ro.name))));
|
||||
ui->constants->addTopLevelItem(node);
|
||||
}
|
||||
else if(bind.arraySize == ~0U)
|
||||
{
|
||||
RDTreeWidgetItem *node = new RDTreeWidgetItem(
|
||||
{m_ShaderDetails->readOnlyResources[i].name, ro.name, lit("[unbounded]"), QString()});
|
||||
node->setTag(QVariant::fromValue(
|
||||
VariableTag(DebugVariableReference(DebugVariableType::ReadOnlyResource, ro.name))));
|
||||
ui->constants->addTopLevelItem(node);
|
||||
}
|
||||
else
|
||||
{
|
||||
RDTreeWidgetItem *node =
|
||||
@@ -2325,7 +2333,15 @@ void ShaderViewer::updateDebugState()
|
||||
new RDTreeWidgetItem({m_ShaderDetails->readWriteResources[i].name, rw.name,
|
||||
lit("Resource"), ToQStr(rwBind.resources[0].resourceId)});
|
||||
node->setTag(QVariant::fromValue(
|
||||
VariableTag(DebugVariableReference(DebugVariableType::ReadOnlyResource, rw.name))));
|
||||
VariableTag(DebugVariableReference(DebugVariableType::ReadWriteResource, rw.name))));
|
||||
ui->constants->addTopLevelItem(node);
|
||||
}
|
||||
else if(bind.arraySize == ~0U)
|
||||
{
|
||||
RDTreeWidgetItem *node = new RDTreeWidgetItem(
|
||||
{m_ShaderDetails->readWriteResources[i].name, rw.name, lit("[unbounded]"), QString()});
|
||||
node->setTag(QVariant::fromValue(
|
||||
VariableTag(DebugVariableReference(DebugVariableType::ReadWriteResource, rw.name))));
|
||||
ui->constants->addTopLevelItem(node);
|
||||
}
|
||||
else
|
||||
@@ -2334,7 +2350,7 @@ void ShaderViewer::updateDebugState()
|
||||
new RDTreeWidgetItem({m_ShaderDetails->readWriteResources[i].name, rw.name,
|
||||
QFormatStr("[%1]").arg(bind.arraySize), QString()});
|
||||
node->setTag(QVariant::fromValue(
|
||||
VariableTag(DebugVariableReference(DebugVariableType::ReadOnlyResource, rw.name))));
|
||||
VariableTag(DebugVariableReference(DebugVariableType::ReadWriteResource, rw.name))));
|
||||
|
||||
for(uint32_t a = 0; a < bind.arraySize; a++)
|
||||
{
|
||||
@@ -2764,6 +2780,12 @@ RDTreeWidgetItem *ShaderViewer::makeSourceVariableNode(const SourceVariableMappi
|
||||
{
|
||||
value = ToQStr(res.resources[0].resourceId);
|
||||
}
|
||||
else if(bind.arraySize == ~0U)
|
||||
{
|
||||
regNames = QString();
|
||||
typeName = lit("[unbounded]");
|
||||
value = QString();
|
||||
}
|
||||
else
|
||||
{
|
||||
for(uint32_t a = 0; a < bind.arraySize; a++)
|
||||
|
||||
Reference in New Issue
Block a user