From 311dcb989b8f3903eea852d9abb3f695872db19c Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 4 Sep 2020 15:02:04 +0100 Subject: [PATCH] Default to D3D11 pipeline state at the last minute * If we default to D3D11 at construction time, if we have persist data (very likely) and it's for another API then we'll have to destroy the D3D11 viewer and recreate the other API's viewer. --- .../Windows/PipelineState/PipelineStateViewer.cpp | 12 ++++++++++-- .../Windows/PipelineState/PipelineStateViewer.h | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp index f6cbc3546..ebc6e1c57 100644 --- a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp @@ -94,8 +94,6 @@ PipelineStateViewer::PipelineStateViewer(ICaptureContext &ctx, QWidget *parent) for(size_t i = 0; i < ARRAY_COUNT(editMenus); i++) editMenus[i] = new QMenu(this); - setToD3D11(); - m_Ctx.AddCaptureViewer(this); } @@ -648,6 +646,16 @@ void PipelineStateViewer::MakeShaderVariablesHLSL(bool cbufferContents, } } +void PipelineStateViewer::showEvent(QShowEvent *event) +{ + // we didn't set any default pipeline state in case it would be overridden by the persist data. + // But if we don't have any persist data and we're about to show, default to D3D11. + if(m_Current == NULL) + { + setToD3D11(); + } +} + QString PipelineStateViewer::GenerateHLSLStub(const ShaderBindpointMapping &bindpointMapping, const ShaderReflection *shaderDetails, const QString &entryFunc) diff --git a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.h b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.h index e672934b5..cccca69d9 100644 --- a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.h +++ b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.h @@ -86,6 +86,8 @@ public slots: void shaderEdit_clicked(); private: + void showEvent(QShowEvent *event) override; + Ui::PipelineStateViewer *ui; ICaptureContext &m_Ctx;