[dawn][metal] Pass remapped entry point name to Tint
Have Dawn tell Tint's renamer what entry point name to use when
renaming entry points, instead of reflecting it back from Tint to
Dawn.
This is a prerequisite for moving the Renamer into the backends
completely.
Bug: 375192379
Change-Id: I7e65aec20d65b2b783824a35074b7355cf8805e5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/218139
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/dawn/native/metal/ShaderModuleMTL.mm b/src/dawn/native/metal/ShaderModuleMTL.mm
index 05e99e6..bd5ead5 100644
--- a/src/dawn/native/metal/ShaderModuleMTL.mm
+++ b/src/dawn/native/metal/ShaderModuleMTL.mm
@@ -297,6 +297,7 @@
DAWN_TRY_LOAD_OR_RUN(
mslCompilation, device, std::move(req), MslCompilation::FromBlob,
[](MslCompilationRequest r) -> ResultOrError<MslCompilation> {
+ constexpr char kRemappedEntryPointName[] = "dawn_entry_point";
tint::ast::transform::Manager transformManager;
tint::ast::transform::DataMap transformInputs;
@@ -307,12 +308,13 @@
transformInputs.Add<tint::ast::transform::SingleEntryPoint::Config>(r.entryPointName);
// Needs to run before all other transforms so that they can use builtin names safely.
+ tint::ast::transform::Renamer::Remappings requestedNames = {
+ {r.entryPointName, kRemappedEntryPointName}};
transformManager.Add<tint::ast::transform::Renamer>();
- if (r.disableSymbolRenaming) {
- // We still need to rename MSL reserved keywords
- transformInputs.Add<tint::ast::transform::Renamer::Config>(
- tint::ast::transform::Renamer::Target::kMslKeywords);
- }
+ transformInputs.Add<tint::ast::transform::Renamer::Config>(
+ r.disableSymbolRenaming ? tint::ast::transform::Renamer::Target::kMslKeywords
+ : tint::ast::transform::Renamer::Target::kAll,
+ std::move(requestedNames));
if (r.vertexPullingTransformConfig) {
transformManager.Add<tint::ast::transform::VertexPulling>();
@@ -337,27 +339,11 @@
&transformOutputs, nullptr));
}
- // TODO(dawn:2180): refactor out.
- std::string remappedEntryPointName;
- if (auto* data = transformOutputs.Get<tint::ast::transform::Renamer::Data>()) {
- auto it = data->remappings.find(r.entryPointName);
- if (it != data->remappings.end()) {
- remappedEntryPointName = it->second;
- } else {
- DAWN_INVALID_IF(!r.disableSymbolRenaming,
- "Could not find remapped name for entry point.");
-
- remappedEntryPointName = r.entryPointName;
- }
- } else {
- return DAWN_VALIDATION_ERROR("Transform output missing renamer data.");
- }
-
Extent3D localSize{0, 0, 0};
if (r.stage == SingleShaderStage::Compute) {
// Validate workgroup size after program runs transforms.
DAWN_TRY_ASSIGN(localSize, ValidateComputeStageWorkgroupSize(
- program, remappedEntryPointName.data(), r.limits));
+ program, kRemappedEntryPointName, r.limits));
}
TRACE_EVENT0(r.platform.UnsafeGetValue(), General, "tint::msl::writer::Generate");
@@ -389,10 +375,10 @@
)" + msl;
auto workgroupAllocations =
- std::move(result->workgroup_allocations.at(remappedEntryPointName));
+ std::move(result->workgroup_allocations.at(kRemappedEntryPointName));
return MslCompilation{{
std::move(msl),
- std::move(remappedEntryPointName),
+ std::move(kRemappedEntryPointName),
result->needs_storage_buffer_sizes,
result->has_invariant_attribute,
std::move(workgroupAllocations),