diff --git a/qrenderdoc/Windows/ShaderViewer.cpp b/qrenderdoc/Windows/ShaderViewer.cpp index 2312e3e46..cb06c8264 100644 --- a/qrenderdoc/Windows/ShaderViewer.cpp +++ b/qrenderdoc/Windows/ShaderViewer.cpp @@ -542,10 +542,10 @@ void ShaderViewer::debugShader(const ShaderBindpointMapping *bind, const ShaderR ui->floatView->hide(); } - if(m_ShaderDetails->debugInfo.files.isEmpty()) + if(!m_ShaderDetails->debugInfo.sourceDebugInformation) { ui->debugToggle->setEnabled(false); - ui->debugToggle->setText(tr("Source Unavailable")); + ui->debugToggle->setText(tr("Source debugging Unavailable")); } ui->debugVars->setColumns({tr("Name"), tr("Value")}); diff --git a/renderdoc/api/replay/shader_types.h b/renderdoc/api/replay/shader_types.h index 9b0f554d7..444256a09 100644 --- a/renderdoc/api/replay/shader_types.h +++ b/renderdoc/api/replay/shader_types.h @@ -1298,6 +1298,10 @@ functionality )"); bool debuggable = true; + DOCUMENT(R"(Indicates whether this shader has debug information to allow source-level debugging. +)"); + bool sourceDebugInformation = false; + DOCUMENT(R"(If :data:`debuggable` is false then this contains a simple explanation of why the shader is not supported for debugging )"); diff --git a/renderdoc/driver/shaders/dxbc/dxbc_reflect.cpp b/renderdoc/driver/shaders/dxbc/dxbc_reflect.cpp index ef3d2c642..5dca11f78 100644 --- a/renderdoc/driver/shaders/dxbc/dxbc_reflect.cpp +++ b/renderdoc/driver/shaders/dxbc/dxbc_reflect.cpp @@ -247,6 +247,8 @@ void MakeShaderReflection(DXBC::DXBCContainer *dxbc, ShaderReflection *refl, refl->debugInfo.encoding = ShaderEncoding::HLSL; + refl->debugInfo.sourceDebugInformation = true; + refl->debugInfo.compileFlags = dxbc->GetDebugInfo()->GetShaderCompileFlags(); refl->debugInfo.files.resize(dxbc->GetDebugInfo()->Files.size());