From 82cdd8047cfa0dd178014066df2c3fb14d699979 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 5 Feb 2026 06:45:11 +1300 Subject: [PATCH] Add a UI panel to ShaderViewer to show the shader debug loading log A button toggles the logging panel open/closed --- qrenderdoc/Windows/ShaderViewer.cpp | 35 +++++++++++++++++++++++++++++ qrenderdoc/Windows/ShaderViewer.h | 4 ++++ qrenderdoc/Windows/ShaderViewer.ui | 17 ++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/qrenderdoc/Windows/ShaderViewer.cpp b/qrenderdoc/Windows/ShaderViewer.cpp index 6c120c97b..6d61e1c75 100644 --- a/qrenderdoc/Windows/ShaderViewer.cpp +++ b/qrenderdoc/Windows/ShaderViewer.cpp @@ -455,6 +455,9 @@ void ShaderViewer::editShader(ResourceId id, ShaderStage stage, const QString &e ui->inputSig->hide(); ui->outputSig->hide(); + // hide debug info logging + ui->toggleLog->hide(); + QString title; QWidget *sel = NULL; @@ -6627,6 +6630,38 @@ void ShaderViewer::on_debugToggle_clicked() updateDebugState(); } +void ShaderViewer::on_toggleLog_clicked() +{ + if(m_Scintillas.isEmpty()) + return; + + if(debugInfoLog) + { + ui->docking->removeToolWindow(debugInfoLog); + debugInfoLog = NULL; + return; + } + + debugInfoLog = new QTextEdit(this); + debugInfoLog->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); + debugInfoLog->setWindowTitle(tr("Debug Info Loading Logging")); + debugInfoLog->setFont(Formatter::FixedFont()); + + QString qText; + if(m_ShaderDetails && !m_ShaderDetails->debugInfo.debugInfoLoadingLog.empty()) + qText = m_ShaderDetails->debugInfo.debugInfoLoadingLog; + else + qText = QString::fromUtf8("Debug info loading logging is not available for this shader"); + + debugInfoLog->setText(qText); + + ui->docking->addToolWindow( + debugInfoLog, ToolWindowManager::AreaReference(ToolWindowManager::AddTo, + ui->docking->areaOf(m_Scintillas.back()))); + ui->docking->setToolWindowProperties( + debugInfoLog, ToolWindowManager::HideCloseButton | ToolWindowManager::DisallowFloatWindow); +} + void ShaderViewer::on_resources_sortByStep_clicked() { m_AccessedResourceView = AccessedResourceView::SortByStep; diff --git a/qrenderdoc/Windows/ShaderViewer.h b/qrenderdoc/Windows/ShaderViewer.h index 00fce4428..c171a2bd8 100644 --- a/qrenderdoc/Windows/ShaderViewer.h +++ b/qrenderdoc/Windows/ShaderViewer.h @@ -44,6 +44,7 @@ class QTableWidgetItem; class QKeyEvent; class QMouseEvent; class QComboBox; +class QTextEdit; // from Scintilla typedef intptr_t sptr_t; @@ -189,6 +190,7 @@ private slots: void on_intView_clicked(); void on_floatView_clicked(); void on_debugToggle_clicked(); + void on_toggleLog_clicked(); void on_resources_sortByStep_clicked(); void on_resources_sortByResource_clicked(); @@ -358,6 +360,8 @@ private: static const int BOOKMARK_MAX_MENU_ENTRY_COUNT = 30; // max number of bookmarks listed in menu QMap> m_Bookmarks; + QTextEdit *debugInfoLog = NULL; + static const int CURRENT_MARKER = 0; static const int BREAKPOINT_MARKER = 2; static const int FINISHED_MARKER = 4; diff --git a/qrenderdoc/Windows/ShaderViewer.ui b/qrenderdoc/Windows/ShaderViewer.ui index ad0aee341..039db8b07 100644 --- a/qrenderdoc/Windows/ShaderViewer.ui +++ b/qrenderdoc/Windows/ShaderViewer.ui @@ -299,6 +299,23 @@ 2 + + + + Show/Hide Debug Info Logging Panel + + + + :/information.png:/information.png + + + Qt::ToolButtonTextBesideIcon + + + true + + +