diff --git a/include/dawn/platform/DawnPlatform.h b/include/dawn/platform/DawnPlatform.h
index 016de1a..337e759 100644
--- a/include/dawn/platform/DawnPlatform.h
+++ b/include/dawn/platform/DawnPlatform.h
@@ -102,6 +102,7 @@
     kWebGPUUseTintIR,
     kWebGPUUseVulkanMemoryModel,
     kWebGPUEnableRangeAnalysisForRobustness,
+    kWebGPUUseSpirv14,
 };
 
 class DAWN_PLATFORM_EXPORT Platform {
diff --git a/src/dawn/native/ShaderModule.cpp b/src/dawn/native/ShaderModule.cpp
index c22a863..019d892 100644
--- a/src/dawn/native/ShaderModule.cpp
+++ b/src/dawn/native/ShaderModule.cpp
@@ -1410,7 +1410,8 @@
 
 #ifdef DAWN_ENABLE_SPIRV_VALIDATION
         MaybeError validationResult =
-            ValidateSpirv(req.logEmitter.UnsafeGetValue(), spirvCode.data(), spirvCode.size());
+            ValidateSpirv(req.logEmitter.UnsafeGetValue(), spirvCode.data(), spirvCode.size(),
+                          deviceInfo.toggles.Has(Toggle::UseSpirv14));
         // If SpirV validation error occurs, store it into outputParseResult and return.
         if (validationResult.IsError()) {
             outputParseResult.SetValidationError(validationResult.AcquireError());
diff --git a/src/dawn/native/SpirvValidation.cpp b/src/dawn/native/SpirvValidation.cpp
index 3c2d2ce0..263b3e4 100644
--- a/src/dawn/native/SpirvValidation.cpp
+++ b/src/dawn/native/SpirvValidation.cpp
@@ -35,8 +35,11 @@
 
 namespace dawn::native {
 
-MaybeError ValidateSpirv(LogEmitter* logEmitter, const uint32_t* spirv, size_t wordCount) {
-    spvtools::SpirvTools spirvTools(SPV_ENV_VULKAN_1_1);
+MaybeError ValidateSpirv(LogEmitter* logEmitter,
+                         const uint32_t* spirv,
+                         size_t wordCount,
+                         bool spv14) {
+    spvtools::SpirvTools spirvTools(spv14 ? SPV_ENV_VULKAN_1_1_SPIRV_1_4 : SPV_ENV_VULKAN_1_1);
     spirvTools.SetMessageConsumer([logEmitter](spv_message_level_t level, const char*,
                                                const spv_position_t& position,
                                                const char* message) {
@@ -85,7 +88,8 @@
                spvtools::SpirvTools* spirvTools) {
     std::unique_ptr<spvtools::SpirvTools> inplaceSpirvTools;
     if (spirvTools == nullptr) {
-        inplaceSpirvTools = std::make_unique<spvtools::SpirvTools>(SPV_ENV_VULKAN_1_1);
+        // Use the newest environment Dawn supports because disassembly supports older versions.
+        inplaceSpirvTools = std::make_unique<spvtools::SpirvTools>(SPV_ENV_VULKAN_1_1_SPIRV_1_4);
         spirvTools = inplaceSpirvTools.get();
     }
 
diff --git a/src/dawn/native/SpirvValidation.h b/src/dawn/native/SpirvValidation.h
index 9cb703c..e5deccf 100644
--- a/src/dawn/native/SpirvValidation.h
+++ b/src/dawn/native/SpirvValidation.h
@@ -37,7 +37,10 @@
 
 namespace dawn::native {
 
-MaybeError ValidateSpirv(LogEmitter* logEmitter, const uint32_t* spirv, size_t wordCount);
+MaybeError ValidateSpirv(LogEmitter* logEmitter,
+                         const uint32_t* spirv,
+                         size_t wordCount,
+                         bool spv14);
 
 void DumpSpirv(LogEmitter* logEmitter,
                const uint32_t* spirv,
diff --git a/src/dawn/native/Toggles.cpp b/src/dawn/native/Toggles.cpp
index 7ab0247..98bc478 100644
--- a/src/dawn/native/Toggles.cpp
+++ b/src/dawn/native/Toggles.cpp
@@ -660,6 +660,9 @@
       "Compute the range of the index with Integer Range Analysis in the robustness transform and "
       "skip doing index clamping when the out of bound access cannot happen.",
       "https://crbug.com/348701956", ToggleStage::Device}},
+    {Toggle::UseSpirv14,
+     {"use_spirv_1_4", "Use SPIR-V 1.4 if available", "https://crbug.com/422421915",
+      ToggleStage::Device}},
     {Toggle::NoWorkaroundSampleMaskBecomesZeroForAllButLastColorTarget,
      {"no_workaround_sample_mask_becomes_zero_for_all_but_last_color_target",
       "MacOS 12.0+ Intel has a bug where the sample mask is only applied for the last color "
diff --git a/src/dawn/native/Toggles.h b/src/dawn/native/Toggles.h
index 4650c45..6e8707f 100644
--- a/src/dawn/native/Toggles.h
+++ b/src/dawn/native/Toggles.h
@@ -157,6 +157,7 @@
     VulkanDirectVariableAccessTransformHandle,
     VulkanAddWorkToEmptyResolvePass,
     EnableIntegerRangeAnalysisInRobustness,
+    UseSpirv14,
 
     // Unresolved issues.
     NoWorkaroundSampleMaskBecomesZeroForAllButLastColorTarget,
diff --git a/src/dawn/native/vulkan/PhysicalDeviceVk.cpp b/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
index f3d3140..d3dc40e 100644
--- a/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
+++ b/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
@@ -981,6 +981,13 @@
     deviceToggles->Default(
         Toggle::EnableIntegerRangeAnalysisInRobustness,
         platform->IsFeatureEnabled(platform::Features::kWebGPUEnableRangeAnalysisForRobustness));
+
+    if (GetDeviceInfo().HasExt(DeviceExt::Spirv14)) {
+        deviceToggles->Default(Toggle::UseSpirv14,
+                               platform->IsFeatureEnabled(platform::Features::kWebGPUUseSpirv14));
+    } else {
+        deviceToggles->ForceSet(Toggle::UseSpirv14, false);
+    }
 }
 
 ResultOrError<Ref<DeviceBase>> PhysicalDevice::CreateDeviceImpl(
diff --git a/src/dawn/native/vulkan/ShaderModuleVk.cpp b/src/dawn/native/vulkan/ShaderModuleVk.cpp
index b2f44aa..6d5df11 100644
--- a/src/dawn/native/vulkan/ShaderModuleVk.cpp
+++ b/src/dawn/native/vulkan/ShaderModuleVk.cpp
@@ -283,6 +283,9 @@
         GetDevice()->IsToggleEnabled(Toggle::ScalarizeMaxMinClamp);
     req.tintOptions.use_vulkan_memory_model =
         GetDevice()->IsToggleEnabled(Toggle::UseVulkanMemoryModel);
+    req.tintOptions.spirv_version = GetDevice()->IsToggleEnabled(Toggle::UseSpirv14)
+                                        ? tint::spirv::writer::SpvVersion::kSpv14
+                                        : tint::spirv::writer::SpvVersion::kSpv13;
     req.tintOptions.dva_transform_handle =
         GetDevice()->IsToggleEnabled(Toggle::VulkanDirectVariableAccessTransformHandle);
     // Pass matrices to user functions by pointer on Qualcomm devices to workaround a known bug.
@@ -383,7 +386,9 @@
 
 #ifdef DAWN_ENABLE_SPIRV_VALIDATION
     // Validate and if required dump the compiled SPIR-V code.
-    DAWN_TRY(ValidateSpirv(GetDevice(), compilation->spirv.data(), compilation->spirv.size()));
+    const bool spv14 = GetDevice()->IsToggleEnabled(Toggle::UseSpirv14);
+    DAWN_TRY(
+        ValidateSpirv(GetDevice(), compilation->spirv.data(), compilation->spirv.size(), spv14));
     if (GetDevice()->IsToggleEnabled(Toggle::DumpShaders)) {
         DumpSpirv(GetDevice(), compilation->spirv.data(), compilation->spirv.size());
     }
diff --git a/src/dawn/native/vulkan/VulkanExtensions.cpp b/src/dawn/native/vulkan/VulkanExtensions.cpp
index 655fd12..efad9bf 100644
--- a/src/dawn/native/vulkan/VulkanExtensions.cpp
+++ b/src/dawn/native/vulkan/VulkanExtensions.cpp
@@ -171,6 +171,8 @@
      VulkanVersion_1_2},
     {DeviceExt::DrawIndirectCount, "VK_KHR_draw_indirect_count", NeverPromoted},
     {DeviceExt::VulkanMemoryModel, "VK_KHR_vulkan_memory_model", VulkanVersion_1_2},
+    {DeviceExt::ShaderFloatControls, "VK_KHR_shader_float_controls", VulkanVersion_1_2},
+    {DeviceExt::Spirv14, "VK_KHR_spirv_1_4", VulkanVersion_1_2},
 
     {DeviceExt::ShaderIntegerDotProduct, "VK_KHR_shader_integer_dot_product", VulkanVersion_1_3},
     {DeviceExt::ZeroInitializeWorkgroupMemory, "VK_KHR_zero_initialize_workgroup_memory",
@@ -215,7 +217,8 @@
 }
 
 DeviceExtSet EnsureDependencies(const DeviceExtSet& advertisedExts,
-                                const InstanceExtSet& instanceExts) {
+                                const InstanceExtSet& instanceExts,
+                                uint32_t version) {
     // This is very similar to EnsureDependencies for instanceExtSet. See comment there for
     // an explanation of what happens.
     DeviceExtSet visitedSet;
@@ -292,6 +295,8 @@
             case DeviceExt::SubgroupSizeControl:
             case DeviceExt::ShaderSubgroupExtendedTypes:
             case DeviceExt::VulkanMemoryModel:
+            case DeviceExt::CooperativeMatrix:
+            case DeviceExt::ShaderFloatControls:
                 hasDependencies = HasDep(DeviceExt::GetPhysicalDeviceProperties2);
                 break;
 
@@ -335,8 +340,9 @@
                 hasDependencies = HasDep(DeviceExt::Swapchain);
                 break;
 
-            case DeviceExt::CooperativeMatrix:
-                hasDependencies = HasDep(DeviceExt::GetPhysicalDeviceProperties2);
+            case DeviceExt::Spirv14:
+                hasDependencies =
+                    version >= VK_VERSION_1_1 && HasDep(DeviceExt::ShaderFloatControls);
                 break;
 
             case DeviceExt::EnumCount:
diff --git a/src/dawn/native/vulkan/VulkanExtensions.h b/src/dawn/native/vulkan/VulkanExtensions.h
index 8c7f080..4edffd2 100644
--- a/src/dawn/native/vulkan/VulkanExtensions.h
+++ b/src/dawn/native/vulkan/VulkanExtensions.h
@@ -109,6 +109,8 @@
     ShaderSubgroupExtendedTypes,
     DrawIndirectCount,
     VulkanMemoryModel,
+    ShaderFloatControls,
+    Spirv14,
 
     // Promoted to 1.3
     ShaderIntegerDotProduct,
@@ -161,7 +163,8 @@
 // extensions that don't have all their transitive dependencies in advertisedExts or in
 // instanceExts.
 DeviceExtSet EnsureDependencies(const DeviceExtSet& advertisedExts,
-                                const InstanceExtSet& instanceExts);
+                                const InstanceExtSet& instanceExts,
+                                uint32_t version);
 
 // The list of all known Vulkan layers.
 enum class VulkanLayer {
diff --git a/src/dawn/native/vulkan/VulkanInfo.cpp b/src/dawn/native/vulkan/VulkanInfo.cpp
index b41cbf8..e97931a 100644
--- a/src/dawn/native/vulkan/VulkanInfo.cpp
+++ b/src/dawn/native/vulkan/VulkanInfo.cpp
@@ -230,7 +230,8 @@
         }
 
         MarkPromotedExtensions(&info.extensions, info.properties.apiVersion);
-        info.extensions = EnsureDependencies(info.extensions, globalInfo.extensions);
+        info.extensions =
+            EnsureDependencies(info.extensions, globalInfo.extensions, info.properties.apiVersion);
     }
 
     // Gather general and extension features and properties
diff --git a/src/dawn/platform/DawnPlatform.cpp b/src/dawn/platform/DawnPlatform.cpp
index fa30f88..476c31a 100644
--- a/src/dawn/platform/DawnPlatform.cpp
+++ b/src/dawn/platform/DawnPlatform.cpp
@@ -109,6 +109,8 @@
             return false;
         case Features::kWebGPUEnableRangeAnalysisForRobustness:
             return true;
+        case Features::kWebGPUUseSpirv14:
+            return true;
     }
     return false;
 }
