Add codepaths for new tint::transform API

These are guarded by `#if DAWN_USE_NEW_TINT_TRANSFORM_API` preprocessor conditionals, this define will be added to the tint `transform.h` file, atomically switching code paths when the new API lands.

See https://dawn-review.googlesource.com/c/tint/+/34800 for the tint change.

Bug: tint:390
Bug: tint:389
Change-Id: I0f397550f921a46c5bb29b1e71aacfee19ec5dd3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34880
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/dawn_native/ShaderModule.cpp b/src/dawn_native/ShaderModule.cpp
index e7066e2..a63b5cc 100644
--- a/src/dawn_native/ShaderModule.cpp
+++ b/src/dawn_native/ShaderModule.cpp
@@ -271,8 +271,14 @@
 
             tint::transform::Manager transformManager;
             {
+#    if DAWN_USE_NEW_TINT_TRANSFORM_API  // TODO(bclayton) - Remove once API migration is complete
+                auto transform = std::make_unique<tint::transform::VertexPulling>();
+                tint::transform::VertexStateDescriptor state;
+#    else   // DAWN_USE_NEW_TINT_TRANSFORM_API
                 auto transform = std::make_unique<tint::transform::VertexPullingTransform>(&module);
                 auto state = std::make_unique<tint::transform::VertexStateDescriptor>();
+#    endif  // DAWN_USE_NEW_TINT_TRANSFORM_API
+
                 for (uint32_t i = 0; i < vertexState.vertexBufferCount; ++i) {
                     auto& vertexBuffer = vertexState.vertexBuffers[i];
                     tint::transform::VertexBufferLayoutDescriptor layout;
@@ -289,7 +295,11 @@
                         layout.attributes.push_back(std::move(attr));
                     }
 
+#    if DAWN_USE_NEW_TINT_TRANSFORM_API  // TODO(bclayton) - Remove once API migration is complete
+                    state.push_back(std::move(layout));
+#    else   // DAWN_USE_NEW_TINT_TRANSFORM_API
                     state->vertex_buffers.push_back(std::move(layout));
+#    endif  // DAWN_USE_NEW_TINT_TRANSFORM_API
                 }
                 transform->SetVertexState(std::move(state));
                 transform->SetEntryPoint(entryPoint);
@@ -297,10 +307,20 @@
                 transformManager.append(std::move(transform));
             }
 
+#    if DAWN_USE_NEW_TINT_TRANSFORM_API  // TODO(bclayton) - Remove once API migration is complete
+            auto result = transformManager.Run(&module);
+            if (result.diagnostics.contains_errors()) {
+                errorStream << "Vertex pulling transform: "
+                            << tint::diag::Formatter{}.format(result.diagnostics);
+                return DAWN_VALIDATION_ERROR(errorStream.str().c_str());
+            }
+            module = std::move(result.module);
+#    else   // DAWN_USE_NEW_TINT_TRANSFORM_API
             if (!transformManager.Run(&module)) {
                 errorStream << "Vertex pulling transform: " << transformManager.error();
                 return DAWN_VALIDATION_ERROR(errorStream.str().c_str());
             }
+#    endif  // DAWN_USE_NEW_TINT_TRANSFORM_API
 
             tint::TypeDeterminer type_determiner(&module);
             if (!type_determiner.Determine()) {
diff --git a/src/dawn_native/d3d12/ShaderModuleD3D12.cpp b/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
index cd62651..e9d1770 100644
--- a/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
+++ b/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
@@ -221,6 +221,17 @@
             return DAWN_VALIDATION_ERROR(errorStream.str().c_str());
         }
 
+#    if DAWN_USE_NEW_TINT_TRANSFORM_API  // TODO(bclayton) - Remove once API migration is complete
+        tint::transform::Manager transformManager;
+        transformManager.append(std::make_unique<tint::transform::BoundArrayAccessors>());
+        auto result = transformManager.Run(&module);
+        if (result.diagnostics.contains_errors()) {
+            errorStream << "Bound Array Accessors Transform: "
+                        << tint::diag::Formatter{}.format(result.diagnostics);
+            return DAWN_VALIDATION_ERROR(errorStream.str().c_str());
+        }
+        module = std::move(result.module);
+#    else   // DAWN_USE_NEW_TINT_TRANSFORM_API
         tint::transform::Manager transformManager;
         transformManager.append(
             std::make_unique<tint::transform::BoundArrayAccessorsTransform>(&module));
@@ -229,6 +240,7 @@
                         << std::endl;
             return DAWN_VALIDATION_ERROR(errorStream.str().c_str());
         }
+#    endif  // DAWN_USE_NEW_TINT_TRANSFORM_API
 
         ASSERT(remappedEntryPointName != nullptr);
         tint::inspector::Inspector inspector(module);