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);