mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-13 19:17:12 +00:00
Display a specific message for resources with no usage tracked
* Currently we only track usage for buffers and textures.
This commit is contained in:
@@ -285,6 +285,7 @@ void ResourceInspector::Inspect(ResourceId id)
|
||||
|
||||
ui->initChunks->setUpdatesEnabled(false);
|
||||
ui->resourceUsage->clear();
|
||||
ui->resourceUsage->setEnabled(true);
|
||||
|
||||
const SDFile &file = m_Ctx.GetStructuredFile();
|
||||
const ResourceDescription *desc = m_Ctx.GetResource(id);
|
||||
@@ -303,21 +304,37 @@ void ResourceInspector::Inspect(ResourceId id)
|
||||
|
||||
ui->resourceUsage->beginUpdate();
|
||||
|
||||
CombineUsageEvents(m_Ctx, usage, [this](uint32_t startEID, uint32_t endEID, ResourceUsage use) {
|
||||
QString text;
|
||||
if(usage.size() == 1 && usage[0].eventId == 0 && usage[0].usage == ResourceUsage::Unused)
|
||||
{
|
||||
ui->resourceUsage->setEnabled(false);
|
||||
|
||||
if(startEID == endEID)
|
||||
text = QFormatStr("EID %1").arg(startEID);
|
||||
else
|
||||
text = QFormatStr("EID %1-%2").arg(startEID).arg(endEID);
|
||||
ui->resourceUsage->addTopLevelItem(new RDTreeWidgetItem(
|
||||
{QString(), tr("Resource usage not tracked for this type of resource")}));
|
||||
}
|
||||
else if(usage.empty())
|
||||
{
|
||||
ui->resourceUsage->addTopLevelItem(
|
||||
new RDTreeWidgetItem({QString(), tr("No static usage observed for this resource")}));
|
||||
}
|
||||
else
|
||||
{
|
||||
CombineUsageEvents(
|
||||
m_Ctx, usage, [this](uint32_t startEID, uint32_t endEID, ResourceUsage use) {
|
||||
QString text;
|
||||
|
||||
RDTreeWidgetItem *item =
|
||||
new RDTreeWidgetItem({text, ToQStr(use, m_Ctx.APIProps().pipelineType)});
|
||||
item->setData(0, ResourceIdRole, QVariant(endEID));
|
||||
item->setData(1, ResourceIdRole, QVariant(endEID));
|
||||
if(startEID == endEID)
|
||||
text = QFormatStr("EID %1").arg(startEID);
|
||||
else
|
||||
text = QFormatStr("EID %1-%2").arg(startEID).arg(endEID);
|
||||
|
||||
ui->resourceUsage->addTopLevelItem(item);
|
||||
});
|
||||
RDTreeWidgetItem *item =
|
||||
new RDTreeWidgetItem({text, ToQStr(use, m_Ctx.APIProps().pipelineType)});
|
||||
item->setData(0, ResourceIdRole, QVariant(endEID));
|
||||
item->setData(1, ResourceIdRole, QVariant(endEID));
|
||||
|
||||
ui->resourceUsage->addTopLevelItem(item);
|
||||
});
|
||||
}
|
||||
|
||||
ui->resourceUsage->endUpdate();
|
||||
});
|
||||
@@ -474,6 +491,7 @@ void ResourceInspector::OnCaptureClosed()
|
||||
ui->initChunks->clearInternalExpansions();
|
||||
ui->relatedResources->clear();
|
||||
ui->resourceUsage->clear();
|
||||
ui->resourceUsage->setEnabled(true);
|
||||
}
|
||||
|
||||
void ResourceInspector::OnEventChanged(uint32_t eventId)
|
||||
@@ -560,7 +578,8 @@ void ResourceInspector::on_resourceListFilter_textChanged(const QString &text)
|
||||
void ResourceInspector::resource_doubleClicked(const QModelIndex &index)
|
||||
{
|
||||
ResourceId id = index.model()->data(index, ResourceIdRole).value<ResourceId>();
|
||||
Inspect(id);
|
||||
if(id != ResourceId())
|
||||
Inspect(id);
|
||||
|
||||
HighlightUsage();
|
||||
}
|
||||
@@ -631,7 +650,8 @@ void ResourceInspector::on_viewContents_clicked()
|
||||
void ResourceInspector::on_resourceUsage_doubleClicked(const QModelIndex &index)
|
||||
{
|
||||
uint32_t eid = index.model()->data(index, ResourceIdRole).value<uint32_t>();
|
||||
m_Ctx.SetEventID({}, eid, eid);
|
||||
if(eid != 0)
|
||||
m_Ctx.SetEventID({}, eid, eid);
|
||||
}
|
||||
|
||||
void ResourceInspector::enterEvent(QEvent *event)
|
||||
|
||||
@@ -371,6 +371,14 @@ void D3D11Replay::FreeCustomShader(ResourceId id)
|
||||
|
||||
rdcarray<EventUsage> D3D11Replay::GetUsage(ResourceId id)
|
||||
{
|
||||
if(WrappedID3D11Buffer::m_BufferList.find(id) == WrappedID3D11Buffer::m_BufferList.end() &&
|
||||
WrappedID3D11Texture1D::m_TextureList.find(id) == WrappedID3D11Texture1D::m_TextureList.end() &&
|
||||
WrappedID3D11Texture2D1::m_TextureList.find(id) == WrappedID3D11Texture2D1::m_TextureList.end() &&
|
||||
WrappedID3D11Texture3D1::m_TextureList.find(id) == WrappedID3D11Texture3D1::m_TextureList.end())
|
||||
{
|
||||
return {EventUsage(0, ResourceUsage::Unused)};
|
||||
}
|
||||
|
||||
return m_pDevice->GetImmediateContext()->GetUsage(id);
|
||||
}
|
||||
|
||||
|
||||
@@ -734,6 +734,11 @@ ResourceId D3D12Replay::GetLiveID(ResourceId id)
|
||||
|
||||
rdcarray<EventUsage> D3D12Replay::GetUsage(ResourceId id)
|
||||
{
|
||||
if(m_pDevice->GetResourceList().find(id) == m_pDevice->GetResourceList().end())
|
||||
{
|
||||
return {EventUsage(0, ResourceUsage::Unused)};
|
||||
}
|
||||
|
||||
return m_pDevice->GetQueue()->GetUsage(id);
|
||||
}
|
||||
|
||||
|
||||
@@ -4281,6 +4281,14 @@ void GLReplay::SetProxyBufferData(ResourceId bufid, byte *data, size_t dataSize)
|
||||
|
||||
rdcarray<EventUsage> GLReplay::GetUsage(ResourceId id)
|
||||
{
|
||||
if((m_pDriver->m_Textures.find(id) == m_pDriver->m_Textures.end() ||
|
||||
m_pDriver->m_Textures[id].resource.Namespace == eResUnknown) &&
|
||||
(m_pDriver->m_Buffers.find(id) == m_pDriver->m_Buffers.end() ||
|
||||
m_pDriver->m_Buffers[id].resource.Namespace == eResUnknown))
|
||||
{
|
||||
return {EventUsage(0, ResourceUsage::Unused)};
|
||||
}
|
||||
|
||||
return m_pDriver->GetUsage(id);
|
||||
}
|
||||
|
||||
|
||||
@@ -4002,6 +4002,12 @@ bool VulkanReplay::GetHistogram(ResourceId texid, const Subresource &sub, CompTy
|
||||
|
||||
rdcarray<EventUsage> VulkanReplay::GetUsage(ResourceId id)
|
||||
{
|
||||
if(m_pDriver->m_CreationInfo.m_Image.find(id) == m_pDriver->m_CreationInfo.m_Image.end() &&
|
||||
m_pDriver->m_CreationInfo.m_Buffer.find(id) == m_pDriver->m_CreationInfo.m_Buffer.end())
|
||||
{
|
||||
return {EventUsage(0, ResourceUsage::Unused)};
|
||||
}
|
||||
|
||||
return m_pDriver->GetUsage(id);
|
||||
}
|
||||
|
||||
|
||||
@@ -529,7 +529,7 @@ rdcarray<EventUsage> ReplayController::GetUsage(ResourceId id)
|
||||
|
||||
id = m_pDevice->GetLiveID(id);
|
||||
if(id == ResourceId())
|
||||
return rdcarray<EventUsage>();
|
||||
return {EventUsage(0, ResourceUsage::Unused)};
|
||||
return m_pDevice->GetUsage(id);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user