Check result of HLSL generation when useTintIR
When compiling a compute shader, if Generate fails, we'd end up crashing
on accessing `result->workgroup_info`.
Bug: 420743933
Change-Id: Ide64bf29abdbd160703424bdd37324f7dbb61f79
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/244156
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
diff --git a/src/dawn/native/d3d/ShaderUtils.cpp b/src/dawn/native/d3d/ShaderUtils.cpp
index f6e084e..a9b50b9 100644
--- a/src/dawn/native/d3d/ShaderUtils.cpp
+++ b/src/dawn/native/d3d/ShaderUtils.cpp
@@ -331,6 +331,8 @@
SCOPED_DAWN_HISTOGRAM_TIMER_MICROS(tracePlatform.UnsafeGetValue(),
"ShaderModuleGenerateHLSL");
result = tint::hlsl::writer::Generate(ir.Get(), r.tintOptions);
+ DAWN_INVALID_IF(result != tint::Success, "An error occurred while generating HLSL:\n%s",
+ result.Failure().reason);
}
// Workgroup validation has to come after `Generate` because it may require overrides to
@@ -356,11 +358,10 @@
}
result = tint::hlsl::writer::Generate(transformedProgram, r.tintOptions);
+ DAWN_INVALID_IF(result != tint::Success, "An error occurred while generating HLSL:\n%s",
+ result.Failure().reason);
}
- DAWN_INVALID_IF(result != tint::Success, "An error occurred while generating HLSL:\n%s",
- result.Failure().reason);
-
if (r.useTintIR && r.stage == SingleShaderStage::Vertex) {
usesVertexIndex = result->has_vertex_index;
usesInstanceIndex = result->has_instance_index;