diff --git a/src/tests/end2end/BindGroupTests.cpp b/src/tests/end2end/BindGroupTests.cpp
index 7d222bc..b51fc76 100644
--- a/src/tests/end2end/BindGroupTests.cpp
+++ b/src/tests/end2end/BindGroupTests.cpp
@@ -155,9 +155,6 @@
 // It contains a transformation matrix for the VS and the fragment color for the FS.
 // These must result in different register offsets in the native APIs.
 TEST_P(BindGroupTests, ReusedUBO) {
-    // TODO(crbug.com/tint/681): Fails for D3D12 with use_tint_generator
-    DAWN_SKIP_TEST_IF(IsD3D12() && HasToggleEnabled("use_tint_generator"));
-
     utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize);
 
     wgpu::ShaderModule vsModule = utils::CreateShaderModule(device, R"(
@@ -177,9 +174,7 @@
                 vec2<f32>( 1.0, 1.0),
                 vec2<f32>(-1.0, -1.0));
 
-            var transform : mat2x2<f32> = mat2x2<f32>(
-                vec2<f32>(vertexUbo.transform[0], vertexUbo.transform[1]),
-                vec2<f32>(vertexUbo.transform[2], vertexUbo.transform[3]));
+            var transform : mat2x2<f32> = mat2x2<f32>(vertexUbo.transform.xy, vertexUbo.transform.zw);
             Position = vec4<f32>(transform * pos[VertexIndex], 0.0, 1.0);
         })");
 
@@ -242,9 +237,6 @@
 // shader. In D3D12 for example, these different types of bindings end up in different namespaces,
 // but the register offsets used must match between the shader module and descriptor range.
 TEST_P(BindGroupTests, UBOSamplerAndTexture) {
-    // TODO(crbug.com/tint/681): Fails for D3D12 with use_tint_generator
-    DAWN_SKIP_TEST_IF(IsD3D12() && HasToggleEnabled("use_tint_generator"));
-
     utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize);
 
     wgpu::ShaderModule vsModule = utils::CreateShaderModule(device, R"(
@@ -263,9 +255,7 @@
                 vec2<f32>( 1.0, 1.0),
                 vec2<f32>(-1.0, -1.0));
 
-            var transform : mat2x2<f32> = mat2x2<f32>(
-                vec2<f32>(vertexUbo.transform[0], vertexUbo.transform[1]),
-                vec2<f32>(vertexUbo.transform[2], vertexUbo.transform[3]));
+            var transform : mat2x2<f32> = mat2x2<f32>(vertexUbo.transform.xy, vertexUbo.transform.zw);
             Position = vec4<f32>(transform * pos[VertexIndex], 0.0, 1.0);
         })");
 
