diff --git a/src/dawn/native/opengl/ShaderModuleGL.cpp b/src/dawn/native/opengl/ShaderModuleGL.cpp
index 8e70ff3..d77d19f 100644
--- a/src/dawn/native/opengl/ShaderModuleGL.cpp
+++ b/src/dawn/native/opengl/ShaderModuleGL.cpp
@@ -94,7 +94,6 @@
     X(std::optional<tint::ast::transform::SubstituteOverride::Config>, substituteOverrideConfig) \
     X(LimitsForCompilationRequest, limits)                                                       \
     X(bool, disableSymbolRenaming)                                                               \
-    X(bool, useTintIR)                                                                           \
     X(std::vector<InterstageLocationAndName>, interstageVariables)                               \
     X(std::vector<std::string>, bufferBindingVariables)                                          \
     X(tint::glsl::writer::Options, tintOptions)                                                  \
@@ -480,7 +479,6 @@
     }
 
     req.disableSymbolRenaming = GetDevice()->IsToggleEnabled(Toggle::DisableSymbolRenaming);
-    req.useTintIR = GetDevice()->IsToggleEnabled(Toggle::UseTintIR);
 
     req.interstageVariables = {};
     for (size_t i = 0; i < entryPointMetaData.interStageVariables.size(); i++) {
@@ -575,18 +573,14 @@
             // TODO(crbug.com/356424898): In the long run, we want to move SingleEntryPoint to Tint,
             // but that has interactions with SubstituteOverrides which need to be handled first.
             remappedEntryPoint = "";
-            tint::Result<tint::glsl::writer::Output> result;
-            if (r.useTintIR) {
-                // Convert the AST program to an IR module.
-                auto ir = tint::wgsl::reader::ProgramToLoweredIR(program);
-                DAWN_INVALID_IF(ir != tint::Success,
-                                "An error occurred while generating Tint IR\n%s",
-                                ir.Failure().reason.Str());
 
-                result = tint::glsl::writer::Generate(ir.Get(), r.tintOptions, remappedEntryPoint);
-            } else {
-                result = tint::glsl::writer::Generate(program, r.tintOptions, remappedEntryPoint);
-            }
+            // Convert the AST program to an IR module.
+            auto ir = tint::wgsl::reader::ProgramToLoweredIR(program);
+            DAWN_INVALID_IF(ir != tint::Success, "An error occurred while generating Tint IR\n%s",
+                            ir.Failure().reason.Str());
+
+            // Generate GLSL from Tint IR.
+            auto result = tint::glsl::writer::Generate(ir.Get(), r.tintOptions, remappedEntryPoint);
             DAWN_INVALID_IF(result != tint::Success, "An error occurred while generating GLSL:\n%s",
                             result.Failure().reason.Str());
 
diff --git a/webgpu-cts/compat-expectations.txt b/webgpu-cts/compat-expectations.txt
index bc4a352..f6c67bb 100644
--- a/webgpu-cts/compat-expectations.txt
+++ b/webgpu-cts/compat-expectations.txt
@@ -2669,6 +2669,23 @@
 crbug.com/372198639 [ linux nvidia ] webgpu:api,validation,state,device_lost,destroy:importExternalTexture:sourceType="VideoFrame";awaitLost=true [ RetryOnFailure ]
 crbug.com/372198639 [ android arm ] webgpu:api,validation,state,device_lost,destroy:importExternalTexture:sourceType="VideoElement";awaitLost=false [ RetryOnFailure ]
 
+# Not valid for GLES, need to be skipped in CTS when targeting compat.
+crbug.com/dawn/372654300 webgpu:api,validation,compute_pipeline:resource_compatibility:apiResource="texture_depth_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,compute_pipeline:resource_compatibility:apiResource="texture_float_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,compute_pipeline:resource_compatibility:apiResource="texture_sint_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,compute_pipeline:resource_compatibility:apiResource="texture_uint_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,compute_pipeline:resource_compatibility:apiResource="texture_unfilterable-float_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="fragment";apiResource="texture_depth_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="fragment";apiResource="texture_float_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="fragment";apiResource="texture_sint_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="fragment";apiResource="texture_uint_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="fragment";apiResource="texture_unfilterable-float_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="vertex";apiResource="texture_depth_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="vertex";apiResource="texture_float_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="vertex";apiResource="texture_sint_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="vertex";apiResource="texture_uint_cube-array_false" [ Failure ]
+crbug.com/dawn/372654300 webgpu:api,validation,render_pipeline,resource_compatibility:resource_compatibility:stage="vertex";apiResource="texture_unfilterable-float_cube-array_false" [ Failure ]
+
 ################################################################################
 # New flakes. Please triage - will be discarded/regenerated by the next roll:
 # ##ROLLER_DISCARD_AND_REWRITE##
