ShaderCompiler: Attach source text to SPIR-V for debuggers like RenderDoc

This commit is contained in:
OatmealDome 2021-08-04 21:45:38 -04:00
parent 942545b7fc
commit d453390c48
2 changed files with 18 additions and 4 deletions

View File

@ -203,9 +203,9 @@ void AdvancedWidget::AddDescriptions()
"unchecked.</dolphin_emphasis>"); "unchecked.</dolphin_emphasis>");
static const char TR_VALIDATION_LAYER_DESCRIPTION[] = static const char TR_VALIDATION_LAYER_DESCRIPTION[] =
QT_TR_NOOP("Enables validation of API calls made by the video backend, which may assist in " QT_TR_NOOP("Enables validation of API calls made by the video backend, which may assist in "
"debugging graphical issues. On D3D backends, this also enables debug symbols " "debugging graphical issues. On the Vulkan and D3D backends, this also enables "
"for the compiled shaders.<br><br><dolphin_emphasis>If unsure, leave this " "debug symbols for the compiled shaders.<br><br><dolphin_emphasis>If unsure, "
"unchecked.</dolphin_emphasis>"); "leave this unchecked.</dolphin_emphasis>");
static const char TR_DUMP_TEXTURE_DESCRIPTION[] = static const char TR_DUMP_TEXTURE_DESCRIPTION[] =
QT_TR_NOOP("Dumps decoded game textures based on the other flags to " QT_TR_NOOP("Dumps decoded game textures based on the other flags to "
"User/Dump/Textures/&lt;game_id&gt;/.<br><br><dolphin_emphasis>If unsure, leave " "User/Dump/Textures/&lt;game_id&gt;/.<br><br><dolphin_emphasis>If unsure, leave "

View File

@ -196,7 +196,21 @@ static std::optional<SPIRVCodeVector> CompileShaderToSPV(EShLanguage stage,
SPIRVCodeVector out_code; SPIRVCodeVector out_code;
spv::SpvBuildLogger logger; spv::SpvBuildLogger logger;
glslang::GlslangToSpv(*intermediate, out_code, &logger); glslang::SpvOptions options;
if (g_ActiveConfig.bEnableValidationLayer)
{
// Attach the source code to the SPIR-V for tools like RenderDoc.
intermediate->addSourceText(pass_source_code, pass_source_code_length);
options.generateDebugInfo = true;
options.disableOptimizer = true;
options.optimizeSize = false;
options.disassemble = false;
options.validate = true;
}
glslang::GlslangToSpv(*intermediate, out_code, &logger, &options);
// Write out messages // Write out messages
// Temporary: skip if it contains "Warning, version 450 is not yet complete; most version-specific // Temporary: skip if it contains "Warning, version 450 is not yet complete; most version-specific