D3D: Include error message if FXC/DXC compilation fails.

Bug: 405797531
Change-Id: Ie88214891a8b8f36445b959031ff7c688bf51593
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/232516
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Auto-Submit: Quyen Le <lehoangquyen@chromium.org>
diff --git a/src/dawn/native/d3d/ShaderUtils.cpp b/src/dawn/native/d3d/ShaderUtils.cpp
index 09598a7..6e3c645 100644
--- a/src/dawn/native/d3d/ShaderUtils.cpp
+++ b/src/dawn/native/d3d/ShaderUtils.cpp
@@ -176,7 +176,8 @@
                                          static_cast<char*>(errors->GetBufferPointer()),
                                          hlslSource.c_str());
         }
-        return DAWN_VALIDATION_ERROR("DXC compile failed.");
+        return DAWN_VALIDATION_ERROR("DXC compile failed with: %s.",
+                                     static_cast<char*>(errors->GetBufferPointer()));
     }
 
     ComPtr<IDxcBlob> compiledShader;
@@ -195,11 +196,17 @@
                                entryPointName.c_str(), r.fxcShaderProfile.data(), r.compileFlags, 0,
                                &compiledShader, &errors);
 
-    if (dumpShaders) {
-        DAWN_INVALID_IF(FAILED(result), "FXC compile failed with: %s\n/* Generated HLSL: */\n%s\n",
-                        static_cast<char*>(errors->GetBufferPointer()), hlslSource.c_str());
-    } else {
-        DAWN_INVALID_IF(FAILED(result), "FXC compile failed.");
+    if (FAILED(result)) {
+        const char* resultAsString = HRESULTAsString(result);
+        std::string errorMsg = errors ? static_cast<char*>(errors->GetBufferPointer()) : "";
+        if (dumpShaders) {
+            return DAWN_VALIDATION_ERROR(
+                "FXC compile failed with error: %s msg: %s\n/* Generated HLSL: */\n%s\n",
+                resultAsString, errorMsg, hlslSource.c_str());
+        }
+
+        return DAWN_VALIDATION_ERROR("FXC compile failed with error: %s msg: %s.", resultAsString,
+                                     errorMsg);
     }
 
     return std::move(compiledShader);