ShaderModule: Include extra information in shader errors
If the SPIR-V fails to validate, include the SPIR-V disassembly in the error.
If the shader fails to compile, include the shader source in the error.
Change-Id: I05f93b5dec7985c42ddf9cd14621af2a855ee640
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/37282
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/src/dawn_native/ShaderModule.cpp b/src/dawn_native/ShaderModule.cpp
index 98cdfa8..90670af 100644
--- a/src/dawn_native/ShaderModule.cpp
+++ b/src/dawn_native/ShaderModule.cpp
@@ -166,6 +166,12 @@
});
if (!spirvTools.Validate(code, codeSize)) {
+ std::string disassembly;
+ if (spirvTools.Disassemble(std::vector<uint32_t>(code, code + codeSize),
+ &disassembly)) {
+ errorStream << "disassembly:" << std::endl << disassembly;
+ }
+
return DAWN_VALIDATION_ERROR(errorStream.str().c_str());
}
@@ -180,7 +186,9 @@
tint::reader::wgsl::Parser parser(file);
if (!parser.Parse()) {
auto err = tint::diag::Formatter{}.format(parser.diagnostics());
- errorStream << "Parser: " << err << std::endl;
+ errorStream << "Parser: " << err << std::endl
+ << "Shader: " << std::endl
+ << file->content << std::endl;
return DAWN_VALIDATION_ERROR(errorStream.str().c_str());
}