graphite: Dump SPIR-V disassembly with DumpShaders toggle

Use ValidateSpirv to dump the disassembled SPIR-V code passed to
CreateShaderModule.

Bug: 1468848
Change-Id: I954d31cee7ff5bb754feeada9876fc4b2de695a4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/144860
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
diff --git a/src/dawn/native/ShaderModule.cpp b/src/dawn/native/ShaderModule.cpp
index a79dd06..c4635aac 100644
--- a/src/dawn/native/ShaderModule.cpp
+++ b/src/dawn/native/ShaderModule.cpp
@@ -28,6 +28,7 @@
 #include "dawn/native/Pipeline.h"
 #include "dawn/native/PipelineLayout.h"
 #include "dawn/native/RenderPipeline.h"
+#include "dawn/native/SpirvValidation.h"
 #include "dawn/native/TintUtils.h"
 
 #include "tint/tint.h"
@@ -983,6 +984,10 @@
         DAWN_INVALID_IF(device->IsToggleEnabled(Toggle::DisallowSpirv), "SPIR-V is disallowed.");
 
         std::vector<uint32_t> spirv(spirvDesc->code, spirvDesc->code + spirvDesc->codeSize);
+#ifdef DAWN_ENABLE_SPIRV_VALIDATION
+        const bool dumpSpirv = device->IsToggleEnabled(Toggle::DumpShaders);
+        DAWN_TRY(ValidateSpirv(device, spirv.data(), spirv.size(), dumpSpirv));
+#endif
         tint::Program program;
         DAWN_TRY_ASSIGN(program, ParseSPIRV(spirv, outMessages, spirvOptions));
         parseResult->tintProgram = std::make_unique<tint::Program>(std::move(program));