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