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>
This commit is contained in:
Corentin Wallez 2021-07-06 14:14:00 +00:00 committed by Dawn LUCI CQ
parent 2583b8d459
commit f78c28dcb7
1 changed files with 15 additions and 2 deletions

View File

@ -122,9 +122,12 @@ namespace dawn_native { namespace metal {
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);
@ -142,9 +145,13 @@ namespace dawn_native { namespace metal {
return DAWN_VALIDATION_ERROR("Could not find remapped name for entry point.");
}
*remappedEntryPointName = it->second;
} else {
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>()) {
*needsStorageBufferLength = data->needs_storage_buffer_sizes;
@ -312,6 +319,12 @@ namespace dawn_native { namespace metal {
#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();