diff --git a/qrenderdoc/Code/Resources.h b/qrenderdoc/Code/Resources.h
index 8b193a286..55f53d754 100644
--- a/qrenderdoc/Code/Resources.h
+++ b/qrenderdoc/Code/Resources.h
@@ -61,11 +61,14 @@
RESOURCE_DEF(hourglass, "hourglass.png") \
RESOURCE_DEF(house, "house.png") \
RESOURCE_DEF(information, "information.png") \
+ RESOURCE_DEF(link, "link.png") \
+ RESOURCE_DEF(page_go, "page_go.png") \
RESOURCE_DEF(page_white_code, "page_white_code.png") \
RESOURCE_DEF(page_white_database, "page_white_database.png") \
RESOURCE_DEF(page_white_delete, "page_white_delete.png") \
RESOURCE_DEF(page_white_edit, "page_white_edit.png") \
RESOURCE_DEF(page_white_link, "page_white_link.png") \
+ RESOURCE_DEF(page_white_stack, "page_white_stack.png") \
RESOURCE_DEF(plugin_add, "plugin_add.png") \
RESOURCE_DEF(save, "save.png") \
RESOURCE_DEF(tick, "tick.png") \
diff --git a/qrenderdoc/Resources/link.png b/qrenderdoc/Resources/link.png
new file mode 100644
index 000000000..c4f00cb22
Binary files /dev/null and b/qrenderdoc/Resources/link.png differ
diff --git a/qrenderdoc/Resources/link@2x.png b/qrenderdoc/Resources/link@2x.png
new file mode 100644
index 000000000..b0c35b59a
Binary files /dev/null and b/qrenderdoc/Resources/link@2x.png differ
diff --git a/qrenderdoc/Resources/page_go.png b/qrenderdoc/Resources/page_go.png
new file mode 100644
index 000000000..fad87d799
Binary files /dev/null and b/qrenderdoc/Resources/page_go.png differ
diff --git a/qrenderdoc/Resources/page_go@2x.png b/qrenderdoc/Resources/page_go@2x.png
new file mode 100644
index 000000000..3470ab8e3
Binary files /dev/null and b/qrenderdoc/Resources/page_go@2x.png differ
diff --git a/qrenderdoc/Resources/page_white_stack.png b/qrenderdoc/Resources/page_white_stack.png
new file mode 100644
index 000000000..86bc481bc
Binary files /dev/null and b/qrenderdoc/Resources/page_white_stack.png differ
diff --git a/qrenderdoc/Resources/page_white_stack@2x.png b/qrenderdoc/Resources/page_white_stack@2x.png
new file mode 100644
index 000000000..b1469bcd1
Binary files /dev/null and b/qrenderdoc/Resources/page_white_stack@2x.png differ
diff --git a/qrenderdoc/Resources/resources.qrc b/qrenderdoc/Resources/resources.qrc
index 5063fa540..9a16fa668 100644
--- a/qrenderdoc/Resources/resources.qrc
+++ b/qrenderdoc/Resources/resources.qrc
@@ -81,6 +81,10 @@
house@2x.png
information.png
information@2x.png
+ link.png
+ link@2x.png
+ page_go.png
+ page_go@2x.png
page_white_code.png
page_white_code@2x.png
page_white_database.png
@@ -91,6 +95,8 @@
page_white_edit@2x.png
page_white_link.png
page_white_link@2x.png
+ page_white_stack.png
+ page_white_stack@2x.png
plugin_add.png
plugin_add@2x.png
save.png
diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp
index 488a75b3c..c95bc0ebc 100644
--- a/qrenderdoc/Windows/BufferViewer.cpp
+++ b/qrenderdoc/Windows/BufferViewer.cpp
@@ -1173,6 +1173,7 @@ void BufferViewer::SetupMeshView()
ui->byteRangeLengthLabel->setVisible(false);
ui->byteRangeLength->setVisible(false);
+ ui->resourceDetails->setVisible(false);
ui->formatSpecifier->setVisible(false);
ui->cameraControlsGroup->setVisible(false);
@@ -2633,6 +2634,16 @@ void BufferViewer::updateWindowTitle()
setWindowTitle(m_Ctx.GetResourceName(m_BufferID) + lit(" - Contents"));
}
+void BufferViewer::on_resourceDetails_clicked()
+{
+ if(!m_Ctx.HasResourceInspector())
+ m_Ctx.ShowResourceInspector();
+
+ m_Ctx.GetResourceInspector()->Inspect(m_BufferID);
+
+ ToolWindowManager::raiseToolWindow(m_Ctx.GetResourceInspector()->Widget());
+}
+
void BufferViewer::render_mouseWheel(QWheelEvent *e)
{
if(m_CurrentCamera)
diff --git a/qrenderdoc/Windows/BufferViewer.h b/qrenderdoc/Windows/BufferViewer.h
index b01aa3d98..2751a8550 100644
--- a/qrenderdoc/Windows/BufferViewer.h
+++ b/qrenderdoc/Windows/BufferViewer.h
@@ -94,6 +94,7 @@ private slots:
void on_autofitCamera_clicked();
void on_toggleControls_toggled(bool checked);
void on_syncViews_toggled(bool checked);
+ void on_resourceDetails_clicked();
void on_highlightVerts_toggled(bool checked);
void on_wireframeRender_toggled(bool checked);
void on_solidShading_currentIndexChanged(int index);
diff --git a/qrenderdoc/Windows/BufferViewer.ui b/qrenderdoc/Windows/BufferViewer.ui
index 7bb5d1938..ff6535146 100644
--- a/qrenderdoc/Windows/BufferViewer.ui
+++ b/qrenderdoc/Windows/BufferViewer.ui
@@ -738,6 +738,20 @@
+ -
+
+
+ Open the currently buffer's resource details in the resource inspector
+
+
+
+ :/link.png:/link.png
+
+
+ true
+
+
+
-
diff --git a/qrenderdoc/Windows/ConstantBufferPreviewer.cpp b/qrenderdoc/Windows/ConstantBufferPreviewer.cpp
index cee4048d1..1b1fa2c59 100644
--- a/qrenderdoc/Windows/ConstantBufferPreviewer.cpp
+++ b/qrenderdoc/Windows/ConstantBufferPreviewer.cpp
@@ -158,6 +158,16 @@ void ConstantBufferPreviewer::on_setFormat_toggled(bool checked)
ui->splitter->handle(1)->setEnabled(true);
}
+void ConstantBufferPreviewer::on_resourceDetails_clicked()
+{
+ if(!m_Ctx.HasResourceInspector())
+ m_Ctx.ShowResourceInspector();
+
+ m_Ctx.GetResourceInspector()->Inspect(m_cbuffer);
+
+ ToolWindowManager::raiseToolWindow(m_Ctx.GetResourceInspector()->Widget());
+}
+
void ConstantBufferPreviewer::on_saveCSV_clicked()
{
QString filename = RDDialog::getSaveFileName(this, tr("Export buffer data as CSV"), QString(),
diff --git a/qrenderdoc/Windows/ConstantBufferPreviewer.h b/qrenderdoc/Windows/ConstantBufferPreviewer.h
index 0b61f645a..be0f3edf1 100644
--- a/qrenderdoc/Windows/ConstantBufferPreviewer.h
+++ b/qrenderdoc/Windows/ConstantBufferPreviewer.h
@@ -59,6 +59,7 @@ private slots:
// automatic slots
void on_setFormat_toggled(bool checked);
void on_saveCSV_clicked();
+ void on_resourceDetails_clicked();
// manual slots
void processFormat(const QString &format);
diff --git a/qrenderdoc/Windows/ConstantBufferPreviewer.ui b/qrenderdoc/Windows/ConstantBufferPreviewer.ui
index adace34c4..4b9d39a82 100644
--- a/qrenderdoc/Windows/ConstantBufferPreviewer.ui
+++ b/qrenderdoc/Windows/ConstantBufferPreviewer.ui
@@ -164,6 +164,20 @@
+ -
+
+
+ Open the currently buffer's resource details in the resource inspector
+
+
+
+ :/link.png:/link.png
+
+
+ true
+
+
+
-
diff --git a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp
index e8ded1145..34922fb16 100644
--- a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp
+++ b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp
@@ -221,8 +221,9 @@ D3D11PipelineStateViewer::D3D11PipelineStateViewer(ICaptureContext &ctx,
RDHeaderView *header = new RDHeaderView(Qt::Horizontal, this);
samp->setHeader(header);
- samp->setColumns({tr("Slot"), tr("Addressing"), tr("Filter"), tr("LOD Clamp"), tr("LOD Bias")});
- header->setColumnStretchHints({1, 2, 2, 2, 2});
+ samp->setColumns({tr("Slot"), tr("Sampler"), tr("Addressing"), tr("Filter"), tr("LOD Clamp"),
+ tr("LOD Bias")});
+ header->setColumnStretchHints({2, 1, 4, 4, 4, 4});
samp->setClearSelectionOnFocusLoss(true);
samp->setInstantTooltips(true);
@@ -925,8 +926,7 @@ void D3D11PipelineStateViewer::setShaderState(const D3D11Pipe::Shader &stage, QL
if(shaderInput && !shaderInput->name.empty())
slotname += lit(": ") + shaderInput->name;
- if(!m_Ctx.IsAutogeneratedName(s.Samp))
- slotname += QFormatStr(" = %1").arg(m_Ctx.GetResourceName(s.Samp));
+ QString sampName = m_Ctx.GetResourceName(s.Samp);
QString borderColor = QFormatStr("%1, %2, %3, %4")
.arg(s.BorderColor[0])
@@ -976,7 +976,7 @@ void D3D11PipelineStateViewer::setShaderState(const D3D11Pipe::Shader &stage, QL
filter = QFormatStr(" (%1)").arg(ToQStr(s.Filter.func));
RDTreeWidgetItem *node = new RDTreeWidgetItem(
- {slotname, addressing, filter,
+ {slotname, sampName, addressing, filter,
QFormatStr("%1 - %2")
.arg(s.MinLOD == -FLT_MAX ? lit("0") : QString::number(s.MinLOD))
.arg(s.MaxLOD == FLT_MAX ? lit("FLT_MAX") : QString::number(s.MaxLOD)),
diff --git a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp
index 85e491019..edefed71e 100644
--- a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp
+++ b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp
@@ -1653,7 +1653,7 @@ void GLPipelineStateViewer::setState()
}
if(tex->format.srgbCorrected && !state.m_FB.FramebufferSRGB)
- name += lit(" (GL_FRAMEBUFFER_SRGB = 0)");
+ format += lit(" (GL_FRAMEBUFFER_SRGB = 0)");
}
if(r && (r->Swizzle[0] != TextureSwizzle::Red || r->Swizzle[1] != TextureSwizzle::Green ||
diff --git a/qrenderdoc/Windows/TextureViewer.cpp b/qrenderdoc/Windows/TextureViewer.cpp
index eeed5750f..e845a6266 100644
--- a/qrenderdoc/Windows/TextureViewer.cpp
+++ b/qrenderdoc/Windows/TextureViewer.cpp
@@ -1724,7 +1724,7 @@ void TextureViewer::ViewTexture(ResourceId ID, bool focus)
int idx = textureTabs->indexOf(lockedContainer);
if(idx >= 0)
- textureTabs->setTabIcon(idx, Icons::page_white_link());
+ textureTabs->setTabIcon(idx, Icons::page_go());
else
qCritical() << "Couldn't get tab index of new tab to set icon";
@@ -3290,6 +3290,21 @@ void TextureViewer::on_viewTexBuffer_clicked()
}
}
+void TextureViewer::on_resourceDetails_clicked()
+{
+ TextureDescription *texptr = GetCurrentTexture();
+
+ if(texptr)
+ {
+ if(!m_Ctx.HasResourceInspector())
+ m_Ctx.ShowResourceInspector();
+
+ m_Ctx.GetResourceInspector()->Inspect(texptr->ID);
+
+ ToolWindowManager::raiseToolWindow(m_Ctx.GetResourceInspector()->Widget());
+ }
+}
+
void TextureViewer::on_saveTex_clicked()
{
TextureDescription *texptr = GetCurrentTexture();
diff --git a/qrenderdoc/Windows/TextureViewer.h b/qrenderdoc/Windows/TextureViewer.h
index f9c861862..b3e4fd1da 100644
--- a/qrenderdoc/Windows/TextureViewer.h
+++ b/qrenderdoc/Windows/TextureViewer.h
@@ -161,6 +161,7 @@ private slots:
void on_locationGoto_clicked();
void on_viewTexBuffer_clicked();
+ void on_resourceDetails_clicked();
void on_texListShow_clicked();
void on_saveTex_clicked();
void on_debugPixelContext_clicked();
diff --git a/qrenderdoc/Windows/TextureViewer.ui b/qrenderdoc/Windows/TextureViewer.ui
index c90b1cbcb..83e0c63fe 100644
--- a/qrenderdoc/Windows/TextureViewer.ui
+++ b/qrenderdoc/Windows/TextureViewer.ui
@@ -481,7 +481,7 @@
- :/page_white_link.png:/page_white_link.png
+ :/page_white_stack.png:/page_white_stack.png
true
@@ -522,6 +522,20 @@
+ -
+
+
+ Open the currently visible resource's details in the resource inspector
+
+
+
+ :/link.png:/link.png
+
+
+ true
+
+
+
diff --git a/qrenderdoc/qrenderdoc_local.vcxproj b/qrenderdoc/qrenderdoc_local.vcxproj
index ca94b0f30..d1bc65e80 100644
--- a/qrenderdoc/qrenderdoc_local.vcxproj
+++ b/qrenderdoc/qrenderdoc_local.vcxproj
@@ -1499,10 +1499,13 @@
+
+
+
diff --git a/qrenderdoc/qrenderdoc_local.vcxproj.filters b/qrenderdoc/qrenderdoc_local.vcxproj.filters
index 9955a13f5..506eea91b 100644
--- a/qrenderdoc/qrenderdoc_local.vcxproj.filters
+++ b/qrenderdoc/qrenderdoc_local.vcxproj.filters
@@ -1087,6 +1087,9 @@
Resources\Files
+
+ Resources\Files
+
Resources\Files
@@ -1099,9 +1102,15 @@
Resources\Files
+
+ Resources\Files
+
Resources\Files
+
+ Resources\Files
+
Resources\Files