Add support for dump_translated_shaders to the Metal backend

Bug: None
Change-Id: Icecbe221970ec10e6497309108dec5ccefc0a944
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/57060
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/dawn_native/metal/ShaderModuleMTL.mm b/src/dawn_native/metal/ShaderModuleMTL.mm
index 382ee86..eddc904 100644
--- a/src/dawn_native/metal/ShaderModuleMTL.mm
+++ b/src/dawn_native/metal/ShaderModuleMTL.mm
@@ -122,9 +122,12 @@
             transformManager.Add<tint::transform::BoundArrayAccessors>();
         }
         transformManager.Add<tint::transform::BindingRemapper>();
-        transformManager.Add<tint::transform::Renamer>();
         transformManager.Add<tint::transform::Msl>();
 
+        if (!GetDevice()->IsToggleEnabled(Toggle::DumpTranslatedShaders)) {
+            transformManager.Add<tint::transform::Renamer>();
+        }
+
         transformInputs.Add<BindingRemapper::Remappings>(std::move(bindingPoints),
                                                          std::move(accessControls),
                                                          /* mayCollide */ true);
@@ -143,7 +146,11 @@
             }
             *remappedEntryPointName = it->second;
         } else {
-            return DAWN_VALIDATION_ERROR("Transform output missing renamer data.");
+            if (GetDevice()->IsToggleEnabled(Toggle::DumpTranslatedShaders)) {
+                *remappedEntryPointName = entryPointName;
+            } else {
+                return DAWN_VALIDATION_ERROR("Transform output missing renamer data.");
+            }
         }
 
         if (auto* data = transformOutputs.Get<tint::transform::Msl::Result>()) {
@@ -312,6 +319,12 @@
 #endif
 )" + msl;
 
+        if (GetDevice()->IsToggleEnabled(Toggle::DumpTranslatedShaders)) {
+            std::ostringstream dumpedMsg;
+            dumpedMsg << "/* Dumped generated MSL */" << std::endl << msl;
+            GetDevice()->EmitLog(WGPULoggingType_Info, dumpedMsg.str().c_str());
+        }
+
         NSRef<NSString> mslSource = AcquireNSRef([[NSString alloc] initWithUTF8String:msl.c_str()]);
 
         auto mtlDevice = ToBackend(GetDevice())->GetMTLDevice();