Use C++17 nested namespaces instead of manually nesting them.

This was done with these two commands and a couple manual fixups for
namespaces that had more than one space in the comment in the closing
brace, as well as vulkan_platform.h

git grep -l "namespace .* { namespace " | xargs sed -i "" "s/namespace \(.*\) { namespace /namespace \1::/"
git grep -l "}}  // namespace" | xargs sed -i "" "s%}}  // namespace%}  // namespace%"

Bug: dawn:824
Change-Id: I6f448b820c12fc1004ea5270bf8e1f466b0c0aab
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/75400
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/.clang-format b/.clang-format
index bc75cdc..4d9e9c8 100644
--- a/.clang-format
+++ b/.clang-format
@@ -10,7 +10,6 @@
 ObjCBlockIndentWidth: 4
 AccessModifierOffset: -2
 
-# Nested namespaces are C++17, fake them by compacting namespaces for now.
 CompactNamespaces: true
 
 # This should result in only one indentation level with compacted namespaces
diff --git a/generator/templates/dawn_wire/client/ApiObjects.h b/generator/templates/dawn_wire/client/ApiObjects.h
index bbf9817..b010ad9 100644
--- a/generator/templates/dawn_wire/client/ApiObjects.h
+++ b/generator/templates/dawn_wire/client/ApiObjects.h
@@ -18,7 +18,7 @@
 #include "dawn_wire/ObjectType_autogen.h"
 #include "dawn_wire/client/ObjectBase.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     template <typename T>
     struct ObjectTypeToTypeEnum {
@@ -48,6 +48,6 @@
         };
 
     {% endfor %}
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_APIOBJECTS_AUTOGEN_H_
diff --git a/generator/templates/dawn_wire/client/ApiProcs.cpp b/generator/templates/dawn_wire/client/ApiProcs.cpp
index 71201ec..fae6cc0 100644
--- a/generator/templates/dawn_wire/client/ApiProcs.cpp
+++ b/generator/templates/dawn_wire/client/ApiProcs.cpp
@@ -21,7 +21,7 @@
 #include <string>
 #include <vector>
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     //* Outputs an rvalue that's the number of elements a pointer member points to.
     {% macro member_length(member, accessor) -%}
@@ -175,4 +175,4 @@
     const {{Prefix}}ProcTable& GetProcs() {
         return gProcTable;
     }
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/generator/templates/dawn_wire/client/ClientBase.h b/generator/templates/dawn_wire/client/ClientBase.h
index a915840..4b59b4f 100644
--- a/generator/templates/dawn_wire/client/ClientBase.h
+++ b/generator/templates/dawn_wire/client/ClientBase.h
@@ -20,7 +20,7 @@
 #include "dawn_wire/client/ApiObjects.h"
 #include "dawn_wire/client/ObjectAllocator.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class ClientBase : public ChunkedCommandHandler, public ObjectIdProvider {
       public:
@@ -69,6 +69,6 @@
         {% endfor %}
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_CLIENTBASE_AUTOGEN_H_
diff --git a/generator/templates/dawn_wire/client/ClientHandlers.cpp b/generator/templates/dawn_wire/client/ClientHandlers.cpp
index 13ac79c..25c0b4f 100644
--- a/generator/templates/dawn_wire/client/ClientHandlers.cpp
+++ b/generator/templates/dawn_wire/client/ClientHandlers.cpp
@@ -17,7 +17,7 @@
 
 #include <string>
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
     {% for command in cmd_records["return command"] %}
         bool Client::Handle{{command.name.CamelCase()}}(DeserializeBuffer* deserializeBuffer) {
             Return{{command.name.CamelCase()}}Cmd cmd;
@@ -94,4 +94,4 @@
 
         return commands;
     }
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/generator/templates/dawn_wire/server/ServerBase.h b/generator/templates/dawn_wire/server/ServerBase.h
index eb0aab8..46ef629 100644
--- a/generator/templates/dawn_wire/server/ServerBase.h
+++ b/generator/templates/dawn_wire/server/ServerBase.h
@@ -22,7 +22,7 @@
 #include "dawn_wire/WireDeserializeAllocator.h"
 #include "dawn_wire/server/ObjectStorage.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     class ServerBase : public ChunkedCommandHandler, public ObjectIdResolver {
       public:
@@ -100,6 +100,6 @@
         {% endfor %}
     };
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
 
 #endif  // DAWNWIRE_SERVER_SERVERBASE_H_
diff --git a/generator/templates/dawn_wire/server/ServerDoers.cpp b/generator/templates/dawn_wire/server/ServerDoers.cpp
index a663956..5ccbb5f 100644
--- a/generator/templates/dawn_wire/server/ServerDoers.cpp
+++ b/generator/templates/dawn_wire/server/ServerDoers.cpp
@@ -15,7 +15,7 @@
 #include "common/Assert.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
     //* Implementation of the command doers
     {% for command in cmd_records["command"] %}
         {% set type = command.derived_object %}
@@ -118,4 +118,4 @@
         }
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/generator/templates/dawn_wire/server/ServerHandlers.cpp b/generator/templates/dawn_wire/server/ServerHandlers.cpp
index ea3da6c..b853f6f 100644
--- a/generator/templates/dawn_wire/server/ServerHandlers.cpp
+++ b/generator/templates/dawn_wire/server/ServerHandlers.cpp
@@ -15,7 +15,7 @@
 #include "common/Assert.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
     {% for command in cmd_records["command"] %}
         {% set method = command.derived_method %}
         {% set is_method = method != None %}
@@ -147,4 +147,4 @@
         return commands;
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/generator/templates/opengl/OpenGLFunctionsBase.cpp b/generator/templates/opengl/OpenGLFunctionsBase.cpp
index cc35dad..af76102 100644
--- a/generator/templates/opengl/OpenGLFunctionsBase.cpp
+++ b/generator/templates/opengl/OpenGLFunctionsBase.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_native/opengl/OpenGLFunctionsBase_autogen.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
 template<typename T>
 MaybeError OpenGLFunctionsBase::LoadProc(GetProcAddress getProc, T* memberProc, const char* name) {
@@ -67,4 +67,4 @@
     return {};
 }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/generator/templates/opengl/OpenGLFunctionsBase.h b/generator/templates/opengl/OpenGLFunctionsBase.h
index 2e16563..31272be 100644
--- a/generator/templates/opengl/OpenGLFunctionsBase.h
+++ b/generator/templates/opengl/OpenGLFunctionsBase.h
@@ -18,7 +18,7 @@
 #include "dawn_native/Error.h"
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
     using GetProcAddress = void* (*) (const char*);
 
     struct OpenGLFunctionsBase {
@@ -40,6 +40,6 @@
         MaybeError LoadProc(GetProcAddress getProc, T* memberProc, const char* name);
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif // DAWNNATIVE_OPENGL_OPENGLFUNCTIONSBASE_H_
diff --git a/src/common/vulkan_platform.h b/src/common/vulkan_platform.h
index 9e4ea0c..7011e7b 100644
--- a/src/common/vulkan_platform.h
+++ b/src/common/vulkan_platform.h
@@ -65,7 +65,7 @@
 // One way to get the alignment inside structures of a type is to look at the alignment of it
 // wrapped in a structure. Hence VkSameHandleNativeWrappe
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace detail {
         template <typename T>
@@ -140,17 +140,16 @@
         return reinterpret_cast<HandleType*>(handle);
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object)                                   \
     DAWN_DEFINE_NATIVE_NON_DISPATCHABLE_HANDLE(object)                              \
-    namespace dawn_native { namespace vulkan {                                      \
-            using object = detail::VkHandle<struct VkTag##object, ::object>;        \
-            static_assert(sizeof(object) == sizeof(uint64_t), "");                  \
-            static_assert(alignof(object) == detail::kUint64Alignment, "");         \
-            static_assert(sizeof(object) == sizeof(::object), "");                  \
-            static_assert(alignof(object) == detail::kNativeVkHandleAlignment, ""); \
-        }                                                                           \
+    namespace dawn_native::vulkan {                                      \
+        using object = detail::VkHandle<struct VkTag##object, ::object>;        \
+        static_assert(sizeof(object) == sizeof(uint64_t), "");                  \
+        static_assert(alignof(object) == detail::kUint64Alignment, "");         \
+        static_assert(sizeof(object) == sizeof(::object), "");                  \
+        static_assert(alignof(object) == detail::kNativeVkHandleAlignment, ""); \
     }  // namespace dawn_native::vulkan
 
 // Import additional parts of Vulkan that are supported on our architecture and preemptively include
diff --git a/src/dawn_native/CompilationMessages.h b/src/dawn_native/CompilationMessages.h
index d6edbe9..36db103 100644
--- a/src/dawn_native/CompilationMessages.h
+++ b/src/dawn_native/CompilationMessages.h
@@ -22,10 +22,10 @@
 #include <string>
 #include <vector>
 
-namespace tint { namespace diag {
+namespace tint::diag {
     class Diagnostic;
     class List;
-}}  // namespace tint::diag
+}  // namespace tint::diag
 
 namespace dawn_native {
 
diff --git a/src/dawn_native/d3d12/AdapterD3D12.cpp b/src/dawn_native/d3d12/AdapterD3D12.cpp
index df8ec50..e2182e7 100644
--- a/src/dawn_native/d3d12/AdapterD3D12.cpp
+++ b/src/dawn_native/d3d12/AdapterD3D12.cpp
@@ -24,7 +24,7 @@
 
 #include <sstream>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     Adapter::Adapter(Backend* backend, ComPtr<IDXGIAdapter3> hardwareAdapter)
         : AdapterBase(backend->GetInstance(), wgpu::BackendType::D3D12),
@@ -412,4 +412,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/AdapterD3D12.h b/src/dawn_native/d3d12/AdapterD3D12.h
index 4bb5a02..56b602f 100644
--- a/src/dawn_native/d3d12/AdapterD3D12.h
+++ b/src/dawn_native/d3d12/AdapterD3D12.h
@@ -21,7 +21,7 @@
 #include "dawn_native/d3d12/D3D12Info.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Backend;
 
@@ -61,6 +61,6 @@
         D3D12DeviceInfo mDeviceInfo = {};
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_ADAPTERD3D12_H_
diff --git a/src/dawn_native/d3d12/BackendD3D12.cpp b/src/dawn_native/d3d12/BackendD3D12.cpp
index 22d29c7..71a9ccf 100644
--- a/src/dawn_native/d3d12/BackendD3D12.cpp
+++ b/src/dawn_native/d3d12/BackendD3D12.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/d3d12/D3D12Error.h"
 #include "dawn_native/d3d12/PlatformFunctions.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
 
@@ -207,4 +207,4 @@
         return backend;
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/BackendD3D12.h b/src/dawn_native/d3d12/BackendD3D12.h
index 17f77cc..e41fd7a 100644
--- a/src/dawn_native/d3d12/BackendD3D12.h
+++ b/src/dawn_native/d3d12/BackendD3D12.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class PlatformFunctions;
 
@@ -54,6 +54,6 @@
         ComPtr<IDxcValidator> mDxcValidator;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_BACKENDD3D12_H_
diff --git a/src/dawn_native/d3d12/BindGroupD3D12.cpp b/src/dawn_native/d3d12/BindGroupD3D12.cpp
index 2082240..6c19488 100644
--- a/src/dawn_native/d3d12/BindGroupD3D12.cpp
+++ b/src/dawn_native/d3d12/BindGroupD3D12.cpp
@@ -23,7 +23,7 @@
 #include "dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.h"
 #include "dawn_native/d3d12/TextureD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     // static
     ResultOrError<Ref<BindGroup>> BindGroup::Create(Device* device,
@@ -282,4 +282,4 @@
         return mDynamicStorageBufferLengths;
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/BindGroupD3D12.h b/src/dawn_native/d3d12/BindGroupD3D12.h
index b34b0d4..a0b8c7a 100644
--- a/src/dawn_native/d3d12/BindGroupD3D12.h
+++ b/src/dawn_native/d3d12/BindGroupD3D12.h
@@ -22,7 +22,7 @@
 #include "dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.h"
 #include "dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
     class SamplerHeapCacheEntry;
@@ -63,6 +63,6 @@
 
         DynamicStorageBufferLengths mDynamicStorageBufferLengths;
     };
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_BINDGROUPD3D12_H_
diff --git a/src/dawn_native/d3d12/BindGroupLayoutD3D12.cpp b/src/dawn_native/d3d12/BindGroupLayoutD3D12.cpp
index 761b8f7..527d41c 100644
--- a/src/dawn_native/d3d12/BindGroupLayoutD3D12.cpp
+++ b/src/dawn_native/d3d12/BindGroupLayoutD3D12.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/d3d12/SamplerHeapCacheD3D12.h"
 #include "dawn_native/d3d12/StagingDescriptorAllocatorD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     namespace {
         D3D12_DESCRIPTOR_RANGE_TYPE WGPUBindingInfoToDescriptorRangeType(
             const BindingInfo& bindingInfo) {
@@ -188,4 +188,4 @@
         return mSamplerDescriptorRanges;
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/BindGroupLayoutD3D12.h b/src/dawn_native/d3d12/BindGroupLayoutD3D12.h
index abf6702..377d620 100644
--- a/src/dawn_native/d3d12/BindGroupLayoutD3D12.h
+++ b/src/dawn_native/d3d12/BindGroupLayoutD3D12.h
@@ -21,7 +21,7 @@
 #include "common/ityp_stack_vec.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class BindGroup;
     class CPUDescriptorHeapAllocation;
@@ -89,6 +89,6 @@
         StagingDescriptorAllocator* mViewAllocator = nullptr;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_BINDGROUPLAYOUTD3D12_H_
diff --git a/src/dawn_native/d3d12/BufferD3D12.cpp b/src/dawn_native/d3d12/BufferD3D12.cpp
index a05eec0..4741f79 100644
--- a/src/dawn_native/d3d12/BufferD3D12.cpp
+++ b/src/dawn_native/d3d12/BufferD3D12.cpp
@@ -26,7 +26,7 @@
 #include "dawn_native/d3d12/ResidencyManagerD3D12.h"
 #include "dawn_native/d3d12/UtilsD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         D3D12_RESOURCE_FLAGS D3D12ResourceFlags(wgpu::BufferUsage usage) {
@@ -490,4 +490,4 @@
 
         return {};
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/BufferD3D12.h b/src/dawn_native/d3d12/BufferD3D12.h
index 8e9e01e..c5a7148 100644
--- a/src/dawn_native/d3d12/BufferD3D12.h
+++ b/src/dawn_native/d3d12/BufferD3D12.h
@@ -20,7 +20,7 @@
 #include "dawn_native/d3d12/ResourceHeapAllocationD3D12.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class CommandRecordingContext;
     class Device;
@@ -86,6 +86,6 @@
         void* mMappedData = nullptr;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_BUFFERD3D12_H_
diff --git a/src/dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.cpp b/src/dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.cpp
index d923985..bd71def 100644
--- a/src/dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.cpp
+++ b/src/dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.cpp
@@ -15,7 +15,7 @@
 #include "dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.h"
 #include "dawn_native/Error.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     CPUDescriptorHeapAllocation::CPUDescriptorHeapAllocation(
         D3D12_CPU_DESCRIPTOR_HANDLE baseDescriptor,
@@ -50,4 +50,4 @@
         mBaseDescriptor = {0};
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.h b/src/dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.h
index 51ae2fd..9cff652 100644
--- a/src/dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.h
+++ b/src/dawn_native/d3d12/CPUDescriptorHeapAllocationD3D12.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     // Wrapper for a handle into a CPU-only descriptor heap.
     class CPUDescriptorHeapAllocation {
@@ -42,6 +42,6 @@
         uint32_t mHeapIndex = -1;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_CPUDESCRIPTORHEAPALLOCATION_H_
diff --git a/src/dawn_native/d3d12/CommandAllocatorManager.cpp b/src/dawn_native/d3d12/CommandAllocatorManager.cpp
index c011feb..01891b8 100644
--- a/src/dawn_native/d3d12/CommandAllocatorManager.cpp
+++ b/src/dawn_native/d3d12/CommandAllocatorManager.cpp
@@ -20,7 +20,7 @@
 #include "common/Assert.h"
 #include "common/BitSetIterator.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     CommandAllocatorManager::CommandAllocatorManager(Device* device)
         : device(device), mAllocatorCount(0) {
@@ -69,4 +69,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/CommandAllocatorManager.h b/src/dawn_native/d3d12/CommandAllocatorManager.h
index 3c12395..0ecdada 100644
--- a/src/dawn_native/d3d12/CommandAllocatorManager.h
+++ b/src/dawn_native/d3d12/CommandAllocatorManager.h
@@ -23,7 +23,7 @@
 
 #include <bitset>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -53,6 +53,6 @@
         SerialQueue<ExecutionSerial, IndexedCommandAllocator> mInFlightCommandAllocators;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_COMMANDALLOCATORMANAGER_H_
diff --git a/src/dawn_native/d3d12/CommandBufferD3D12.cpp b/src/dawn_native/d3d12/CommandBufferD3D12.cpp
index aa83abb..5365351 100644
--- a/src/dawn_native/d3d12/CommandBufferD3D12.cpp
+++ b/src/dawn_native/d3d12/CommandBufferD3D12.cpp
@@ -33,7 +33,7 @@
 #include "dawn_native/d3d12/StagingDescriptorAllocatorD3D12.h"
 #include "dawn_native/d3d12/UtilsD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
 
@@ -1649,4 +1649,4 @@
         }
         return {};
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/CommandBufferD3D12.h b/src/dawn_native/d3d12/CommandBufferD3D12.h
index 51dc527..50f28c6 100644
--- a/src/dawn_native/d3d12/CommandBufferD3D12.h
+++ b/src/dawn_native/d3d12/CommandBufferD3D12.h
@@ -22,7 +22,7 @@
     struct BeginRenderPassCmd;
 }  // namespace dawn_native
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class BindGroupStateTracker;
     class CommandRecordingContext;
@@ -52,6 +52,6 @@
                                     const RenderPassBuilder* renderPassBuilder) const;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_COMMANDBUFFERD3D12_H_
diff --git a/src/dawn_native/d3d12/CommandRecordingContext.cpp b/src/dawn_native/d3d12/CommandRecordingContext.cpp
index 8faa46e..ce7c22a 100644
--- a/src/dawn_native/d3d12/CommandRecordingContext.cpp
+++ b/src/dawn_native/d3d12/CommandRecordingContext.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/d3d12/HeapD3D12.h"
 #include "dawn_native/d3d12/ResidencyManagerD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     void CommandRecordingContext::AddToSharedTextureList(Texture* texture) {
         ASSERT(IsOpen());
@@ -123,4 +123,4 @@
         mTempBuffers.emplace_back(tempBuffer);
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/CommandRecordingContext.h b/src/dawn_native/d3d12/CommandRecordingContext.h
index 6c6dc37..75a8350 100644
--- a/src/dawn_native/d3d12/CommandRecordingContext.h
+++ b/src/dawn_native/d3d12/CommandRecordingContext.h
@@ -21,7 +21,7 @@
 
 #include <set>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     class CommandAllocatorManager;
     class Device;
     class Heap;
@@ -53,6 +53,6 @@
 
         std::vector<Ref<Buffer>> mTempBuffers;
     };
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_COMMANDRECORDINGCONTEXT_H_
diff --git a/src/dawn_native/d3d12/ComputePipelineD3D12.cpp b/src/dawn_native/d3d12/ComputePipelineD3D12.cpp
index 82579f3..d50f210 100644
--- a/src/dawn_native/d3d12/ComputePipelineD3D12.cpp
+++ b/src/dawn_native/d3d12/ComputePipelineD3D12.cpp
@@ -22,7 +22,7 @@
 #include "dawn_native/d3d12/ShaderModuleD3D12.h"
 #include "dawn_native/d3d12/UtilsD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     Ref<ComputePipeline> ComputePipeline::CreateUninitialized(
         Device* device,
@@ -102,4 +102,4 @@
         return ToBackend(GetDevice())->GetDispatchIndirectSignature();
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/ComputePipelineD3D12.h b/src/dawn_native/d3d12/ComputePipelineD3D12.h
index ddf7476..3e14217 100644
--- a/src/dawn_native/d3d12/ComputePipelineD3D12.h
+++ b/src/dawn_native/d3d12/ComputePipelineD3D12.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -53,6 +53,6 @@
         ComPtr<ID3D12PipelineState> mPipelineState;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_COMPUTEPIPELINED3D12_H_
diff --git a/src/dawn_native/d3d12/D3D11on12Util.cpp b/src/dawn_native/d3d12/D3D11on12Util.cpp
index b8c28f6..0c526a0 100644
--- a/src/dawn_native/d3d12/D3D11on12Util.cpp
+++ b/src/dawn_native/d3d12/D3D11on12Util.cpp
@@ -21,7 +21,7 @@
 #include "common/Log.h"
 #include "dawn_native/d3d12/DeviceD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     void Flush11On12DeviceToAvoidLeaks(ComPtr<ID3D11On12Device> d3d11on12Device) {
         if (d3d11on12Device == nullptr) {
@@ -161,4 +161,4 @@
         return entry;
     }
 
-}}  // namespace dawn_native::d3d12
\ No newline at end of file
+}  // namespace dawn_native::d3d12
\ No newline at end of file
diff --git a/src/dawn_native/d3d12/D3D11on12Util.h b/src/dawn_native/d3d12/D3D11on12Util.h
index 91db081..ab622f0 100644
--- a/src/dawn_native/d3d12/D3D11on12Util.h
+++ b/src/dawn_native/d3d12/D3D11on12Util.h
@@ -25,7 +25,7 @@
 struct ID3D11On12Device;
 struct IDXGIKeyedMutex;
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     // Wraps 11 wrapped resources in a cache.
     class D3D11on12ResourceCacheEntry : public RefCounted {
@@ -84,6 +84,6 @@
         Cache mCache;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D11ON12UTIL_H_
diff --git a/src/dawn_native/d3d12/D3D12Backend.cpp b/src/dawn_native/d3d12/D3D12Backend.cpp
index 35baa1b..e6ce0f6 100644
--- a/src/dawn_native/d3d12/D3D12Backend.cpp
+++ b/src/dawn_native/d3d12/D3D12Backend.cpp
@@ -26,7 +26,7 @@
 #include "dawn_native/d3d12/ResidencyManagerD3D12.h"
 #include "dawn_native/d3d12/TextureD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     ComPtr<ID3D12Device> GetD3D12Device(WGPUDevice device) {
         return ToBackend(FromAPI(device))->GetD3D12Device();
@@ -178,4 +178,4 @@
     AdapterDiscoveryOptions::AdapterDiscoveryOptions(ComPtr<IDXGIAdapter> adapter)
         : AdapterDiscoveryOptionsBase(WGPUBackendType_D3D12), dxgiAdapter(std::move(adapter)) {
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/D3D12Error.cpp b/src/dawn_native/d3d12/D3D12Error.cpp
index efc9fe0..914ff23 100644
--- a/src/dawn_native/d3d12/D3D12Error.cpp
+++ b/src/dawn_native/d3d12/D3D12Error.cpp
@@ -18,7 +18,7 @@
 #include <sstream>
 #include <string>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     MaybeError CheckHRESULTImpl(HRESULT result, const char* context) {
         if (DAWN_LIKELY(SUCCEEDED(result))) {
             return {};
@@ -48,4 +48,4 @@
         return CheckHRESULTImpl(result, context);
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/D3D12Error.h b/src/dawn_native/d3d12/D3D12Error.h
index ade06fe..6d01c9e 100644
--- a/src/dawn_native/d3d12/D3D12Error.h
+++ b/src/dawn_native/d3d12/D3D12Error.h
@@ -19,7 +19,7 @@
 #include "dawn_native/Error.h"
 #include "dawn_native/ErrorInjector.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     constexpr HRESULT E_FAKE_ERROR_FOR_TESTING = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0xFF);
     constexpr HRESULT E_FAKE_OUTOFMEMORY_ERROR_FOR_TESTING =
@@ -40,6 +40,6 @@
                             E_FAKE_ERROR_FOR_TESTING),                      \
         contextIn)
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_D3D12ERROR_H_
diff --git a/src/dawn_native/d3d12/D3D12Info.cpp b/src/dawn_native/d3d12/D3D12Info.cpp
index d7a0f5e..3f10b11 100644
--- a/src/dawn_native/d3d12/D3D12Info.cpp
+++ b/src/dawn_native/d3d12/D3D12Info.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/d3d12/D3D12Error.h"
 #include "dawn_native/d3d12/PlatformFunctions.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     ResultOrError<D3D12DeviceInfo> GatherDeviceInfo(const Adapter& adapter) {
         D3D12DeviceInfo info = {};
@@ -119,4 +119,4 @@
         return std::move(info);
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/D3D12Info.h b/src/dawn_native/d3d12/D3D12Info.h
index a719595..b8c7c0b 100644
--- a/src/dawn_native/d3d12/D3D12Info.h
+++ b/src/dawn_native/d3d12/D3D12Info.h
@@ -19,7 +19,7 @@
 #include "dawn_native/PerStage.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Adapter;
 
@@ -36,6 +36,6 @@
     };
 
     ResultOrError<D3D12DeviceInfo> GatherDeviceInfo(const Adapter& adapter);
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_D3D12INFO_H_
diff --git a/src/dawn_native/d3d12/DeviceD3D12.cpp b/src/dawn_native/d3d12/DeviceD3D12.cpp
index 94697e2..7dd2a53 100644
--- a/src/dawn_native/d3d12/DeviceD3D12.cpp
+++ b/src/dawn_native/d3d12/DeviceD3D12.cpp
@@ -44,7 +44,7 @@
 
 #include <sstream>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     // TODO(dawn:155): Figure out these values.
     static constexpr uint16_t kShaderVisibleDescriptorHeapSize = 1024;
@@ -742,4 +742,4 @@
         return ToBackend(computePipeline)->UsesNumWorkgroups();
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/DeviceD3D12.h b/src/dawn_native/d3d12/DeviceD3D12.h
index 6036e41..26851d7 100644
--- a/src/dawn_native/d3d12/DeviceD3D12.h
+++ b/src/dawn_native/d3d12/DeviceD3D12.h
@@ -22,7 +22,7 @@
 #include "dawn_native/d3d12/Forward.h"
 #include "dawn_native/d3d12/TextureD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class CommandAllocatorManager;
     class PlatformFunctions;
@@ -261,6 +261,6 @@
         float mTimestampPeriod = 1.0f;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_DEVICED3D12_H_
diff --git a/src/dawn_native/d3d12/Forward.h b/src/dawn_native/d3d12/Forward.h
index 4e5368b..de2b0b4 100644
--- a/src/dawn_native/d3d12/Forward.h
+++ b/src/dawn_native/d3d12/Forward.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/ToBackend.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Adapter;
     class BindGroup;
@@ -64,6 +64,6 @@
         return ToBackendBase<D3D12BackendTraits>(common);
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_FORWARD_H_
diff --git a/src/dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.cpp b/src/dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.cpp
index 939a38c..59288b1 100644
--- a/src/dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.cpp
+++ b/src/dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     GPUDescriptorHeapAllocation::GPUDescriptorHeapAllocation(
         D3D12_GPU_DESCRIPTOR_HANDLE baseDescriptor,
@@ -36,4 +36,4 @@
     HeapVersionID GPUDescriptorHeapAllocation::GetHeapSerial() const {
         return mHeapSerial;
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.h b/src/dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.h
index bdab5be..58b39fe 100644
--- a/src/dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.h
+++ b/src/dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.h
@@ -19,7 +19,7 @@
 #include "dawn_native/d3d12/IntegerTypes.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     // Wrapper for a handle into a GPU-only descriptor heap.
     class GPUDescriptorHeapAllocation {
@@ -39,6 +39,6 @@
         HeapVersionID mHeapSerial = HeapVersionID(0);
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_CPUDESCRIPTORHEAPALLOCATION_H_
diff --git a/src/dawn_native/d3d12/HeapAllocatorD3D12.cpp b/src/dawn_native/d3d12/HeapAllocatorD3D12.cpp
index 2c9f377..bb333e7 100644
--- a/src/dawn_native/d3d12/HeapAllocatorD3D12.cpp
+++ b/src/dawn_native/d3d12/HeapAllocatorD3D12.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/d3d12/HeapD3D12.h"
 #include "dawn_native/d3d12/ResidencyManagerD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     HeapAllocator::HeapAllocator(Device* device,
                                  D3D12_HEAP_TYPE heapType,
@@ -68,4 +68,4 @@
         mDevice->ReferenceUntilUnused(static_cast<Heap*>(heap.get())->GetD3D12Heap());
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/HeapAllocatorD3D12.h b/src/dawn_native/d3d12/HeapAllocatorD3D12.h
index 53254c5..f8e58be 100644
--- a/src/dawn_native/d3d12/HeapAllocatorD3D12.h
+++ b/src/dawn_native/d3d12/HeapAllocatorD3D12.h
@@ -19,7 +19,7 @@
 #include "dawn_native/ResourceHeapAllocator.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -43,6 +43,6 @@
         MemorySegment mMemorySegment;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_HEAPALLOCATORD3D12_H_
diff --git a/src/dawn_native/d3d12/HeapD3D12.cpp b/src/dawn_native/d3d12/HeapD3D12.cpp
index 7bb4e32..d560505 100644
--- a/src/dawn_native/d3d12/HeapD3D12.cpp
+++ b/src/dawn_native/d3d12/HeapD3D12.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_native/d3d12/HeapD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     Heap::Heap(ComPtr<ID3D12Pageable> d3d12Pageable, MemorySegment memorySegment, uint64_t size)
         : Pageable(std::move(d3d12Pageable), memorySegment, size) {
         mD3d12Pageable.As(&mD3d12Heap);
@@ -28,4 +28,4 @@
         return mD3d12Heap.Get();
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/HeapD3D12.h b/src/dawn_native/d3d12/HeapD3D12.h
index b59c644..6b04177 100644
--- a/src/dawn_native/d3d12/HeapD3D12.h
+++ b/src/dawn_native/d3d12/HeapD3D12.h
@@ -19,7 +19,7 @@
 #include "dawn_native/d3d12/PageableD3D12.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -35,6 +35,6 @@
       private:
         ComPtr<ID3D12Heap> mD3d12Heap;
     };
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_HEAPD3D12_H_
diff --git a/src/dawn_native/d3d12/IntegerTypes.h b/src/dawn_native/d3d12/IntegerTypes.h
index 219f392..df00f1e 100644
--- a/src/dawn_native/d3d12/IntegerTypes.h
+++ b/src/dawn_native/d3d12/IntegerTypes.h
@@ -20,7 +20,7 @@
 
 #include <cstdint>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     // An ID used to desambiguate between multiple uses of the same descriptor heap in the
     // BindGroup allocations.
@@ -29,6 +29,6 @@
     // The monotonically increasing serial for external D3D12 mutexes imported in Dawn.
     using ExternalMutexSerial = TypedInteger<struct ExternalMutexSerialT, uint64_t>;
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_INTEGERTYPES_H_
diff --git a/src/dawn_native/d3d12/NativeSwapChainImplD3D12.cpp b/src/dawn_native/d3d12/NativeSwapChainImplD3D12.cpp
index f4ef120..933e44d 100644
--- a/src/dawn_native/d3d12/NativeSwapChainImplD3D12.cpp
+++ b/src/dawn_native/d3d12/NativeSwapChainImplD3D12.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/d3d12/DeviceD3D12.h"
 #include "dawn_native/d3d12/TextureD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         DXGI_USAGE D3D12SwapChainBufferUsage(WGPUTextureUsage allowedUsages) {
@@ -117,4 +117,4 @@
         return wgpu::TextureFormat::RGBA8Unorm;
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/NativeSwapChainImplD3D12.h b/src/dawn_native/d3d12/NativeSwapChainImplD3D12.h
index bb53268..f3f7215 100644
--- a/src/dawn_native/d3d12/NativeSwapChainImplD3D12.h
+++ b/src/dawn_native/d3d12/NativeSwapChainImplD3D12.h
@@ -23,7 +23,7 @@
 
 #include <vector>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -55,6 +55,6 @@
         uint32_t mCurrentBuffer;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_NATIVESWAPCHAINIMPLD3D12_H_
diff --git a/src/dawn_native/d3d12/PageableD3D12.cpp b/src/dawn_native/d3d12/PageableD3D12.cpp
index b171db5..06b8d8b 100644
--- a/src/dawn_native/d3d12/PageableD3D12.cpp
+++ b/src/dawn_native/d3d12/PageableD3D12.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_native/d3d12/PageableD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     Pageable::Pageable(ComPtr<ID3D12Pageable> d3d12Pageable,
                        MemorySegment memorySegment,
                        uint64_t size)
@@ -73,4 +73,4 @@
     bool Pageable::IsResidencyLocked() const {
         return mResidencyLockRefCount != 0;
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/PageableD3D12.h b/src/dawn_native/d3d12/PageableD3D12.h
index fb3a689..0a7a46a 100644
--- a/src/dawn_native/d3d12/PageableD3D12.h
+++ b/src/dawn_native/d3d12/PageableD3D12.h
@@ -20,7 +20,7 @@
 #include "dawn_native/IntegerTypes.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     // This class is used to represent ID3D12Pageable allocations, and also serves as a node within
     // the ResidencyManager's LRU cache. This node is inserted into the LRU-cache when it is first
     // allocated, and any time it is scheduled to be used by the GPU. This node is removed from the
@@ -75,6 +75,6 @@
         uint32_t mResidencyLockRefCount = 0;
         uint64_t mSize = 0;
     };
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif
diff --git a/src/dawn_native/d3d12/PipelineLayoutD3D12.cpp b/src/dawn_native/d3d12/PipelineLayoutD3D12.cpp
index 7d67ac9..bd38998 100644
--- a/src/dawn_native/d3d12/PipelineLayoutD3D12.cpp
+++ b/src/dawn_native/d3d12/PipelineLayoutD3D12.cpp
@@ -24,7 +24,7 @@
 
 using Microsoft::WRL::ComPtr;
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     namespace {
 
         // Reserve register names for internal use. This registers map to bindings in the shader,
@@ -364,4 +364,4 @@
         return mDispatchIndirectCommandSignatureWithNumWorkgroups.Get();
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/PipelineLayoutD3D12.h b/src/dawn_native/d3d12/PipelineLayoutD3D12.h
index 1304f73..2a477b1 100644
--- a/src/dawn_native/d3d12/PipelineLayoutD3D12.h
+++ b/src/dawn_native/d3d12/PipelineLayoutD3D12.h
@@ -21,7 +21,7 @@
 #include "dawn_native/PipelineLayout.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -95,6 +95,6 @@
         ComPtr<ID3D12CommandSignature> mDispatchIndirectCommandSignatureWithNumWorkgroups;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_PIPELINELAYOUTD3D12_H_
diff --git a/src/dawn_native/d3d12/PlatformFunctions.cpp b/src/dawn_native/d3d12/PlatformFunctions.cpp
index 27e6564..c89b392 100644
--- a/src/dawn_native/d3d12/PlatformFunctions.cpp
+++ b/src/dawn_native/d3d12/PlatformFunctions.cpp
@@ -20,7 +20,7 @@
 #include <array>
 #include <sstream>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     namespace {
         // Extract Version from "10.0.{Version}.0" if possible, otherwise return 0.
         uint32_t GetWindowsSDKVersionFromDirectoryName(const char* directoryName) {
@@ -268,4 +268,4 @@
         }
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/PlatformFunctions.h b/src/dawn_native/d3d12/PlatformFunctions.h
index cd88217..be8c48f 100644
--- a/src/dawn_native/d3d12/PlatformFunctions.h
+++ b/src/dawn_native/d3d12/PlatformFunctions.h
@@ -22,7 +22,7 @@
 
 #include <d3dcompiler.h>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     // Loads the functions required from the platform dynamically so that we don't need to rely on
     // them being present in the system. For example linking against d3d12.lib would prevent
@@ -105,6 +105,6 @@
         DynamicLib mPIXEventRuntimeLib;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_PLATFORMFUNCTIONS_H_
diff --git a/src/dawn_native/d3d12/QuerySetD3D12.cpp b/src/dawn_native/d3d12/QuerySetD3D12.cpp
index d6a6180..933b085 100644
--- a/src/dawn_native/d3d12/QuerySetD3D12.cpp
+++ b/src/dawn_native/d3d12/QuerySetD3D12.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/d3d12/DeviceD3D12.h"
 #include "dawn_native/d3d12/UtilsD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         D3D12_QUERY_HEAP_TYPE D3D12QueryHeapType(wgpu::QueryType type) {
@@ -72,4 +72,4 @@
         SetDebugName(ToBackend(GetDevice()), mQueryHeap.Get(), "Dawn_QuerySet", GetLabel());
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/QuerySetD3D12.h b/src/dawn_native/d3d12/QuerySetD3D12.h
index 7058798..c7a2193 100644
--- a/src/dawn_native/d3d12/QuerySetD3D12.h
+++ b/src/dawn_native/d3d12/QuerySetD3D12.h
@@ -18,7 +18,7 @@
 #include "dawn_native/QuerySet.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -41,6 +41,6 @@
         ComPtr<ID3D12QueryHeap> mQueryHeap;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_QUERYSETD3D12_H_
diff --git a/src/dawn_native/d3d12/QueueD3D12.cpp b/src/dawn_native/d3d12/QueueD3D12.cpp
index ca6064d..0bf4edc 100644
--- a/src/dawn_native/d3d12/QueueD3D12.cpp
+++ b/src/dawn_native/d3d12/QueueD3D12.cpp
@@ -24,7 +24,7 @@
 #include "dawn_platform/DawnPlatform.h"
 #include "dawn_platform/tracing/TraceEvent.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     Queue::Queue(Device* device) : QueueBase(device) {
     }
@@ -51,4 +51,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/QueueD3D12.h b/src/dawn_native/d3d12/QueueD3D12.h
index 311c607..446dc1a 100644
--- a/src/dawn_native/d3d12/QueueD3D12.h
+++ b/src/dawn_native/d3d12/QueueD3D12.h
@@ -20,7 +20,7 @@
 #include "dawn_native/d3d12/CommandRecordingContext.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -32,6 +32,6 @@
         MaybeError SubmitImpl(uint32_t commandCount, CommandBufferBase* const* commands) override;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_QUEUED3D12_H_
diff --git a/src/dawn_native/d3d12/RenderPassBuilderD3D12.cpp b/src/dawn_native/d3d12/RenderPassBuilderD3D12.cpp
index 47da954..d63d77e 100644
--- a/src/dawn_native/d3d12/RenderPassBuilderD3D12.cpp
+++ b/src/dawn_native/d3d12/RenderPassBuilderD3D12.cpp
@@ -21,7 +21,7 @@
 
 #include "dawn_native/dawn_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE D3D12BeginningAccessType(wgpu::LoadOp loadOp) {
@@ -235,4 +235,4 @@
             D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS;
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/RenderPassBuilderD3D12.h b/src/dawn_native/d3d12/RenderPassBuilderD3D12.h
index 20f70a4..7fa7c6c 100644
--- a/src/dawn_native/d3d12/RenderPassBuilderD3D12.h
+++ b/src/dawn_native/d3d12/RenderPassBuilderD3D12.h
@@ -24,7 +24,7 @@
 
 #include <array>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class TextureView;
 
@@ -93,6 +93,6 @@
                     kMaxColorAttachments>
             mSubresourceParams;
     };
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_RENDERPASSBUILDERD3D12_H_
diff --git a/src/dawn_native/d3d12/RenderPipelineD3D12.cpp b/src/dawn_native/d3d12/RenderPipelineD3D12.cpp
index 410d36f..c8efa7f 100644
--- a/src/dawn_native/d3d12/RenderPipelineD3D12.cpp
+++ b/src/dawn_native/d3d12/RenderPipelineD3D12.cpp
@@ -27,7 +27,7 @@
 
 #include <d3dcompiler.h>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         DXGI_FORMAT VertexFormatType(wgpu::VertexFormat format) {
@@ -487,4 +487,4 @@
         CreateRenderPipelineAsyncTask::RunAsync(std::move(asyncTask));
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/RenderPipelineD3D12.h b/src/dawn_native/d3d12/RenderPipelineD3D12.h
index 66f0ea6..6ac5a19 100644
--- a/src/dawn_native/d3d12/RenderPipelineD3D12.h
+++ b/src/dawn_native/d3d12/RenderPipelineD3D12.h
@@ -20,7 +20,7 @@
 #include "dawn_native/d3d12/ShaderModuleD3D12.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -57,6 +57,6 @@
         FirstOffsetInfo mFirstOffsetInfo;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_RENDERPIPELINED3D12_H_
diff --git a/src/dawn_native/d3d12/ResidencyManagerD3D12.cpp b/src/dawn_native/d3d12/ResidencyManagerD3D12.cpp
index ffc1e1b..8eea16a 100644
--- a/src/dawn_native/d3d12/ResidencyManagerD3D12.cpp
+++ b/src/dawn_native/d3d12/ResidencyManagerD3D12.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/d3d12/Forward.h"
 #include "dawn_native/d3d12/HeapD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     ResidencyManager::ResidencyManager(Device* device)
         : mDevice(device),
@@ -368,4 +368,4 @@
         }
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/ResidencyManagerD3D12.h b/src/dawn_native/d3d12/ResidencyManagerD3D12.h
index 02fad75..7c10aa5 100644
--- a/src/dawn_native/d3d12/ResidencyManagerD3D12.h
+++ b/src/dawn_native/d3d12/ResidencyManagerD3D12.h
@@ -22,7 +22,7 @@
 
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
     class Heap;
@@ -77,6 +77,6 @@
         VideoMemoryInfo mVideoMemoryInfo = {};
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_RESIDENCYMANAGERD3D12_H_
diff --git a/src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.cpp b/src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.cpp
index 166d59f..832b193 100644
--- a/src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.cpp
+++ b/src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.cpp
@@ -21,7 +21,7 @@
 #include "dawn_native/d3d12/ResidencyManagerD3D12.h"
 #include "dawn_native/d3d12/UtilsD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     namespace {
         MemorySegment GetMemorySegment(Device* device, D3D12_HEAP_TYPE heapType) {
             if (device->GetDeviceInfo().isUMA) {
@@ -407,4 +407,4 @@
         }
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.h b/src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.h
index 7bbf53a..f8ddaac 100644
--- a/src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.h
+++ b/src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.h
@@ -24,7 +24,7 @@
 
 #include <array>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -102,6 +102,6 @@
         SerialQueue<ExecutionSerial, ResourceHeapAllocation> mAllocationsToDelete;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_RESOURCEALLOCATORMANAGERD3D12_H_
diff --git a/src/dawn_native/d3d12/ResourceHeapAllocationD3D12.cpp b/src/dawn_native/d3d12/ResourceHeapAllocationD3D12.cpp
index c7f8c68..514a9b4 100644
--- a/src/dawn_native/d3d12/ResourceHeapAllocationD3D12.cpp
+++ b/src/dawn_native/d3d12/ResourceHeapAllocationD3D12.cpp
@@ -19,7 +19,7 @@
 
 #include <utility>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     ResourceHeapAllocation::ResourceHeapAllocation(const AllocationInfo& info,
                                                    uint64_t offset,
                                                    ComPtr<ID3D12Resource> resource,
@@ -40,4 +40,4 @@
     D3D12_GPU_VIRTUAL_ADDRESS ResourceHeapAllocation::GetGPUPointer() const {
         return mResource->GetGPUVirtualAddress();
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/ResourceHeapAllocationD3D12.h b/src/dawn_native/d3d12/ResourceHeapAllocationD3D12.h
index 7f1fe0a..8c2951d 100644
--- a/src/dawn_native/d3d12/ResourceHeapAllocationD3D12.h
+++ b/src/dawn_native/d3d12/ResourceHeapAllocationD3D12.h
@@ -19,7 +19,7 @@
 #include "dawn_native/ResourceMemoryAllocation.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Heap;
 
@@ -43,6 +43,6 @@
         ComPtr<ID3D12Resource> mResource;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_RESOURCEHEAPALLOCATIOND3D12_H_
diff --git a/src/dawn_native/d3d12/SamplerD3D12.cpp b/src/dawn_native/d3d12/SamplerD3D12.cpp
index 0671cc4..a72dd1d 100644
--- a/src/dawn_native/d3d12/SamplerD3D12.cpp
+++ b/src/dawn_native/d3d12/SamplerD3D12.cpp
@@ -17,7 +17,7 @@
 #include "dawn_native/d3d12/DeviceD3D12.h"
 #include "dawn_native/d3d12/UtilsD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         D3D12_TEXTURE_ADDRESS_MODE AddressMode(wgpu::AddressMode mode) {
@@ -103,4 +103,4 @@
         return mSamplerDesc;
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/SamplerD3D12.h b/src/dawn_native/d3d12/SamplerD3D12.h
index ede374b..f1ad94e 100644
--- a/src/dawn_native/d3d12/SamplerD3D12.h
+++ b/src/dawn_native/d3d12/SamplerD3D12.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -35,6 +35,6 @@
         D3D12_SAMPLER_DESC mSamplerDesc = {};
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_SAMPLERD3D12_H_
diff --git a/src/dawn_native/d3d12/SamplerHeapCacheD3D12.cpp b/src/dawn_native/d3d12/SamplerHeapCacheD3D12.cpp
index d1d6f3f..de8f136 100644
--- a/src/dawn_native/d3d12/SamplerHeapCacheD3D12.cpp
+++ b/src/dawn_native/d3d12/SamplerHeapCacheD3D12.cpp
@@ -24,7 +24,7 @@
 #include "dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.h"
 #include "dawn_native/d3d12/StagingDescriptorAllocatorD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     SamplerHeapCacheEntry::SamplerHeapCacheEntry(std::vector<Sampler*> samplers)
         : mSamplers(std::move(samplers)) {
@@ -163,4 +163,4 @@
                                                          const SamplerHeapCacheEntry* b) const {
         return a->mSamplers == b->mSamplers;
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/SamplerHeapCacheD3D12.h b/src/dawn_native/d3d12/SamplerHeapCacheD3D12.h
index 3e2cf4c..09064f7 100644
--- a/src/dawn_native/d3d12/SamplerHeapCacheD3D12.h
+++ b/src/dawn_native/d3d12/SamplerHeapCacheD3D12.h
@@ -32,7 +32,7 @@
 //
 // The cache is primary needed for the GPU sampler heap, which is much smaller than the view heap
 // and switches incur expensive pipeline flushes.
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class BindGroup;
     class Device;
@@ -102,6 +102,6 @@
         Cache mCache;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_SAMPLERHEAPCACHE_H_
diff --git a/src/dawn_native/d3d12/ShaderModuleD3D12.cpp b/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
index 4515d12..b580a08 100644
--- a/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
+++ b/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
@@ -34,7 +34,7 @@
 #include <sstream>
 #include <unordered_map>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         ResultOrError<uint64_t> GetDXCompilerVersion(ComPtr<IDxcValidator> dxcValidator) {
@@ -828,4 +828,4 @@
         UNREACHABLE();
         return {};
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/ShaderModuleD3D12.h b/src/dawn_native/d3d12/ShaderModuleD3D12.h
index 02c1f8c..9ab5e49 100644
--- a/src/dawn_native/d3d12/ShaderModuleD3D12.h
+++ b/src/dawn_native/d3d12/ShaderModuleD3D12.h
@@ -24,7 +24,7 @@
     struct ProgrammableStage;
 }  // namespace dawn_native
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
     class PipelineLayout;
@@ -64,6 +64,6 @@
         MaybeError Initialize(ShaderModuleParseResult* parseResult);
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_SHADERMODULED3D12_H_
diff --git a/src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.cpp b/src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.cpp
index 916a371..631a02e 100644
--- a/src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.cpp
+++ b/src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/d3d12/GPUDescriptorHeapAllocationD3D12.h"
 #include "dawn_native/d3d12/ResidencyManagerD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     // Limits the min/max heap size to always be some known value for testing.
     // Thresholds should be adjusted (lower == faster) to avoid tests taking too long to complete.
@@ -251,4 +251,4 @@
     ID3D12DescriptorHeap* ShaderVisibleDescriptorHeap::GetD3D12DescriptorHeap() const {
         return mD3d12DescriptorHeap.Get();
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.h b/src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.h
index a315b56..72a207e 100644
--- a/src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.h
+++ b/src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.h
@@ -29,7 +29,7 @@
 // of two states: switched in or out. Only a switched in heap can be bound to the pipeline. If
 // the heap is full, the caller must switch-in a new heap before re-allocating and the old one
 // is returned to the pool.
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
     class GPUDescriptorHeapAllocation;
@@ -100,6 +100,6 @@
         // This is stored on the allocator to avoid extra conversions.
         uint32_t mDescriptorCount = 0;
     };
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_SHADERVISIBLEDESCRIPTORALLOCATOR_H_
diff --git a/src/dawn_native/d3d12/StagingBufferD3D12.cpp b/src/dawn_native/d3d12/StagingBufferD3D12.cpp
index d35622e..46ce9ec 100644
--- a/src/dawn_native/d3d12/StagingBufferD3D12.cpp
+++ b/src/dawn_native/d3d12/StagingBufferD3D12.cpp
@@ -19,7 +19,7 @@
 #include "dawn_native/d3d12/ResidencyManagerD3D12.h"
 #include "dawn_native/d3d12/UtilsD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     StagingBuffer::StagingBuffer(size_t size, Device* device)
         : StagingBufferBase(size), mDevice(device) {
@@ -74,4 +74,4 @@
     ID3D12Resource* StagingBuffer::GetResource() const {
         return mUploadHeap.GetD3D12Resource();
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/StagingBufferD3D12.h b/src/dawn_native/d3d12/StagingBufferD3D12.h
index aafe60d..64c32aba 100644
--- a/src/dawn_native/d3d12/StagingBufferD3D12.h
+++ b/src/dawn_native/d3d12/StagingBufferD3D12.h
@@ -19,7 +19,7 @@
 #include "dawn_native/d3d12/ResourceHeapAllocationD3D12.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -36,6 +36,6 @@
         Device* mDevice;
         ResourceHeapAllocation mUploadHeap;
     };
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_STAGINGBUFFERD3D12_H_
diff --git a/src/dawn_native/d3d12/StagingDescriptorAllocatorD3D12.cpp b/src/dawn_native/d3d12/StagingDescriptorAllocatorD3D12.cpp
index 4a622ac..151d155 100644
--- a/src/dawn_native/d3d12/StagingDescriptorAllocatorD3D12.cpp
+++ b/src/dawn_native/d3d12/StagingDescriptorAllocatorD3D12.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/d3d12/DeviceD3D12.h"
 #include "dawn_native/d3d12/StagingDescriptorAllocatorD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     StagingDescriptorAllocator::StagingDescriptorAllocator(Device* device,
                                                            uint32_t descriptorCount,
@@ -149,4 +149,4 @@
         mAllocationsToDelete.ClearUpTo(completedSerial);
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/StagingDescriptorAllocatorD3D12.h b/src/dawn_native/d3d12/StagingDescriptorAllocatorD3D12.h
index 96c1cfb..3bcaff2 100644
--- a/src/dawn_native/d3d12/StagingDescriptorAllocatorD3D12.h
+++ b/src/dawn_native/d3d12/StagingDescriptorAllocatorD3D12.h
@@ -30,7 +30,7 @@
 // at-least one free block. If no AVAILABLE heap exists, a new heap is created and inserted
 // back into the pool to be immediately used. To deallocate, the block corresponding to the
 // offset is inserted back into the free-list.
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
 
@@ -80,6 +80,6 @@
         SerialQueue<ExecutionSerial, CPUDescriptorHeapAllocation> mAllocationsToDelete;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_STAGINGDESCRIPTORALLOCATOR_H_
diff --git a/src/dawn_native/d3d12/SwapChainD3D12.cpp b/src/dawn_native/d3d12/SwapChainD3D12.cpp
index 4c2dd24..bf8a955 100644
--- a/src/dawn_native/d3d12/SwapChainD3D12.cpp
+++ b/src/dawn_native/d3d12/SwapChainD3D12.cpp
@@ -23,7 +23,7 @@
 
 #include <windows.ui.xaml.media.dxinterop.h>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
     namespace {
 
         uint32_t PresentModeToBufferCount(wgpu::PresentMode mode) {
@@ -374,4 +374,4 @@
         mBuffers.clear();
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/SwapChainD3D12.h b/src/dawn_native/d3d12/SwapChainD3D12.h
index 8b9c8ae..0a77777 100644
--- a/src/dawn_native/d3d12/SwapChainD3D12.h
+++ b/src/dawn_native/d3d12/SwapChainD3D12.h
@@ -20,7 +20,7 @@
 #include "dawn_native/IntegerTypes.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class Device;
     class Texture;
@@ -84,6 +84,6 @@
         Ref<Texture> mApiTexture;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_SWAPCHAIN_D3D12_H_
diff --git a/src/dawn_native/d3d12/TextureCopySplitter.cpp b/src/dawn_native/d3d12/TextureCopySplitter.cpp
index 411cce2..b1d4b73 100644
--- a/src/dawn_native/d3d12/TextureCopySplitter.cpp
+++ b/src/dawn_native/d3d12/TextureCopySplitter.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/Format.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         Origin3D ComputeTexelOffsets(const TexelBlockInfo& blockInfo,
@@ -536,4 +536,4 @@
 
         return copySubresource;
     }
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/TextureCopySplitter.h b/src/dawn_native/d3d12/TextureCopySplitter.h
index 4796ed9..3cb93e2 100644
--- a/src/dawn_native/d3d12/TextureCopySplitter.h
+++ b/src/dawn_native/d3d12/TextureCopySplitter.h
@@ -25,7 +25,7 @@
 
 }  // namespace dawn_native
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     struct TextureCopySubresource {
         static constexpr unsigned int kMaxTextureCopyRegions = 4;
@@ -92,6 +92,6 @@
                                                       uint64_t offset,
                                                       uint32_t bytesPerRow,
                                                       uint32_t rowsPerImage);
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_TEXTURECOPYSPLITTER_H_
diff --git a/src/dawn_native/d3d12/TextureD3D12.cpp b/src/dawn_native/d3d12/TextureD3D12.cpp
index c669b2f..3c8178f 100644
--- a/src/dawn_native/d3d12/TextureD3D12.cpp
+++ b/src/dawn_native/d3d12/TextureD3D12.cpp
@@ -31,7 +31,7 @@
 #include "dawn_native/d3d12/TextureCopySplitter.h"
 #include "dawn_native/d3d12/UtilsD3D12.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     namespace {
         D3D12_RESOURCE_STATES D3D12TextureUsage(wgpu::TextureUsage usage, const Format& format) {
@@ -1377,4 +1377,4 @@
         return uavDesc;
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/TextureD3D12.h b/src/dawn_native/d3d12/TextureD3D12.h
index 4d49d6f..569c355 100644
--- a/src/dawn_native/d3d12/TextureD3D12.h
+++ b/src/dawn_native/d3d12/TextureD3D12.h
@@ -24,7 +24,7 @@
 #include "dawn_native/d3d12/ResourceHeapAllocationD3D12.h"
 #include "dawn_native/d3d12/d3d12_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class CommandRecordingContext;
     class Device;
@@ -159,6 +159,6 @@
 
         D3D12_SHADER_RESOURCE_VIEW_DESC mSrvDesc;
     };
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_TEXTURED3D12_H_
diff --git a/src/dawn_native/d3d12/UtilsD3D12.cpp b/src/dawn_native/d3d12/UtilsD3D12.cpp
index 38479eb..e19bebf 100644
--- a/src/dawn_native/d3d12/UtilsD3D12.cpp
+++ b/src/dawn_native/d3d12/UtilsD3D12.cpp
@@ -23,7 +23,7 @@
 
 #include <stringapiset.h>
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     ResultOrError<std::wstring> ConvertStringToWstring(const char* str) {
         size_t len = strlen(str);
@@ -388,4 +388,4 @@
         object->SetPrivateData(WKPDID_D3DDebugObjectName, objectName.length(), objectName.c_str());
     }
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/d3d12/UtilsD3D12.h b/src/dawn_native/d3d12/UtilsD3D12.h
index 2a3f3d5..8e4520a 100644
--- a/src/dawn_native/d3d12/UtilsD3D12.h
+++ b/src/dawn_native/d3d12/UtilsD3D12.h
@@ -22,7 +22,7 @@
 #include "dawn_native/d3d12/d3d12_platform.h"
 #include "dawn_native/dawn_platform.h"
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     ResultOrError<std::wstring> ConvertStringToWstring(const char* str);
 
@@ -86,6 +86,6 @@
                       const char* prefix,
                       std::string label = "");
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12_UTILSD3D12_H_
diff --git a/src/dawn_native/metal/BackendMTL.h b/src/dawn_native/metal/BackendMTL.h
index 6cffa43..daa8ac2 100644
--- a/src/dawn_native/metal/BackendMTL.h
+++ b/src/dawn_native/metal/BackendMTL.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/BackendConnection.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Backend : public BackendConnection {
       public:
@@ -28,6 +28,6 @@
             const AdapterDiscoveryOptionsBase* optionsBase) override;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_BACKENDMTL_H_
diff --git a/src/dawn_native/metal/BackendMTL.mm b/src/dawn_native/metal/BackendMTL.mm
index ee7e8e0..f6034b5 100644
--- a/src/dawn_native/metal/BackendMTL.mm
+++ b/src/dawn_native/metal/BackendMTL.mm
@@ -31,7 +31,7 @@
 
 #include <vector>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     namespace {
 
@@ -613,4 +613,4 @@
         return new Backend(instance);
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/BindGroupLayoutMTL.h b/src/dawn_native/metal/BindGroupLayoutMTL.h
index 1d2c2a9..9b1771c 100644
--- a/src/dawn_native/metal/BindGroupLayoutMTL.h
+++ b/src/dawn_native/metal/BindGroupLayoutMTL.h
@@ -18,7 +18,7 @@
 #include "common/SlabAllocator.h"
 #include "dawn_native/BindGroupLayout.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class BindGroup;
     class Device;
@@ -41,6 +41,6 @@
         SlabAllocator<BindGroup> mBindGroupAllocator;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_BINDGROUPLAYOUTMTL_H_
diff --git a/src/dawn_native/metal/BindGroupLayoutMTL.mm b/src/dawn_native/metal/BindGroupLayoutMTL.mm
index 5d748c1..b3e7c35 100644
--- a/src/dawn_native/metal/BindGroupLayoutMTL.mm
+++ b/src/dawn_native/metal/BindGroupLayoutMTL.mm
@@ -16,7 +16,7 @@
 
 #include "dawn_native/metal/BindGroupMTL.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     // static
     Ref<BindGroupLayout> BindGroupLayout::Create(
@@ -42,4 +42,4 @@
         mBindGroupAllocator.Deallocate(bindGroup);
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/BindGroupMTL.h b/src/dawn_native/metal/BindGroupMTL.h
index 9c87583..0905664 100644
--- a/src/dawn_native/metal/BindGroupMTL.h
+++ b/src/dawn_native/metal/BindGroupMTL.h
@@ -18,7 +18,7 @@
 #include "common/PlacementAllocated.h"
 #include "dawn_native/BindGroup.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
 
@@ -34,6 +34,6 @@
         void DestroyImpl() override;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_BINDGROUPMTL_H_
diff --git a/src/dawn_native/metal/BindGroupMTL.mm b/src/dawn_native/metal/BindGroupMTL.mm
index bbb5827..c867342 100644
--- a/src/dawn_native/metal/BindGroupMTL.mm
+++ b/src/dawn_native/metal/BindGroupMTL.mm
@@ -16,7 +16,7 @@
 
 #include "dawn_native/metal/BindGroupLayoutMTL.h"
 #include "dawn_native/metal/DeviceMTL.h"
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     BindGroup::BindGroup(Device* device, const BindGroupDescriptor* descriptor)
         : BindGroupBase(this, device, descriptor) {
@@ -34,4 +34,4 @@
         return ToBackend(descriptor->layout)->AllocateBindGroup(device, descriptor);
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/BufferMTL.h b/src/dawn_native/metal/BufferMTL.h
index 61747be..7b6c586 100644
--- a/src/dawn_native/metal/BufferMTL.h
+++ b/src/dawn_native/metal/BufferMTL.h
@@ -21,7 +21,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class CommandRecordingContext;
     class Device;
@@ -62,6 +62,6 @@
         NSPRef<id<MTLBuffer>> mMtlBuffer;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_BUFFERMTL_H_
diff --git a/src/dawn_native/metal/BufferMTL.mm b/src/dawn_native/metal/BufferMTL.mm
index 6907c94..c3a4a98 100644
--- a/src/dawn_native/metal/BufferMTL.mm
+++ b/src/dawn_native/metal/BufferMTL.mm
@@ -21,7 +21,7 @@
 
 #include <limits>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
     // The size of uniform buffer and storage buffer need to be aligned to 16 bytes which is the
     // largest alignment of supported data types
     static constexpr uint32_t kMinUniformOrStorageBufferAlignment = 16u;
@@ -237,4 +237,4 @@
                                            value:clearValue];
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/CommandBufferMTL.h b/src/dawn_native/metal/CommandBufferMTL.h
index 328ac84..eb236a9 100644
--- a/src/dawn_native/metal/CommandBufferMTL.h
+++ b/src/dawn_native/metal/CommandBufferMTL.h
@@ -24,7 +24,7 @@
     class CommandEncoder;
 }
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class CommandRecordingContext;
     class Device;
@@ -64,6 +64,6 @@
                                             uint32_t height);
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_COMMANDBUFFERMTL_H_
diff --git a/src/dawn_native/metal/CommandBufferMTL.mm b/src/dawn_native/metal/CommandBufferMTL.mm
index ec6296d..11e655b 100644
--- a/src/dawn_native/metal/CommandBufferMTL.mm
+++ b/src/dawn_native/metal/CommandBufferMTL.mm
@@ -34,7 +34,7 @@
 
 #include <tint/tint.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     namespace {
 
@@ -1564,4 +1564,4 @@
         UNREACHABLE();
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/CommandRecordingContext.h b/src/dawn_native/metal/CommandRecordingContext.h
index 5189a53..4caeb0f 100644
--- a/src/dawn_native/metal/CommandRecordingContext.h
+++ b/src/dawn_native/metal/CommandRecordingContext.h
@@ -20,7 +20,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     // This class wraps a MTLCommandBuffer and tracks which Metal encoder is open.
     // Only one encoder may be open at a time.
@@ -54,6 +54,6 @@
         bool mUsed = false;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_COMMANDRECORDINGCONTEXT_H_
diff --git a/src/dawn_native/metal/CommandRecordingContext.mm b/src/dawn_native/metal/CommandRecordingContext.mm
index f07c48c..95d7b2e 100644
--- a/src/dawn_native/metal/CommandRecordingContext.mm
+++ b/src/dawn_native/metal/CommandRecordingContext.mm
@@ -16,7 +16,7 @@
 
 #include "common/Assert.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     CommandRecordingContext::CommandRecordingContext() = default;
 
@@ -129,4 +129,4 @@
         mInEncoder = false;
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/ComputePipelineMTL.h b/src/dawn_native/metal/ComputePipelineMTL.h
index 20b2080..64e9356 100644
--- a/src/dawn_native/metal/ComputePipelineMTL.h
+++ b/src/dawn_native/metal/ComputePipelineMTL.h
@@ -21,7 +21,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
 
@@ -48,6 +48,6 @@
         std::vector<uint32_t> mWorkgroupAllocations;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_COMPUTEPIPELINEMTL_H_
diff --git a/src/dawn_native/metal/ComputePipelineMTL.mm b/src/dawn_native/metal/ComputePipelineMTL.mm
index 48d36ae..5041961 100644
--- a/src/dawn_native/metal/ComputePipelineMTL.mm
+++ b/src/dawn_native/metal/ComputePipelineMTL.mm
@@ -19,7 +19,7 @@
 #include "dawn_native/metal/ShaderModuleMTL.h"
 #include "dawn_native/metal/UtilsMetal.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     // static
     Ref<ComputePipeline> ComputePipeline::CreateUninitialized(
@@ -83,4 +83,4 @@
         CreateComputePipelineAsyncTask::RunAsync(std::move(asyncTask));
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/DeviceMTL.h b/src/dawn_native/metal/DeviceMTL.h
index 14c179f..779b726 100644
--- a/src/dawn_native/metal/DeviceMTL.h
+++ b/src/dawn_native/metal/DeviceMTL.h
@@ -30,7 +30,7 @@
 #include <memory>
 #include <mutex>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     namespace {
         struct KalmanInfo;
@@ -149,6 +149,6 @@
         std::unique_ptr<KalmanInfo> mKalmanInfo;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_DEVICEMTL_H_
diff --git a/src/dawn_native/metal/DeviceMTL.mm b/src/dawn_native/metal/DeviceMTL.mm
index f02d096..ccba9d1 100644
--- a/src/dawn_native/metal/DeviceMTL.mm
+++ b/src/dawn_native/metal/DeviceMTL.mm
@@ -40,7 +40,7 @@
 
 #include <type_traits>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     namespace {
 
@@ -503,4 +503,4 @@
         return mTimestampPeriod;
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/Forward.h b/src/dawn_native/metal/Forward.h
index 9481348..5d590b1 100644
--- a/src/dawn_native/metal/Forward.h
+++ b/src/dawn_native/metal/Forward.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/ToBackend.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Adapter;
     class BindGroup;
@@ -63,6 +63,6 @@
         return ToBackendBase<MetalBackendTraits>(common);
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_FORWARD_H_
diff --git a/src/dawn_native/metal/MetalBackend.mm b/src/dawn_native/metal/MetalBackend.mm
index 4d0824d..9289774 100644
--- a/src/dawn_native/metal/MetalBackend.mm
+++ b/src/dawn_native/metal/MetalBackend.mm
@@ -20,7 +20,7 @@
 #include "dawn_native/metal/DeviceMTL.h"
 #include "dawn_native/metal/TextureMTL.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     id<MTLDevice> GetMetalDevice(WGPUDevice device) {
         return ToBackend(FromAPI(device))->GetMTLDevice();
@@ -46,4 +46,4 @@
         ToBackend(FromAPI(device))->WaitForCommandsToBeScheduled();
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/PipelineLayoutMTL.h b/src/dawn_native/metal/PipelineLayoutMTL.h
index ae803e1..9aa4f7b 100644
--- a/src/dawn_native/metal/PipelineLayoutMTL.h
+++ b/src/dawn_native/metal/PipelineLayoutMTL.h
@@ -23,7 +23,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
 
@@ -57,6 +57,6 @@
         PerStage<uint32_t> mBufferBindingCount;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_PIPELINELAYOUTMTL_H_
diff --git a/src/dawn_native/metal/PipelineLayoutMTL.mm b/src/dawn_native/metal/PipelineLayoutMTL.mm
index 4faf5db..ac908ab 100644
--- a/src/dawn_native/metal/PipelineLayoutMTL.mm
+++ b/src/dawn_native/metal/PipelineLayoutMTL.mm
@@ -18,7 +18,7 @@
 #include "dawn_native/BindGroupLayout.h"
 #include "dawn_native/metal/DeviceMTL.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     // static
     Ref<PipelineLayout> PipelineLayout::Create(Device* device,
@@ -79,4 +79,4 @@
         return mBufferBindingCount[stage];
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/QuerySetMTL.h b/src/dawn_native/metal/QuerySetMTL.h
index a7b1ad7..6bde84f 100644
--- a/src/dawn_native/metal/QuerySetMTL.h
+++ b/src/dawn_native/metal/QuerySetMTL.h
@@ -21,7 +21,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
 
@@ -49,6 +49,6 @@
                                                                       ios(14.0)) = nullptr;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_QUERYSETMTL_H_
diff --git a/src/dawn_native/metal/QuerySetMTL.mm b/src/dawn_native/metal/QuerySetMTL.mm
index a8b53af..e92991a 100644
--- a/src/dawn_native/metal/QuerySetMTL.mm
+++ b/src/dawn_native/metal/QuerySetMTL.mm
@@ -18,7 +18,7 @@
 #include "common/Platform.h"
 #include "dawn_native/metal/DeviceMTL.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     namespace {
 
@@ -136,4 +136,4 @@
         }
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/QueueMTL.h b/src/dawn_native/metal/QueueMTL.h
index 38e79ed..b608166 100644
--- a/src/dawn_native/metal/QueueMTL.h
+++ b/src/dawn_native/metal/QueueMTL.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/Queue.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
 
@@ -29,6 +29,6 @@
         MaybeError SubmitImpl(uint32_t commandCount, CommandBufferBase* const* commands) override;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_QUEUEMTL_H_
diff --git a/src/dawn_native/metal/QueueMTL.mm b/src/dawn_native/metal/QueueMTL.mm
index ad1fad6..09cc2ff 100644
--- a/src/dawn_native/metal/QueueMTL.mm
+++ b/src/dawn_native/metal/QueueMTL.mm
@@ -24,7 +24,7 @@
 #include "dawn_platform/DawnPlatform.h"
 #include "dawn_platform/tracing/TraceEvent.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     Queue::Queue(Device* device) : QueueBase(device) {
     }
@@ -45,4 +45,4 @@
         return device->SubmitPendingCommandBuffer();
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/RenderPipelineMTL.h b/src/dawn_native/metal/RenderPipelineMTL.h
index d6bedfa..d4bc69c 100644
--- a/src/dawn_native/metal/RenderPipelineMTL.h
+++ b/src/dawn_native/metal/RenderPipelineMTL.h
@@ -21,7 +21,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
 
@@ -65,6 +65,6 @@
         wgpu::ShaderStage mStagesRequiringStorageBufferLength = wgpu::ShaderStage::None;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_RENDERPIPELINEMTL_H_
diff --git a/src/dawn_native/metal/RenderPipelineMTL.mm b/src/dawn_native/metal/RenderPipelineMTL.mm
index a4ca812..74cf3bd 100644
--- a/src/dawn_native/metal/RenderPipelineMTL.mm
+++ b/src/dawn_native/metal/RenderPipelineMTL.mm
@@ -22,7 +22,7 @@
 #include "dawn_native/metal/TextureMTL.h"
 #include "dawn_native/metal/UtilsMetal.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     namespace {
         MTLVertexFormat VertexFormatType(wgpu::VertexFormat format) {
@@ -503,4 +503,4 @@
         CreateRenderPipelineAsyncTask::RunAsync(std::move(asyncTask));
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/SamplerMTL.h b/src/dawn_native/metal/SamplerMTL.h
index 274ba20..52c4ef0 100644
--- a/src/dawn_native/metal/SamplerMTL.h
+++ b/src/dawn_native/metal/SamplerMTL.h
@@ -21,7 +21,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
 
@@ -39,6 +39,6 @@
         NSPRef<id<MTLSamplerState>> mMtlSamplerState;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_SAMPLERMTL_H_
diff --git a/src/dawn_native/metal/SamplerMTL.mm b/src/dawn_native/metal/SamplerMTL.mm
index 608c6bb..809c793 100644
--- a/src/dawn_native/metal/SamplerMTL.mm
+++ b/src/dawn_native/metal/SamplerMTL.mm
@@ -17,7 +17,7 @@
 #include "dawn_native/metal/DeviceMTL.h"
 #include "dawn_native/metal/UtilsMetal.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     namespace {
         MTLSamplerMinMagFilter FilterModeToMinMagFilter(wgpu::FilterMode mode) {
@@ -103,4 +103,4 @@
         return mMtlSamplerState.Get();
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/ShaderModuleMTL.h b/src/dawn_native/metal/ShaderModuleMTL.h
index e82ffad..9380086 100644
--- a/src/dawn_native/metal/ShaderModuleMTL.h
+++ b/src/dawn_native/metal/ShaderModuleMTL.h
@@ -22,7 +22,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
     class PipelineLayout;
@@ -65,6 +65,6 @@
         MaybeError Initialize(ShaderModuleParseResult* parseResult);
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_SHADERMODULEMTL_H_
diff --git a/src/dawn_native/metal/ShaderModuleMTL.mm b/src/dawn_native/metal/ShaderModuleMTL.mm
index 2c2c0f1..79de704 100644
--- a/src/dawn_native/metal/ShaderModuleMTL.mm
+++ b/src/dawn_native/metal/ShaderModuleMTL.mm
@@ -24,7 +24,7 @@
 
 #include <sstream>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     // static
     ResultOrError<Ref<ShaderModule>> ShaderModule::Create(Device* device,
@@ -257,4 +257,4 @@
 
         return {};
     }
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/StagingBufferMTL.h b/src/dawn_native/metal/StagingBufferMTL.h
index b2d6551..c545b07 100644
--- a/src/dawn_native/metal/StagingBufferMTL.h
+++ b/src/dawn_native/metal/StagingBufferMTL.h
@@ -21,7 +21,7 @@
 
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
 
@@ -37,6 +37,6 @@
         Device* mDevice;
         NSPRef<id<MTLBuffer>> mBuffer;
     };
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_STAGINGBUFFERMETAL_H_
diff --git a/src/dawn_native/metal/StagingBufferMTL.mm b/src/dawn_native/metal/StagingBufferMTL.mm
index af06b35..5ca18e5 100644
--- a/src/dawn_native/metal/StagingBufferMTL.mm
+++ b/src/dawn_native/metal/StagingBufferMTL.mm
@@ -15,7 +15,7 @@
 #include "dawn_native/metal/StagingBufferMTL.h"
 #include "dawn_native/metal/DeviceMTL.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     StagingBuffer::StagingBuffer(size_t size, Device* device)
         : StagingBufferBase(size), mDevice(device) {
@@ -43,4 +43,4 @@
         return mBuffer.Get();
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/SwapChainMTL.h b/src/dawn_native/metal/SwapChainMTL.h
index 3b72163..5513e4f 100644
--- a/src/dawn_native/metal/SwapChainMTL.h
+++ b/src/dawn_native/metal/SwapChainMTL.h
@@ -22,7 +22,7 @@
 @class CAMetalLayer;
 @protocol CAMetalDrawable;
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class Device;
     class Texture;
@@ -62,6 +62,6 @@
         void DetachFromSurfaceImpl() override;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_SWAPCHAINMTL_H_
diff --git a/src/dawn_native/metal/SwapChainMTL.mm b/src/dawn_native/metal/SwapChainMTL.mm
index d932986..8ec989c 100644
--- a/src/dawn_native/metal/SwapChainMTL.mm
+++ b/src/dawn_native/metal/SwapChainMTL.mm
@@ -22,7 +22,7 @@
 
 #import <QuartzCore/CAMetalLayer.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     // OldSwapChain
 
@@ -152,4 +152,4 @@
         }
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/TextureMTL.h b/src/dawn_native/metal/TextureMTL.h
index 8c9a30d..1858167 100644
--- a/src/dawn_native/metal/TextureMTL.h
+++ b/src/dawn_native/metal/TextureMTL.h
@@ -23,7 +23,7 @@
 #include <IOSurface/IOSurfaceRef.h>
 #import <Metal/Metal.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     class CommandRecordingContext;
     class Device;
@@ -91,6 +91,6 @@
         NSPRef<id<MTLTexture>> mMtlTextureView;
     };
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_TEXTUREMTL_H_
diff --git a/src/dawn_native/metal/TextureMTL.mm b/src/dawn_native/metal/TextureMTL.mm
index 496ca10..c166f4f 100644
--- a/src/dawn_native/metal/TextureMTL.mm
+++ b/src/dawn_native/metal/TextureMTL.mm
@@ -25,7 +25,7 @@
 
 #include <CoreVideo/CVPixelBuffer.h>
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     namespace {
         bool UsageNeedsTextureView(wgpu::TextureUsage usage) {
@@ -849,4 +849,4 @@
         ASSERT(mMtlTextureView != nullptr);
         return mMtlTextureView.Get();
     }
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/metal/UtilsMetal.h b/src/dawn_native/metal/UtilsMetal.h
index 3a17c99..8dfb744 100644
--- a/src/dawn_native/metal/UtilsMetal.h
+++ b/src/dawn_native/metal/UtilsMetal.h
@@ -28,7 +28,7 @@
     enum class SingleShaderStage;
 }
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     MTLCompareFunction ToMetalCompareFunction(wgpu::CompareFunction compareFunction);
 
@@ -81,6 +81,6 @@
                                  uint32_t sampleMask = 0xFFFFFFFF,
                                  const RenderPipeline* renderPipeline = nullptr);
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #endif  // DAWNNATIVE_METAL_UTILSMETAL_H_
diff --git a/src/dawn_native/metal/UtilsMetal.mm b/src/dawn_native/metal/UtilsMetal.mm
index 7fc2429..8d163ac 100644
--- a/src/dawn_native/metal/UtilsMetal.mm
+++ b/src/dawn_native/metal/UtilsMetal.mm
@@ -19,7 +19,7 @@
 
 #include "common/Assert.h"
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     MTLCompareFunction ToMetalCompareFunction(wgpu::CompareFunction compareFunction) {
         switch (compareFunction) {
@@ -287,4 +287,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
diff --git a/src/dawn_native/null/DeviceNull.cpp b/src/dawn_native/null/DeviceNull.cpp
index 58a783c..dad3afa 100644
--- a/src/dawn_native/null/DeviceNull.cpp
+++ b/src/dawn_native/null/DeviceNull.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/Instance.h"
 #include "dawn_native/Surface.h"
 
-namespace dawn_native { namespace null {
+namespace dawn_native::null {
 
     // Implementation of pre-Device objects: the null adapter, null backend connection and Connect()
 
@@ -515,4 +515,4 @@
         return 1.0f;
     }
 
-}}  // namespace dawn_native::null
+}  // namespace dawn_native::null
diff --git a/src/dawn_native/null/DeviceNull.h b/src/dawn_native/null/DeviceNull.h
index ef2adfb..b25de26 100644
--- a/src/dawn_native/null/DeviceNull.h
+++ b/src/dawn_native/null/DeviceNull.h
@@ -36,7 +36,7 @@
 #include "dawn_native/ToBackend.h"
 #include "dawn_native/dawn_platform.h"
 
-namespace dawn_native { namespace null {
+namespace dawn_native::null {
 
     class Adapter;
     class BindGroup;
@@ -335,6 +335,6 @@
         std::unique_ptr<uint8_t[]> mBuffer;
     };
 
-}}  // namespace dawn_native::null
+}  // namespace dawn_native::null
 
 #endif  // DAWNNATIVE_NULL_DEVICENULL_H_
diff --git a/src/dawn_native/null/NullBackend.cpp b/src/dawn_native/null/NullBackend.cpp
index a48dcdc..431e149 100644
--- a/src/dawn_native/null/NullBackend.cpp
+++ b/src/dawn_native/null/NullBackend.cpp
@@ -20,7 +20,7 @@
 #include "common/SwapChainUtils.h"
 #include "dawn_native/null/DeviceNull.h"
 
-namespace dawn_native { namespace null {
+namespace dawn_native::null {
 
     DawnSwapChainImplementation CreateNativeSwapChainImpl() {
         DawnSwapChainImplementation impl;
@@ -29,4 +29,4 @@
         return impl;
     }
 
-}}  // namespace dawn_native::null
+}  // namespace dawn_native::null
diff --git a/src/dawn_native/opengl/BackendGL.cpp b/src/dawn_native/opengl/BackendGL.cpp
index 611d258..0c2ee0b 100644
--- a/src/dawn_native/opengl/BackendGL.cpp
+++ b/src/dawn_native/opengl/BackendGL.cpp
@@ -22,7 +22,7 @@
 
 #include <cstring>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     namespace {
 
@@ -303,4 +303,4 @@
         return new Backend(instance, backendType);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/BackendGL.h b/src/dawn_native/opengl/BackendGL.h
index a586a85..02db43f 100644
--- a/src/dawn_native/opengl/BackendGL.h
+++ b/src/dawn_native/opengl/BackendGL.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/BackendConnection.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Backend : public BackendConnection {
       public:
@@ -31,6 +31,6 @@
         bool mCreatedAdapter = false;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_BACKENDGL_H_
diff --git a/src/dawn_native/opengl/BindGroupGL.cpp b/src/dawn_native/opengl/BindGroupGL.cpp
index b77e0ff..3c381f3 100644
--- a/src/dawn_native/opengl/BindGroupGL.cpp
+++ b/src/dawn_native/opengl/BindGroupGL.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/opengl/BindGroupLayoutGL.h"
 #include "dawn_native/opengl/DeviceGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     MaybeError ValidateGLBindGroupDescriptor(const BindGroupDescriptor* descriptor) {
         const BindGroupLayoutBase::BindingMap& bindingMap = descriptor->layout->GetBindingMap();
@@ -62,4 +62,4 @@
         return ToBackend(descriptor->layout)->AllocateBindGroup(device, descriptor);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/BindGroupGL.h b/src/dawn_native/opengl/BindGroupGL.h
index 994795a..6982c49 100644
--- a/src/dawn_native/opengl/BindGroupGL.h
+++ b/src/dawn_native/opengl/BindGroupGL.h
@@ -18,7 +18,7 @@
 #include "common/PlacementAllocated.h"
 #include "dawn_native/BindGroup.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -36,6 +36,6 @@
         void DestroyImpl() override;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_BINDGROUPGL_H_
diff --git a/src/dawn_native/opengl/BindGroupLayoutGL.cpp b/src/dawn_native/opengl/BindGroupLayoutGL.cpp
index d008b1d..df28bc4 100644
--- a/src/dawn_native/opengl/BindGroupLayoutGL.cpp
+++ b/src/dawn_native/opengl/BindGroupLayoutGL.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_native/opengl/BindGroupGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     BindGroupLayout::BindGroupLayout(DeviceBase* device,
                                      const BindGroupLayoutDescriptor* descriptor,
@@ -34,4 +34,4 @@
         mBindGroupAllocator.Deallocate(bindGroup);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/BindGroupLayoutGL.h b/src/dawn_native/opengl/BindGroupLayoutGL.h
index 136bd0a..7e1eb77 100644
--- a/src/dawn_native/opengl/BindGroupLayoutGL.h
+++ b/src/dawn_native/opengl/BindGroupLayoutGL.h
@@ -18,7 +18,7 @@
 #include "common/SlabAllocator.h"
 #include "dawn_native/BindGroupLayout.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class BindGroup;
     class Device;
@@ -37,6 +37,6 @@
         SlabAllocator<BindGroup> mBindGroupAllocator;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_BINDGROUPLAYOUTGL_H_
diff --git a/src/dawn_native/opengl/BufferGL.cpp b/src/dawn_native/opengl/BufferGL.cpp
index a23556b..5e7458e 100644
--- a/src/dawn_native/opengl/BufferGL.cpp
+++ b/src/dawn_native/opengl/BufferGL.cpp
@@ -17,7 +17,7 @@
 #include "dawn_native/CommandBuffer.h"
 #include "dawn_native/opengl/DeviceGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     // Buffer
 
@@ -181,4 +181,4 @@
         mBuffer = 0;
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/BufferGL.h b/src/dawn_native/opengl/BufferGL.h
index 596b229..32cf277 100644
--- a/src/dawn_native/opengl/BufferGL.h
+++ b/src/dawn_native/opengl/BufferGL.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -53,6 +53,6 @@
         void* mMappedData = nullptr;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_BUFFERGL_H_
diff --git a/src/dawn_native/opengl/CommandBufferGL.cpp b/src/dawn_native/opengl/CommandBufferGL.cpp
index e778282..ac1fa15 100644
--- a/src/dawn_native/opengl/CommandBufferGL.cpp
+++ b/src/dawn_native/opengl/CommandBufferGL.cpp
@@ -34,7 +34,7 @@
 
 #include <cstring>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     namespace {
 
@@ -1488,4 +1488,4 @@
         }
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/CommandBufferGL.h b/src/dawn_native/opengl/CommandBufferGL.h
index fde8751..0fd222b 100644
--- a/src/dawn_native/opengl/CommandBufferGL.h
+++ b/src/dawn_native/opengl/CommandBufferGL.h
@@ -21,7 +21,7 @@
     struct BeginRenderPassCmd;
 }  // namespace dawn_native
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
     struct OpenGLFunctions;
@@ -44,6 +44,6 @@
                        const void* data,
                        const TextureDataLayout& dataLayout,
                        const Extent3D& copySize);
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_COMMANDBUFFERGL_H_
diff --git a/src/dawn_native/opengl/ComputePipelineGL.cpp b/src/dawn_native/opengl/ComputePipelineGL.cpp
index 2ee7bb8..0c93f29 100644
--- a/src/dawn_native/opengl/ComputePipelineGL.cpp
+++ b/src/dawn_native/opengl/ComputePipelineGL.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_native/opengl/DeviceGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     // static
     Ref<ComputePipeline> ComputePipeline::CreateUninitialized(
@@ -42,4 +42,4 @@
         PipelineGL::ApplyNow(ToBackend(GetDevice())->gl);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/ComputePipelineGL.h b/src/dawn_native/opengl/ComputePipelineGL.h
index f5646ba..060bd65 100644
--- a/src/dawn_native/opengl/ComputePipelineGL.h
+++ b/src/dawn_native/opengl/ComputePipelineGL.h
@@ -21,7 +21,7 @@
 
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -41,6 +41,6 @@
         void DestroyImpl() override;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_COMPUTEPIPELINEGL_H_
diff --git a/src/dawn_native/opengl/DeviceGL.cpp b/src/dawn_native/opengl/DeviceGL.cpp
index ffaed2b..a562cc6 100644
--- a/src/dawn_native/opengl/DeviceGL.cpp
+++ b/src/dawn_native/opengl/DeviceGL.cpp
@@ -32,7 +32,7 @@
 #include "dawn_native/opengl/SwapChainGL.h"
 #include "dawn_native/opengl/TextureGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     // static
     ResultOrError<Ref<Device>> Device::Create(AdapterBase* adapter,
@@ -312,4 +312,4 @@
         return 1.0f;
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/DeviceGL.h b/src/dawn_native/opengl/DeviceGL.h
index 1bd8f31..66cd785 100644
--- a/src/dawn_native/opengl/DeviceGL.h
+++ b/src/dawn_native/opengl/DeviceGL.h
@@ -33,7 +33,7 @@
 
 typedef void* EGLImage;
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device final : public DeviceBase {
       public:
@@ -126,6 +126,6 @@
         GLFormatTable mFormatTable;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_DEVICEGL_H_
diff --git a/src/dawn_native/opengl/Forward.h b/src/dawn_native/opengl/Forward.h
index 82d0766..fcf6d2c 100644
--- a/src/dawn_native/opengl/Forward.h
+++ b/src/dawn_native/opengl/Forward.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/ToBackend.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Adapter;
     class BindGroup;
@@ -61,6 +61,6 @@
         return ToBackendBase<OpenGLBackendTraits>(common);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_FORWARD_H_
diff --git a/src/dawn_native/opengl/GLFormat.cpp b/src/dawn_native/opengl/GLFormat.cpp
index af28814..4bab9e2 100644
--- a/src/dawn_native/opengl/GLFormat.cpp
+++ b/src/dawn_native/opengl/GLFormat.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_native/opengl/GLFormat.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     GLFormatTable BuildGLFormatTable() {
         GLFormatTable table;
@@ -117,4 +117,4 @@
         return table;
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/GLFormat.h b/src/dawn_native/opengl/GLFormat.h
index 255b17c..b04fa5e 100644
--- a/src/dawn_native/opengl/GLFormat.h
+++ b/src/dawn_native/opengl/GLFormat.h
@@ -18,7 +18,7 @@
 #include "dawn_native/Format.h"
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -37,6 +37,6 @@
     using GLFormatTable = std::array<GLFormat, kKnownFormatCount>;
     GLFormatTable BuildGLFormatTable();
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_GLFORMAT_H_
diff --git a/src/dawn_native/opengl/NativeSwapChainImplGL.cpp b/src/dawn_native/opengl/NativeSwapChainImplGL.cpp
index 330999d..03c9eb0 100644
--- a/src/dawn_native/opengl/NativeSwapChainImplGL.cpp
+++ b/src/dawn_native/opengl/NativeSwapChainImplGL.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_native/opengl/DeviceGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     NativeSwapChainImpl::NativeSwapChainImpl(Device* device,
                                              PresentCallback present,
@@ -85,4 +85,4 @@
         return wgpu::TextureFormat::RGBA8Unorm;
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/NativeSwapChainImplGL.h b/src/dawn_native/opengl/NativeSwapChainImplGL.h
index acda005..ddf2b26 100644
--- a/src/dawn_native/opengl/NativeSwapChainImplGL.h
+++ b/src/dawn_native/opengl/NativeSwapChainImplGL.h
@@ -20,7 +20,7 @@
 #include "dawn_native/dawn_platform.h"
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -53,6 +53,6 @@
         Device* mDevice = nullptr;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_NATIVESWAPCHAINIMPLGL_H_
diff --git a/src/dawn_native/opengl/OpenGLBackend.cpp b/src/dawn_native/opengl/OpenGLBackend.cpp
index 560f3a0..ca46537 100644
--- a/src/dawn_native/opengl/OpenGLBackend.cpp
+++ b/src/dawn_native/opengl/OpenGLBackend.cpp
@@ -21,7 +21,7 @@
 #include "dawn_native/opengl/DeviceGL.h"
 #include "dawn_native/opengl/NativeSwapChainImplGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     AdapterDiscoveryOptions::AdapterDiscoveryOptions()
         : AdapterDiscoveryOptionsBase(WGPUBackendType_OpenGL) {
@@ -62,4 +62,4 @@
         return ToAPI(texture);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/OpenGLFunctions.cpp b/src/dawn_native/opengl/OpenGLFunctions.cpp
index 472fa5b..05e5014 100644
--- a/src/dawn_native/opengl/OpenGLFunctions.cpp
+++ b/src/dawn_native/opengl/OpenGLFunctions.cpp
@@ -16,7 +16,7 @@
 
 #include <cctype>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     MaybeError OpenGLFunctions::Initialize(GetProcAddress getProc) {
         DAWN_TRY(mVersion.Initialize(getProc));
@@ -58,4 +58,4 @@
         return mVersion.IsES() && mVersion.IsAtLeast(majorVersion, minorVersion);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/OpenGLFunctions.h b/src/dawn_native/opengl/OpenGLFunctions.h
index 69180b4..ff728a6 100644
--- a/src/dawn_native/opengl/OpenGLFunctions.h
+++ b/src/dawn_native/opengl/OpenGLFunctions.h
@@ -20,7 +20,7 @@
 #include "dawn_native/opengl/OpenGLFunctionsBase_autogen.h"
 #include "dawn_native/opengl/OpenGLVersion.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     struct OpenGLFunctions : OpenGLFunctionsBase {
       public:
@@ -40,6 +40,6 @@
         std::unordered_set<std::string> mSupportedGLExtensionsSet;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_OPENGLFUNCTIONS_H_
diff --git a/src/dawn_native/opengl/OpenGLVersion.cpp b/src/dawn_native/opengl/OpenGLVersion.cpp
index edb6adf..a97ba5d 100644
--- a/src/dawn_native/opengl/OpenGLVersion.cpp
+++ b/src/dawn_native/opengl/OpenGLVersion.cpp
@@ -17,7 +17,7 @@
 #include <cctype>
 #include <tuple>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     MaybeError OpenGLVersion::Initialize(GetProcAddress getProc) {
         PFNGLGETSTRINGPROC getString = reinterpret_cast<PFNGLGETSTRINGPROC>(getProc("glGetString"));
@@ -73,4 +73,4 @@
         return std::tie(mMajorVersion, mMinorVersion) >= std::tie(majorVersion, minorVersion);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/OpenGLVersion.h b/src/dawn_native/opengl/OpenGLVersion.h
index 88ddd50..295e771 100644
--- a/src/dawn_native/opengl/OpenGLVersion.h
+++ b/src/dawn_native/opengl/OpenGLVersion.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/opengl/OpenGLFunctionsBase_autogen.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     struct OpenGLVersion {
       public:
@@ -39,6 +39,6 @@
         Standard mStandard;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_OPENGLVERSION_H_
diff --git a/src/dawn_native/opengl/PersistentPipelineStateGL.cpp b/src/dawn_native/opengl/PersistentPipelineStateGL.cpp
index a37bb67..edbffd0 100644
--- a/src/dawn_native/opengl/PersistentPipelineStateGL.cpp
+++ b/src/dawn_native/opengl/PersistentPipelineStateGL.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_native/opengl/OpenGLFunctions.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     void PersistentPipelineState::SetDefaultState(const OpenGLFunctions& gl) {
         CallGLStencilFunc(gl);
@@ -55,4 +55,4 @@
                                mStencilReadMask);
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/PersistentPipelineStateGL.h b/src/dawn_native/opengl/PersistentPipelineStateGL.h
index c98ec15..553d07a 100644
--- a/src/dawn_native/opengl/PersistentPipelineStateGL.h
+++ b/src/dawn_native/opengl/PersistentPipelineStateGL.h
@@ -18,7 +18,7 @@
 #include "dawn_native/dawn_platform.h"
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     struct OpenGLFunctions;
 
@@ -40,6 +40,6 @@
         GLuint mStencilReference = 0;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_PERSISTENTPIPELINESTATEGL_H_
diff --git a/src/dawn_native/opengl/PipelineGL.cpp b/src/dawn_native/opengl/PipelineGL.cpp
index 614a125..21f522c 100644
--- a/src/dawn_native/opengl/PipelineGL.cpp
+++ b/src/dawn_native/opengl/PipelineGL.cpp
@@ -27,7 +27,7 @@
 #include <set>
 #include <sstream>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     namespace {
 
@@ -215,4 +215,4 @@
         }
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/PipelineGL.h b/src/dawn_native/opengl/PipelineGL.h
index be6c1dd..6199e6ec 100644
--- a/src/dawn_native/opengl/PipelineGL.h
+++ b/src/dawn_native/opengl/PipelineGL.h
@@ -26,7 +26,7 @@
     struct ProgrammableStage;
 }  // namespace dawn_native
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     struct OpenGLFunctions;
     class PipelineLayout;
@@ -64,6 +64,6 @@
         Ref<Sampler> mDummySampler;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_PIPELINEGL_H_
diff --git a/src/dawn_native/opengl/PipelineLayoutGL.cpp b/src/dawn_native/opengl/PipelineLayoutGL.cpp
index a1742a5..9c8fffa 100644
--- a/src/dawn_native/opengl/PipelineLayoutGL.cpp
+++ b/src/dawn_native/opengl/PipelineLayoutGL.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/BindGroupLayout.h"
 #include "dawn_native/opengl/DeviceGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     PipelineLayout::PipelineLayout(Device* device, const PipelineLayoutDescriptor* descriptor)
         : PipelineLayoutBase(device, descriptor) {
@@ -92,4 +92,4 @@
         return mNumSampledTextures;
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/PipelineLayoutGL.h b/src/dawn_native/opengl/PipelineLayoutGL.h
index eeff718..2386fe2 100644
--- a/src/dawn_native/opengl/PipelineLayoutGL.h
+++ b/src/dawn_native/opengl/PipelineLayoutGL.h
@@ -22,7 +22,7 @@
 #include "dawn_native/BindingInfo.h"
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -45,6 +45,6 @@
         size_t mNumSampledTextures;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_PIPELINELAYOUTGL_H_
diff --git a/src/dawn_native/opengl/QuerySetGL.cpp b/src/dawn_native/opengl/QuerySetGL.cpp
index 2f71291..3d701d4 100644
--- a/src/dawn_native/opengl/QuerySetGL.cpp
+++ b/src/dawn_native/opengl/QuerySetGL.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_native/opengl/DeviceGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     QuerySet::QuerySet(Device* device, const QuerySetDescriptor* descriptor)
         : QuerySetBase(device, descriptor) {
@@ -24,4 +24,4 @@
 
     QuerySet::~QuerySet() = default;
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/QuerySetGL.h b/src/dawn_native/opengl/QuerySetGL.h
index b0a31da..0a39e8b 100644
--- a/src/dawn_native/opengl/QuerySetGL.h
+++ b/src/dawn_native/opengl/QuerySetGL.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/QuerySet.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -29,6 +29,6 @@
         ~QuerySet() override;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_QUERYSETGL_H_
diff --git a/src/dawn_native/opengl/QueueGL.cpp b/src/dawn_native/opengl/QueueGL.cpp
index ec98b64..c9ecbb0 100644
--- a/src/dawn_native/opengl/QueueGL.cpp
+++ b/src/dawn_native/opengl/QueueGL.cpp
@@ -21,7 +21,7 @@
 #include "dawn_platform/DawnPlatform.h"
 #include "dawn_platform/tracing/TraceEvent.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     Queue::Queue(Device* device) : QueueBase(device) {
     }
@@ -77,4 +77,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/QueueGL.h b/src/dawn_native/opengl/QueueGL.h
index b5a5243..2534297 100644
--- a/src/dawn_native/opengl/QueueGL.h
+++ b/src/dawn_native/opengl/QueueGL.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/Queue.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -37,6 +37,6 @@
                                     const Extent3D& writeSizePixel) override;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_QUEUEGL_H_
diff --git a/src/dawn_native/opengl/RenderPipelineGL.cpp b/src/dawn_native/opengl/RenderPipelineGL.cpp
index bc8c2c6..fe04fcd 100644
--- a/src/dawn_native/opengl/RenderPipelineGL.cpp
+++ b/src/dawn_native/opengl/RenderPipelineGL.cpp
@@ -19,7 +19,7 @@
 #include "dawn_native/opengl/PersistentPipelineStateGL.h"
 #include "dawn_native/opengl/UtilsGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     namespace {
 
@@ -342,4 +342,4 @@
         }
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/RenderPipelineGL.h b/src/dawn_native/opengl/RenderPipelineGL.h
index 75aab20..44d01a5 100644
--- a/src/dawn_native/opengl/RenderPipelineGL.h
+++ b/src/dawn_native/opengl/RenderPipelineGL.h
@@ -22,7 +22,7 @@
 
 #include <vector>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
     class PersistentPipelineState;
@@ -57,6 +57,6 @@
             mAttributesUsingVertexBuffer;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_RENDERPIPELINEGL_H_
diff --git a/src/dawn_native/opengl/SamplerGL.cpp b/src/dawn_native/opengl/SamplerGL.cpp
index b331df3..9e5435c0 100644
--- a/src/dawn_native/opengl/SamplerGL.cpp
+++ b/src/dawn_native/opengl/SamplerGL.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/opengl/DeviceGL.h"
 #include "dawn_native/opengl/UtilsGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     namespace {
         GLenum MagFilterMode(wgpu::FilterMode filter) {
@@ -127,4 +127,4 @@
         return mNonFilteringHandle;
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/SamplerGL.h b/src/dawn_native/opengl/SamplerGL.h
index f08930e..f8b21b9 100644
--- a/src/dawn_native/opengl/SamplerGL.h
+++ b/src/dawn_native/opengl/SamplerGL.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -43,6 +43,6 @@
         GLuint mNonFilteringHandle;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_SAMPLERGL_H_
diff --git a/src/dawn_native/opengl/ShaderModuleGL.cpp b/src/dawn_native/opengl/ShaderModuleGL.cpp
index a959819..6517502 100644
--- a/src/dawn_native/opengl/ShaderModuleGL.cpp
+++ b/src/dawn_native/opengl/ShaderModuleGL.cpp
@@ -34,7 +34,7 @@
 
 #include <sstream>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     std::string GetBindingName(BindGroupIndex group, BindingNumber bindingNumber) {
         std::ostringstream o;
@@ -397,4 +397,4 @@
         return glsl;
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/ShaderModuleGL.h b/src/dawn_native/opengl/ShaderModuleGL.h
index d955225..f3d5462 100644
--- a/src/dawn_native/opengl/ShaderModuleGL.h
+++ b/src/dawn_native/opengl/ShaderModuleGL.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
     class PipelineLayout;
@@ -70,6 +70,6 @@
         BindingInfoArrayTable mGLBindings;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_SHADERMODULEGL_H_
diff --git a/src/dawn_native/opengl/SwapChainGL.cpp b/src/dawn_native/opengl/SwapChainGL.cpp
index 8223a2c..f8043a4 100644
--- a/src/dawn_native/opengl/SwapChainGL.cpp
+++ b/src/dawn_native/opengl/SwapChainGL.cpp
@@ -20,7 +20,7 @@
 
 #include <dawn/dawn_wsi.h>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     SwapChain::SwapChain(Device* device, const SwapChainDescriptor* descriptor)
         : OldSwapChainBase(device, descriptor) {
@@ -48,4 +48,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/SwapChainGL.h b/src/dawn_native/opengl/SwapChainGL.h
index 0cce925..1868972 100644
--- a/src/dawn_native/opengl/SwapChainGL.h
+++ b/src/dawn_native/opengl/SwapChainGL.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
 
@@ -33,6 +33,6 @@
         MaybeError OnBeforePresent(TextureViewBase* view) override;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_SWAPCHAINGL_H_
diff --git a/src/dawn_native/opengl/TextureGL.cpp b/src/dawn_native/opengl/TextureGL.cpp
index ceb57bd..7c7cb9f 100644
--- a/src/dawn_native/opengl/TextureGL.cpp
+++ b/src/dawn_native/opengl/TextureGL.cpp
@@ -23,7 +23,7 @@
 #include "dawn_native/opengl/DeviceGL.h"
 #include "dawn_native/opengl/UtilsGL.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     namespace {
 
@@ -577,4 +577,4 @@
         return mTarget;
     }
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/TextureGL.h b/src/dawn_native/opengl/TextureGL.h
index 28b35d3..f6deaf5 100644
--- a/src/dawn_native/opengl/TextureGL.h
+++ b/src/dawn_native/opengl/TextureGL.h
@@ -19,7 +19,7 @@
 
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     class Device;
     struct GLFormat;
@@ -64,6 +64,6 @@
         bool mOwnsHandle;
     };
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_TEXTUREGL_H_
diff --git a/src/dawn_native/opengl/UtilsGL.cpp b/src/dawn_native/opengl/UtilsGL.cpp
index 413336b..1dd7a69 100644
--- a/src/dawn_native/opengl/UtilsGL.cpp
+++ b/src/dawn_native/opengl/UtilsGL.cpp
@@ -16,7 +16,7 @@
 
 #include "common/Assert.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     GLuint ToOpenGLCompareFunction(wgpu::CompareFunction compareFunction) {
         switch (compareFunction) {
@@ -52,4 +52,4 @@
                 UNREACHABLE();
         }
     }
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
diff --git a/src/dawn_native/opengl/UtilsGL.h b/src/dawn_native/opengl/UtilsGL.h
index 2f87b37..fe8a940 100644
--- a/src/dawn_native/opengl/UtilsGL.h
+++ b/src/dawn_native/opengl/UtilsGL.h
@@ -18,10 +18,10 @@
 #include "dawn_native/dawn_platform.h"
 #include "dawn_native/opengl/opengl_platform.h"
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     GLuint ToOpenGLCompareFunction(wgpu::CompareFunction compareFunction);
     GLint GetStencilMaskFromStencilFormat(wgpu::TextureFormat depthStencilFormat);
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGL_UTILSGL_H_
diff --git a/src/dawn_native/utils/WGPUHelpers.cpp b/src/dawn_native/utils/WGPUHelpers.cpp
index 60c2add..3fb0549 100644
--- a/src/dawn_native/utils/WGPUHelpers.cpp
+++ b/src/dawn_native/utils/WGPUHelpers.cpp
@@ -31,7 +31,7 @@
 #include <mutex>
 #include <sstream>
 
-namespace dawn_native { namespace utils {
+namespace dawn_native::utils {
 
     ResultOrError<Ref<ShaderModuleBase>> CreateShaderModule(DeviceBase* device,
                                                             const char* source) {
@@ -189,4 +189,4 @@
         return (label == nullptr || strlen(label) == 0) ? "None" : label;
     }
 
-}}  // namespace dawn_native::utils
+}  // namespace dawn_native::utils
diff --git a/src/dawn_native/utils/WGPUHelpers.h b/src/dawn_native/utils/WGPUHelpers.h
index 108f107..0077059 100644
--- a/src/dawn_native/utils/WGPUHelpers.h
+++ b/src/dawn_native/utils/WGPUHelpers.h
@@ -24,7 +24,7 @@
 #include "common/RefCounted.h"
 #include "dawn_native/Error.h"
 
-namespace dawn_native { namespace utils {
+namespace dawn_native::utils {
 
     ResultOrError<Ref<ShaderModuleBase>> CreateShaderModule(DeviceBase* device, const char* source);
 
@@ -118,6 +118,6 @@
 
     const char* GetLabelForTrace(const char* label);
 
-}}  // namespace dawn_native::utils
+}  // namespace dawn_native::utils
 
 #endif  // DAWNNATIVE_UTILS_WGPUHELPERS_H_
\ No newline at end of file
diff --git a/src/dawn_native/vulkan/AdapterVk.cpp b/src/dawn_native/vulkan/AdapterVk.cpp
index 4eea820..4b81ba0 100644
--- a/src/dawn_native/vulkan/AdapterVk.cpp
+++ b/src/dawn_native/vulkan/AdapterVk.cpp
@@ -20,7 +20,7 @@
 
 #include "common/GPUInfo.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     Adapter::Adapter(InstanceBase* instance,
                      VulkanInstance* vulkanInstance,
@@ -350,4 +350,4 @@
         return Device::Create(this, descriptor);
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/AdapterVk.h b/src/dawn_native/vulkan/AdapterVk.h
index 6d93a07..c61b70e 100644
--- a/src/dawn_native/vulkan/AdapterVk.h
+++ b/src/dawn_native/vulkan/AdapterVk.h
@@ -21,7 +21,7 @@
 #include "common/vulkan_platform.h"
 #include "dawn_native/vulkan/VulkanInfo.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class VulkanInstance;
 
@@ -54,6 +54,6 @@
         VulkanDeviceInfo mDeviceInfo = {};
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_ADAPTERVK_H_
diff --git a/src/dawn_native/vulkan/BackendVk.cpp b/src/dawn_native/vulkan/BackendVk.cpp
index 7fd6462..24340b4 100644
--- a/src/dawn_native/vulkan/BackendVk.cpp
+++ b/src/dawn_native/vulkan/BackendVk.cpp
@@ -77,7 +77,7 @@
      "SYNC_FRAGMENT_SHADER_SHADER_STORAGE_READ, read_barriers: VK_PIPELINE_STAGE_2_NONE_KHR, "},
 };
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -444,4 +444,4 @@
         return new Backend(instance);
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/BackendVk.h b/src/dawn_native/vulkan/BackendVk.h
index 96541f1..2532e91 100644
--- a/src/dawn_native/vulkan/BackendVk.h
+++ b/src/dawn_native/vulkan/BackendVk.h
@@ -23,7 +23,7 @@
 #include "dawn_native/vulkan/VulkanFunctions.h"
 #include "dawn_native/vulkan/VulkanInfo.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     enum class ICD {
         None,
@@ -81,6 +81,6 @@
         ityp::array<ICD, Ref<VulkanInstance>, 2> mVulkanInstances = {};
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_BACKENDVK_H_
diff --git a/src/dawn_native/vulkan/BindGroupLayoutVk.cpp b/src/dawn_native/vulkan/BindGroupLayoutVk.cpp
index 52038e1..2641887 100644
--- a/src/dawn_native/vulkan/BindGroupLayoutVk.cpp
+++ b/src/dawn_native/vulkan/BindGroupLayoutVk.cpp
@@ -25,7 +25,7 @@
 
 #include <map>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -196,4 +196,4 @@
                      reinterpret_cast<uint64_t&>(mHandle), "Dawn_BindGroupLayout", GetLabel());
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/BindGroupLayoutVk.h b/src/dawn_native/vulkan/BindGroupLayoutVk.h
index 4b0c98d..c144562 100644
--- a/src/dawn_native/vulkan/BindGroupLayoutVk.h
+++ b/src/dawn_native/vulkan/BindGroupLayoutVk.h
@@ -22,7 +22,7 @@
 
 #include <vector>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class BindGroup;
     struct DescriptorSetAllocation;
@@ -75,6 +75,6 @@
         Ref<DescriptorSetAllocator> mDescriptorSetAllocator;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_BINDGROUPLAYOUTVK_H_
diff --git a/src/dawn_native/vulkan/BindGroupVk.cpp b/src/dawn_native/vulkan/BindGroupVk.cpp
index dc056a7..b415685 100644
--- a/src/dawn_native/vulkan/BindGroupVk.cpp
+++ b/src/dawn_native/vulkan/BindGroupVk.cpp
@@ -26,7 +26,7 @@
 #include "dawn_native/vulkan/UtilsVulkan.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // static
     ResultOrError<Ref<BindGroup>> BindGroup::Create(Device* device,
@@ -177,4 +177,4 @@
                      GetLabel());
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/BindGroupVk.h b/src/dawn_native/vulkan/BindGroupVk.h
index abd8b1d..95d2be0 100644
--- a/src/dawn_native/vulkan/BindGroupVk.h
+++ b/src/dawn_native/vulkan/BindGroupVk.h
@@ -22,7 +22,7 @@
 #include "dawn_native/vulkan/BindGroupLayoutVk.h"
 #include "dawn_native/vulkan/DescriptorSetAllocation.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -50,6 +50,6 @@
         DescriptorSetAllocation mDescriptorSetAllocation;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_BINDGROUPVK_H_
diff --git a/src/dawn_native/vulkan/BufferVk.cpp b/src/dawn_native/vulkan/BufferVk.cpp
index 0f03873..8331dd2 100644
--- a/src/dawn_native/vulkan/BufferVk.cpp
+++ b/src/dawn_native/vulkan/BufferVk.cpp
@@ -24,7 +24,7 @@
 
 #include <cstring>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -410,4 +410,4 @@
         device->fn.CmdFillBuffer(recordingContext->commandBuffer, mHandle, offset, size,
                                  clearValue);
     }
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/BufferVk.h b/src/dawn_native/vulkan/BufferVk.h
index 721d4f0..6dfe3c0 100644
--- a/src/dawn_native/vulkan/BufferVk.h
+++ b/src/dawn_native/vulkan/BufferVk.h
@@ -21,7 +21,7 @@
 #include "common/vulkan_platform.h"
 #include "dawn_native/ResourceMemoryAllocation.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     struct CommandRecordingContext;
     class Device;
@@ -77,6 +77,6 @@
         wgpu::BufferUsage mLastUsage = wgpu::BufferUsage::None;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_BUFFERVK_H_
diff --git a/src/dawn_native/vulkan/CommandBufferVk.cpp b/src/dawn_native/vulkan/CommandBufferVk.cpp
index d89688c..8d73790 100644
--- a/src/dawn_native/vulkan/CommandBufferVk.cpp
+++ b/src/dawn_native/vulkan/CommandBufferVk.cpp
@@ -38,7 +38,7 @@
 
 #include <algorithm>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -1321,4 +1321,4 @@
         UNREACHABLE();
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/CommandBufferVk.h b/src/dawn_native/vulkan/CommandBufferVk.h
index d5d603b..53d604e 100644
--- a/src/dawn_native/vulkan/CommandBufferVk.h
+++ b/src/dawn_native/vulkan/CommandBufferVk.h
@@ -25,7 +25,7 @@
     struct TextureCopy;
 }  // namespace dawn_native
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     struct CommandRecordingContext;
     class Device;
@@ -50,6 +50,6 @@
                                                 const Extent3D& copySize);
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_COMMANDBUFFERVK_H_
diff --git a/src/dawn_native/vulkan/CommandRecordingContext.h b/src/dawn_native/vulkan/CommandRecordingContext.h
index a8dd68d..ccd5a01 100644
--- a/src/dawn_native/vulkan/CommandRecordingContext.h
+++ b/src/dawn_native/vulkan/CommandRecordingContext.h
@@ -18,7 +18,7 @@
 
 #include "dawn_native/vulkan/BufferVk.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
     // Used to track operations that are handled after recording.
     // Currently only tracks semaphores, but may be used to do barrier coalescing in the future.
     struct CommandRecordingContext {
@@ -35,6 +35,6 @@
         bool used = false;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_COMMANDRECORDINGCONTEXT_H_
diff --git a/src/dawn_native/vulkan/ComputePipelineVk.cpp b/src/dawn_native/vulkan/ComputePipelineVk.cpp
index 77ceba7..7def0e1 100644
--- a/src/dawn_native/vulkan/ComputePipelineVk.cpp
+++ b/src/dawn_native/vulkan/ComputePipelineVk.cpp
@@ -22,7 +22,7 @@
 #include "dawn_native/vulkan/UtilsVulkan.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // static
     Ref<ComputePipeline> ComputePipeline::CreateUninitialized(
@@ -113,4 +113,4 @@
         CreateComputePipelineAsyncTask::RunAsync(std::move(asyncTask));
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/ComputePipelineVk.h b/src/dawn_native/vulkan/ComputePipelineVk.h
index 26bf4c2..3164bdf 100644
--- a/src/dawn_native/vulkan/ComputePipelineVk.h
+++ b/src/dawn_native/vulkan/ComputePipelineVk.h
@@ -20,7 +20,7 @@
 #include "common/vulkan_platform.h"
 #include "dawn_native/Error.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -48,6 +48,6 @@
         VkPipeline mHandle = VK_NULL_HANDLE;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_COMPUTEPIPELINEVK_H_
diff --git a/src/dawn_native/vulkan/DescriptorSetAllocation.h b/src/dawn_native/vulkan/DescriptorSetAllocation.h
index 6a708e1..0e49d34 100644
--- a/src/dawn_native/vulkan/DescriptorSetAllocation.h
+++ b/src/dawn_native/vulkan/DescriptorSetAllocation.h
@@ -17,7 +17,7 @@
 
 #include "common/vulkan_platform.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // Contains a descriptor set along with data necessary to track its allocation.
     struct DescriptorSetAllocation {
@@ -26,6 +26,6 @@
         uint16_t setIndex;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_DESCRIPTORSETALLOCATION_H_
diff --git a/src/dawn_native/vulkan/DescriptorSetAllocator.cpp b/src/dawn_native/vulkan/DescriptorSetAllocator.cpp
index 936a9ba..47f68ad 100644
--- a/src/dawn_native/vulkan/DescriptorSetAllocator.cpp
+++ b/src/dawn_native/vulkan/DescriptorSetAllocator.cpp
@@ -19,7 +19,7 @@
 #include "dawn_native/vulkan/FencedDeleter.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // TODO(enga): Figure out this value.
     static constexpr uint32_t kMaxDescriptorsPerPool = 512;
@@ -185,4 +185,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/DescriptorSetAllocator.h b/src/dawn_native/vulkan/DescriptorSetAllocator.h
index ef7eba1..dfeba15 100644
--- a/src/dawn_native/vulkan/DescriptorSetAllocator.h
+++ b/src/dawn_native/vulkan/DescriptorSetAllocator.h
@@ -25,7 +25,7 @@
 #include <map>
 #include <vector>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class BindGroupLayout;
 
@@ -71,6 +71,6 @@
         ExecutionSerial mLastDeallocationSerial = ExecutionSerial(0);
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_DESCRIPTORSETALLOCATOR_H_
diff --git a/src/dawn_native/vulkan/DeviceVk.cpp b/src/dawn_native/vulkan/DeviceVk.cpp
index 2c2c48b..2bce878 100644
--- a/src/dawn_native/vulkan/DeviceVk.cpp
+++ b/src/dawn_native/vulkan/DeviceVk.cpp
@@ -42,7 +42,7 @@
 #include "dawn_native/vulkan/UtilsVulkan.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // static
     ResultOrError<Ref<Device>> Device::Create(Adapter* adapter,
@@ -1015,4 +1015,4 @@
         return mDeviceInfo.properties.limits.timestampPeriod;
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/DeviceVk.h b/src/dawn_native/vulkan/DeviceVk.h
index 00f32c7..5bdb6d9 100644
--- a/src/dawn_native/vulkan/DeviceVk.h
+++ b/src/dawn_native/vulkan/DeviceVk.h
@@ -32,7 +32,7 @@
 #include <memory>
 #include <queue>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Adapter;
     class BindGroupLayout;
@@ -208,6 +208,6 @@
                                        std::vector<VkSemaphore>* outWaitSemaphores);
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_DEVICEVK_H_
diff --git a/src/dawn_native/vulkan/ExternalHandle.h b/src/dawn_native/vulkan/ExternalHandle.h
index 45206b3..84e672c 100644
--- a/src/dawn_native/vulkan/ExternalHandle.h
+++ b/src/dawn_native/vulkan/ExternalHandle.h
@@ -3,7 +3,7 @@
 
 #include "common/vulkan_platform.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
 #if DAWN_PLATFORM_LINUX
     // File descriptor
@@ -21,6 +21,6 @@
     using ExternalSemaphoreHandle = void*;
 #endif
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_EXTERNALHANDLE_H_
diff --git a/src/dawn_native/vulkan/FencedDeleter.cpp b/src/dawn_native/vulkan/FencedDeleter.cpp
index 4086f0c..9607a47 100644
--- a/src/dawn_native/vulkan/FencedDeleter.cpp
+++ b/src/dawn_native/vulkan/FencedDeleter.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_native/vulkan/DeviceVk.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     FencedDeleter::FencedDeleter(Device* device) : mDevice(device) {
     }
@@ -180,4 +180,4 @@
         mSamplersToDelete.ClearUpTo(completedSerial);
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/FencedDeleter.h b/src/dawn_native/vulkan/FencedDeleter.h
index 81e6028..a137d49 100644
--- a/src/dawn_native/vulkan/FencedDeleter.h
+++ b/src/dawn_native/vulkan/FencedDeleter.h
@@ -19,7 +19,7 @@
 #include "common/vulkan_platform.h"
 #include "dawn_native/IntegerTypes.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -65,6 +65,6 @@
         SerialQueue<ExecutionSerial, VkSwapchainKHR> mSwapChainsToDelete;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_FENCEDDELETER_H_
diff --git a/src/dawn_native/vulkan/Forward.h b/src/dawn_native/vulkan/Forward.h
index e11a74f..bc34458 100644
--- a/src/dawn_native/vulkan/Forward.h
+++ b/src/dawn_native/vulkan/Forward.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/ToBackend.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Adapter;
     class BindGroup;
@@ -64,6 +64,6 @@
         return ToBackendBase<VulkanBackendTraits>(common);
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_FORWARD_H_
diff --git a/src/dawn_native/vulkan/NativeSwapChainImplVk.cpp b/src/dawn_native/vulkan/NativeSwapChainImplVk.cpp
index 9782a2b..8b7cc55 100644
--- a/src/dawn_native/vulkan/NativeSwapChainImplVk.cpp
+++ b/src/dawn_native/vulkan/NativeSwapChainImplVk.cpp
@@ -20,7 +20,7 @@
 
 #include <limits>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -222,4 +222,4 @@
         return mConfig.format;
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/NativeSwapChainImplVk.h b/src/dawn_native/vulkan/NativeSwapChainImplVk.h
index fe7a182..b908fd9 100644
--- a/src/dawn_native/vulkan/NativeSwapChainImplVk.h
+++ b/src/dawn_native/vulkan/NativeSwapChainImplVk.h
@@ -20,7 +20,7 @@
 #include "dawn/dawn_wsi.h"
 #include "dawn_native/dawn_platform.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -66,6 +66,6 @@
         Device* mDevice = nullptr;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_NATIVESWAPCHAINIMPLVK_H_
diff --git a/src/dawn_native/vulkan/PipelineLayoutVk.cpp b/src/dawn_native/vulkan/PipelineLayoutVk.cpp
index e41a99b..6a34c23 100644
--- a/src/dawn_native/vulkan/PipelineLayoutVk.cpp
+++ b/src/dawn_native/vulkan/PipelineLayoutVk.cpp
@@ -21,7 +21,7 @@
 #include "dawn_native/vulkan/UtilsVulkan.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // static
     ResultOrError<Ref<PipelineLayout>> PipelineLayout::Create(
@@ -81,4 +81,4 @@
                      reinterpret_cast<uint64_t&>(mHandle), "Dawn_PipelineLayout", GetLabel());
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/PipelineLayoutVk.h b/src/dawn_native/vulkan/PipelineLayoutVk.h
index 3cabde0..86a1caf 100644
--- a/src/dawn_native/vulkan/PipelineLayoutVk.h
+++ b/src/dawn_native/vulkan/PipelineLayoutVk.h
@@ -20,7 +20,7 @@
 #include "common/vulkan_platform.h"
 #include "dawn_native/Error.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -45,6 +45,6 @@
         VkPipelineLayout mHandle = VK_NULL_HANDLE;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_PIPELINELAYOUTVK_H_
diff --git a/src/dawn_native/vulkan/QuerySetVk.cpp b/src/dawn_native/vulkan/QuerySetVk.cpp
index 01d3a73..f8373ba 100644
--- a/src/dawn_native/vulkan/QuerySetVk.cpp
+++ b/src/dawn_native/vulkan/QuerySetVk.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/vulkan/VulkanError.h"
 #include "dawn_platform/DawnPlatform.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
         VkQueryType VulkanQueryType(wgpu::QueryType type) {
@@ -114,4 +114,4 @@
                      reinterpret_cast<uint64_t&>(mHandle), "Dawn_QuerySet", GetLabel());
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/QuerySetVk.h b/src/dawn_native/vulkan/QuerySetVk.h
index e219a0f..9632d6e 100644
--- a/src/dawn_native/vulkan/QuerySetVk.h
+++ b/src/dawn_native/vulkan/QuerySetVk.h
@@ -19,7 +19,7 @@
 
 #include "common/vulkan_platform.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -42,6 +42,6 @@
         VkQueryPool mHandle = VK_NULL_HANDLE;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_QUERYSETVK_H_
diff --git a/src/dawn_native/vulkan/QueueVk.cpp b/src/dawn_native/vulkan/QueueVk.cpp
index 2cb1e69..79f2973 100644
--- a/src/dawn_native/vulkan/QueueVk.cpp
+++ b/src/dawn_native/vulkan/QueueVk.cpp
@@ -25,7 +25,7 @@
 #include "dawn_platform/DawnPlatform.h"
 #include "dawn_platform/tracing/TraceEvent.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // static
     Queue* Queue::Create(Device* device) {
@@ -56,4 +56,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/QueueVk.h b/src/dawn_native/vulkan/QueueVk.h
index b3aa665..effc6ad 100644
--- a/src/dawn_native/vulkan/QueueVk.h
+++ b/src/dawn_native/vulkan/QueueVk.h
@@ -17,7 +17,7 @@
 
 #include "dawn_native/Queue.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -33,6 +33,6 @@
         MaybeError SubmitImpl(uint32_t commandCount, CommandBufferBase* const* commands) override;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_QUEUEVK_H_
diff --git a/src/dawn_native/vulkan/RenderPassCache.cpp b/src/dawn_native/vulkan/RenderPassCache.cpp
index 120cc0f..ad2cfd3 100644
--- a/src/dawn_native/vulkan/RenderPassCache.cpp
+++ b/src/dawn_native/vulkan/RenderPassCache.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/vulkan/TextureVk.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
         VkAttachmentLoadOp VulkanAttachmentLoadOp(wgpu::LoadOp op) {
@@ -289,4 +289,4 @@
 
         return true;
     }
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/RenderPassCache.h b/src/dawn_native/vulkan/RenderPassCache.h
index 29bcfd0..400c575 100644
--- a/src/dawn_native/vulkan/RenderPassCache.h
+++ b/src/dawn_native/vulkan/RenderPassCache.h
@@ -28,7 +28,7 @@
 #include <mutex>
 #include <unordered_map>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -101,6 +101,6 @@
         Cache mCache;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_RENDERPASSCACHE_H_
diff --git a/src/dawn_native/vulkan/RenderPipelineVk.cpp b/src/dawn_native/vulkan/RenderPipelineVk.cpp
index d0072df..2f19386 100644
--- a/src/dawn_native/vulkan/RenderPipelineVk.cpp
+++ b/src/dawn_native/vulkan/RenderPipelineVk.cpp
@@ -24,7 +24,7 @@
 #include "dawn_native/vulkan/UtilsVulkan.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -624,4 +624,4 @@
         CreateRenderPipelineAsyncTask::RunAsync(std::move(asyncTask));
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/RenderPipelineVk.h b/src/dawn_native/vulkan/RenderPipelineVk.h
index 9cfd078..810041a 100644
--- a/src/dawn_native/vulkan/RenderPipelineVk.h
+++ b/src/dawn_native/vulkan/RenderPipelineVk.h
@@ -20,7 +20,7 @@
 #include "common/vulkan_platform.h"
 #include "dawn_native/Error.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -54,6 +54,6 @@
         VkPipeline mHandle = VK_NULL_HANDLE;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_RENDERPIPELINEVK_H_
diff --git a/src/dawn_native/vulkan/ResourceHeapVk.cpp b/src/dawn_native/vulkan/ResourceHeapVk.cpp
index bf3b947..c0af2d3 100644
--- a/src/dawn_native/vulkan/ResourceHeapVk.cpp
+++ b/src/dawn_native/vulkan/ResourceHeapVk.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_native/vulkan/ResourceHeapVk.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     ResourceHeap::ResourceHeap(VkDeviceMemory memory, size_t memoryType)
         : mMemory(memory), mMemoryType(memoryType) {
@@ -28,4 +28,4 @@
         return mMemoryType;
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/ResourceHeapVk.h b/src/dawn_native/vulkan/ResourceHeapVk.h
index 2bb909b..b87600b 100644
--- a/src/dawn_native/vulkan/ResourceHeapVk.h
+++ b/src/dawn_native/vulkan/ResourceHeapVk.h
@@ -18,7 +18,7 @@
 #include "common/vulkan_platform.h"
 #include "dawn_native/ResourceHeap.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // Wrapper for physical memory used with or without a resource object.
     class ResourceHeap : public ResourceHeapBase {
@@ -34,6 +34,6 @@
         size_t mMemoryType = 0;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_RESOURCEHEAPVK_H_
diff --git a/src/dawn_native/vulkan/ResourceMemoryAllocatorVk.cpp b/src/dawn_native/vulkan/ResourceMemoryAllocatorVk.cpp
index 72bb019..abfd3aa 100644
--- a/src/dawn_native/vulkan/ResourceMemoryAllocatorVk.cpp
+++ b/src/dawn_native/vulkan/ResourceMemoryAllocatorVk.cpp
@@ -22,7 +22,7 @@
 #include "dawn_native/vulkan/ResourceHeapVk.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -289,4 +289,4 @@
         }
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/ResourceMemoryAllocatorVk.h b/src/dawn_native/vulkan/ResourceMemoryAllocatorVk.h
index e3871db..788ea1c 100644
--- a/src/dawn_native/vulkan/ResourceMemoryAllocatorVk.h
+++ b/src/dawn_native/vulkan/ResourceMemoryAllocatorVk.h
@@ -25,7 +25,7 @@
 #include <memory>
 #include <vector>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -61,6 +61,6 @@
         SerialQueue<ExecutionSerial, ResourceMemoryAllocation> mSubAllocationsToDelete;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_RESOURCEMEMORYALLOCATORVK_H_
diff --git a/src/dawn_native/vulkan/SamplerVk.cpp b/src/dawn_native/vulkan/SamplerVk.cpp
index 7c43645..0885d55 100644
--- a/src/dawn_native/vulkan/SamplerVk.cpp
+++ b/src/dawn_native/vulkan/SamplerVk.cpp
@@ -19,7 +19,7 @@
 #include "dawn_native/vulkan/UtilsVulkan.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
         VkSamplerAddressMode VulkanSamplerAddressMode(wgpu::AddressMode mode) {
@@ -128,4 +128,4 @@
                      reinterpret_cast<uint64_t&>(mHandle), "Dawn_Sampler", GetLabel());
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/SamplerVk.h b/src/dawn_native/vulkan/SamplerVk.h
index fec8653..e3aea2c 100644
--- a/src/dawn_native/vulkan/SamplerVk.h
+++ b/src/dawn_native/vulkan/SamplerVk.h
@@ -20,7 +20,7 @@
 #include "common/vulkan_platform.h"
 #include "dawn_native/Error.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -43,6 +43,6 @@
         VkSampler mHandle = VK_NULL_HANDLE;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_SAMPLERVK_H_
diff --git a/src/dawn_native/vulkan/ShaderModuleVk.cpp b/src/dawn_native/vulkan/ShaderModuleVk.cpp
index 81f84ab..53d8f3e 100644
--- a/src/dawn_native/vulkan/ShaderModuleVk.cpp
+++ b/src/dawn_native/vulkan/ShaderModuleVk.cpp
@@ -26,7 +26,7 @@
 #include <tint/tint.h>
 #include <spirv-tools/libspirv.hpp>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     ShaderModule::ConcurrentTransformedShaderModuleCache::ConcurrentTransformedShaderModuleCache(
         Device* device)
@@ -200,4 +200,4 @@
         return newHandle;
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/ShaderModuleVk.h b/src/dawn_native/vulkan/ShaderModuleVk.h
index 9d28f91..d91b8f0 100644
--- a/src/dawn_native/vulkan/ShaderModuleVk.h
+++ b/src/dawn_native/vulkan/ShaderModuleVk.h
@@ -22,7 +22,7 @@
 
 #include <mutex>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
     class PipelineLayout;
@@ -62,6 +62,6 @@
         std::unique_ptr<ConcurrentTransformedShaderModuleCache> mTransformedShaderModuleCache;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_SHADERMODULEVK_H_
diff --git a/src/dawn_native/vulkan/StagingBufferVk.cpp b/src/dawn_native/vulkan/StagingBufferVk.cpp
index c78f0fc..d8cbb88 100644
--- a/src/dawn_native/vulkan/StagingBufferVk.cpp
+++ b/src/dawn_native/vulkan/StagingBufferVk.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/vulkan/UtilsVulkan.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     StagingBuffer::StagingBuffer(size_t size, Device* device)
         : StagingBufferBase(size), mDevice(device) {
@@ -74,4 +74,4 @@
         return mBuffer;
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/StagingBufferVk.h b/src/dawn_native/vulkan/StagingBufferVk.h
index 50b773a..477bed5 100644
--- a/src/dawn_native/vulkan/StagingBufferVk.h
+++ b/src/dawn_native/vulkan/StagingBufferVk.h
@@ -19,7 +19,7 @@
 #include "dawn_native/ResourceMemoryAllocation.h"
 #include "dawn_native/StagingBuffer.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -37,6 +37,6 @@
         VkBuffer mBuffer;
         ResourceMemoryAllocation mAllocation;
     };
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_STAGINGBUFFERVK_H_
diff --git a/src/dawn_native/vulkan/SwapChainVk.cpp b/src/dawn_native/vulkan/SwapChainVk.cpp
index e111200..8cf6cff 100644
--- a/src/dawn_native/vulkan/SwapChainVk.cpp
+++ b/src/dawn_native/vulkan/SwapChainVk.cpp
@@ -30,7 +30,7 @@
 #    include "dawn_native/XlibXcbFunctions.h"
 #endif  // defined(DAWN_USE_X11)
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // OldSwapChain
 
@@ -661,4 +661,4 @@
         }
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/SwapChainVk.h b/src/dawn_native/vulkan/SwapChainVk.h
index e93039b..c85aa32 100644
--- a/src/dawn_native/vulkan/SwapChainVk.h
+++ b/src/dawn_native/vulkan/SwapChainVk.h
@@ -21,7 +21,7 @@
 
 #include <vector>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
     class Texture;
@@ -93,6 +93,6 @@
         Ref<Texture> mTexture;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_SWAPCHAINVK_H_
diff --git a/src/dawn_native/vulkan/TextureVk.cpp b/src/dawn_native/vulkan/TextureVk.cpp
index ab89859..3fc2b85 100644
--- a/src/dawn_native/vulkan/TextureVk.cpp
+++ b/src/dawn_native/vulkan/TextureVk.cpp
@@ -31,7 +31,7 @@
 #include "dawn_native/vulkan/UtilsVulkan.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
         // Converts an Dawn texture dimension to a Vulkan image view type.
@@ -1364,4 +1364,4 @@
                      reinterpret_cast<uint64_t&>(mHandle), "Dawn_InternalTextureView", GetLabel());
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/TextureVk.h b/src/dawn_native/vulkan/TextureVk.h
index 6083275..d339e99c 100644
--- a/src/dawn_native/vulkan/TextureVk.h
+++ b/src/dawn_native/vulkan/TextureVk.h
@@ -23,7 +23,7 @@
 #include "dawn_native/vulkan/ExternalHandle.h"
 #include "dawn_native/vulkan/external_memory/MemoryService.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     struct CommandRecordingContext;
     class Device;
@@ -197,6 +197,6 @@
         VkImageView mHandle = VK_NULL_HANDLE;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_TEXTUREVK_H_
diff --git a/src/dawn_native/vulkan/UtilsVulkan.cpp b/src/dawn_native/vulkan/UtilsVulkan.cpp
index f7f7e4b..5109534 100644
--- a/src/dawn_native/vulkan/UtilsVulkan.cpp
+++ b/src/dawn_native/vulkan/UtilsVulkan.cpp
@@ -24,7 +24,7 @@
 #include "dawn_native/vulkan/TextureVk.h"
 #include "dawn_native/vulkan/VulkanError.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     VkCompareOp ToVulkanCompareOp(wgpu::CompareFunction op) {
         switch (op) {
@@ -261,4 +261,4 @@
         return specializationInfo;
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/UtilsVulkan.h b/src/dawn_native/vulkan/UtilsVulkan.h
index 7b7ead5..f91c782 100644
--- a/src/dawn_native/vulkan/UtilsVulkan.h
+++ b/src/dawn_native/vulkan/UtilsVulkan.h
@@ -24,7 +24,7 @@
     union OverridableConstantScalar;
 }  // namespace dawn_native
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Device;
 
@@ -116,6 +116,6 @@
         std::vector<OverridableConstantScalar>* specializationDataEntries,
         std::vector<VkSpecializationMapEntry>* specializationMapEntries);
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_UTILSVULKAN_H_
diff --git a/src/dawn_native/vulkan/VulkanBackend.cpp b/src/dawn_native/vulkan/VulkanBackend.cpp
index f406f9f..658e8fd 100644
--- a/src/dawn_native/vulkan/VulkanBackend.cpp
+++ b/src/dawn_native/vulkan/VulkanBackend.cpp
@@ -26,7 +26,7 @@
 #include "dawn_native/vulkan/NativeSwapChainImplVk.h"
 #include "dawn_native/vulkan/TextureVk.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     VkInstance GetInstance(WGPUDevice device) {
         Device* backendDevice = ToBackend(FromAPI(device));
@@ -126,4 +126,4 @@
 #endif  // DAWN_PLATFORM_LINUX
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/VulkanError.cpp b/src/dawn_native/vulkan/VulkanError.cpp
index e0655b9..9b58d16 100644
--- a/src/dawn_native/vulkan/VulkanError.cpp
+++ b/src/dawn_native/vulkan/VulkanError.cpp
@@ -16,7 +16,7 @@
 
 #include <string>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     const char* VkResultAsString(::VkResult result) {
         // Convert to a int32_t to silence and MSVC warning that the fake errors don't appear in
@@ -106,4 +106,4 @@
         }
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/VulkanError.h b/src/dawn_native/vulkan/VulkanError.h
index 7748f56..0d7ee5f 100644
--- a/src/dawn_native/vulkan/VulkanError.h
+++ b/src/dawn_native/vulkan/VulkanError.h
@@ -21,7 +21,7 @@
 constexpr VkResult VK_FAKE_ERROR_FOR_TESTING = VK_RESULT_MAX_ENUM;
 constexpr VkResult VK_FAKE_DEVICE_OOM_FOR_TESTING = static_cast<VkResult>(VK_RESULT_MAX_ENUM - 1);
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // Returns a string version of the result.
     const char* VkResultAsString(::VkResult result);
@@ -45,6 +45,6 @@
             resultIn, VK_FAKE_DEVICE_OOM_FOR_TESTING, VK_FAKE_ERROR_FOR_TESTING)), \
         contextIn)
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_VULKANERROR_H_
diff --git a/src/dawn_native/vulkan/VulkanExtensions.cpp b/src/dawn_native/vulkan/VulkanExtensions.cpp
index 3073625..96b1e50 100644
--- a/src/dawn_native/vulkan/VulkanExtensions.cpp
+++ b/src/dawn_native/vulkan/VulkanExtensions.cpp
@@ -20,7 +20,7 @@
 #include <array>
 #include <limits>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     static constexpr uint32_t VulkanVersion_1_1 = VK_MAKE_VERSION(1, 1, 0);
     static constexpr uint32_t VulkanVersion_1_2 = VK_MAKE_VERSION(1, 2, 0);
@@ -323,4 +323,4 @@
         return result;
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/VulkanExtensions.h b/src/dawn_native/vulkan/VulkanExtensions.h
index bd87527..dd59747 100644
--- a/src/dawn_native/vulkan/VulkanExtensions.h
+++ b/src/dawn_native/vulkan/VulkanExtensions.h
@@ -19,7 +19,7 @@
 
 #include <unordered_map>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     // The list of known instance extensions. They must be in dependency order (this is checked
     // inside EnsureDependencies)
@@ -157,6 +157,6 @@
     // Returns a map that maps a Vulkan layer name to its VulkanLayer.
     std::unordered_map<std::string, VulkanLayer> CreateVulkanLayerNameMap();
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_VULKANEXTENSIONS_H_
diff --git a/src/dawn_native/vulkan/VulkanFunctions.cpp b/src/dawn_native/vulkan/VulkanFunctions.cpp
index 2e052e7..99c9acd 100644
--- a/src/dawn_native/vulkan/VulkanFunctions.cpp
+++ b/src/dawn_native/vulkan/VulkanFunctions.cpp
@@ -17,7 +17,7 @@
 #include "common/DynamicLib.h"
 #include "dawn_native/vulkan/VulkanInfo.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
 #define GET_GLOBAL_PROC(name)                                                              \
     do {                                                                                   \
@@ -329,4 +329,4 @@
         return {};
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/VulkanFunctions.h b/src/dawn_native/vulkan/VulkanFunctions.h
index eb20ee6..a677cd2 100644
--- a/src/dawn_native/vulkan/VulkanFunctions.h
+++ b/src/dawn_native/vulkan/VulkanFunctions.h
@@ -21,7 +21,7 @@
 
 class DynamicLib;
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     struct VulkanGlobalInfo;
     struct VulkanDeviceInfo;
@@ -321,6 +321,6 @@
         ::VkResult mValue;
     };
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_VULKANFUNCTIONS_H_
diff --git a/src/dawn_native/vulkan/VulkanInfo.cpp b/src/dawn_native/vulkan/VulkanInfo.cpp
index 4b0159f..c3883cd 100644
--- a/src/dawn_native/vulkan/VulkanInfo.cpp
+++ b/src/dawn_native/vulkan/VulkanInfo.cpp
@@ -21,7 +21,7 @@
 
 #include <cstring>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
         ResultOrError<InstanceExtSet> GatherInstanceExtensions(
@@ -331,4 +331,4 @@
         return std::move(info);
     }
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/dawn_native/vulkan/VulkanInfo.h b/src/dawn_native/vulkan/VulkanInfo.h
index ff7a5bc..83fd137 100644
--- a/src/dawn_native/vulkan/VulkanInfo.h
+++ b/src/dawn_native/vulkan/VulkanInfo.h
@@ -22,7 +22,7 @@
 
 #include <vector>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     class Adapter;
     class Backend;
@@ -84,6 +84,6 @@
     ResultOrError<VulkanDeviceInfo> GatherDeviceInfo(const Adapter& adapter);
     ResultOrError<VulkanSurfaceInfo> GatherSurfaceInfo(const Adapter& adapter,
                                                        VkSurfaceKHR surface);
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKAN_VULKANINFO_H_
diff --git a/src/dawn_native/vulkan/external_memory/MemoryService.h b/src/dawn_native/vulkan/external_memory/MemoryService.h
index 5844d8f..3e8ae3e 100644
--- a/src/dawn_native/vulkan/external_memory/MemoryService.h
+++ b/src/dawn_native/vulkan/external_memory/MemoryService.h
@@ -20,12 +20,12 @@
 #include "dawn_native/VulkanBackend.h"
 #include "dawn_native/vulkan/ExternalHandle.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
     class Device;
     struct VulkanDeviceInfo;
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
-namespace dawn_native { namespace vulkan { namespace external_memory {
+namespace dawn_native { namespace vulkan::external_memory {
 
     struct MemoryImportParams {
         VkDeviceSize allocationSize;
@@ -73,6 +73,6 @@
         bool mSupported = false;
     };
 
-}}}  // namespace dawn_native::vulkan::external_memory
+}}  // namespace dawn_native::vulkan::external_memory
 
 #endif  // DAWNNATIVE_VULKAN_EXTERNALMEMORY_SERVICE_H_
diff --git a/src/dawn_native/vulkan/external_memory/MemoryServiceDmaBuf.cpp b/src/dawn_native/vulkan/external_memory/MemoryServiceDmaBuf.cpp
index 06e0bf9..3317b43 100644
--- a/src/dawn_native/vulkan/external_memory/MemoryServiceDmaBuf.cpp
+++ b/src/dawn_native/vulkan/external_memory/MemoryServiceDmaBuf.cpp
@@ -21,7 +21,7 @@
 #include "dawn_native/vulkan/VulkanError.h"
 #include "dawn_native/vulkan/external_memory/MemoryService.h"
 
-namespace dawn_native { namespace vulkan { namespace external_memory {
+namespace dawn_native { namespace vulkan::external_memory {
 
     namespace {
 
@@ -354,4 +354,4 @@
         return image;
     }
 
-}}}  // namespace dawn_native::vulkan::external_memory
+}}  // namespace dawn_native::vulkan::external_memory
diff --git a/src/dawn_native/vulkan/external_memory/MemoryServiceNull.cpp b/src/dawn_native/vulkan/external_memory/MemoryServiceNull.cpp
index 9994951..aefe550 100644
--- a/src/dawn_native/vulkan/external_memory/MemoryServiceNull.cpp
+++ b/src/dawn_native/vulkan/external_memory/MemoryServiceNull.cpp
@@ -15,7 +15,7 @@
 #include "dawn_native/vulkan/DeviceVk.h"
 #include "dawn_native/vulkan/external_memory/MemoryService.h"
 
-namespace dawn_native { namespace vulkan { namespace external_memory {
+namespace dawn_native { namespace vulkan::external_memory {
 
     Service::Service(Device* device) : mDevice(device) {
         DAWN_UNUSED(mDevice);
@@ -62,4 +62,4 @@
         return DAWN_UNIMPLEMENTED_ERROR("Using null memory service to interop inside Vulkan");
     }
 
-}}}  // namespace dawn_native::vulkan::external_memory
+}}  // namespace dawn_native::vulkan::external_memory
diff --git a/src/dawn_native/vulkan/external_memory/MemoryServiceOpaqueFD.cpp b/src/dawn_native/vulkan/external_memory/MemoryServiceOpaqueFD.cpp
index 55969f7..0222833 100644
--- a/src/dawn_native/vulkan/external_memory/MemoryServiceOpaqueFD.cpp
+++ b/src/dawn_native/vulkan/external_memory/MemoryServiceOpaqueFD.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/vulkan/VulkanError.h"
 #include "dawn_native/vulkan/external_memory/MemoryService.h"
 
-namespace dawn_native { namespace vulkan { namespace external_memory {
+namespace dawn_native { namespace vulkan::external_memory {
 
     Service::Service(Device* device)
         : mDevice(device), mSupported(CheckSupport(device->GetDeviceInfo())) {
@@ -153,4 +153,4 @@
         return image;
     }
 
-}}}  // namespace dawn_native::vulkan::external_memory
+}}  // namespace dawn_native::vulkan::external_memory
diff --git a/src/dawn_native/vulkan/external_memory/MemoryServiceZirconHandle.cpp b/src/dawn_native/vulkan/external_memory/MemoryServiceZirconHandle.cpp
index 3b1a031..7c37135 100644
--- a/src/dawn_native/vulkan/external_memory/MemoryServiceZirconHandle.cpp
+++ b/src/dawn_native/vulkan/external_memory/MemoryServiceZirconHandle.cpp
@@ -20,7 +20,7 @@
 #include "dawn_native/vulkan/VulkanError.h"
 #include "dawn_native/vulkan/external_memory/MemoryService.h"
 
-namespace dawn_native { namespace vulkan { namespace external_memory {
+namespace dawn_native { namespace vulkan::external_memory {
 
     Service::Service(Device* device)
         : mDevice(device), mSupported(CheckSupport(device->GetDeviceInfo())) {
@@ -155,4 +155,4 @@
         return image;
     }
 
-}}}  // namespace dawn_native::vulkan::external_memory
+}}  // namespace dawn_native::vulkan::external_memory
diff --git a/src/dawn_native/vulkan/external_semaphore/SemaphoreService.h b/src/dawn_native/vulkan/external_semaphore/SemaphoreService.h
index 91d9576..5824c52 100644
--- a/src/dawn_native/vulkan/external_semaphore/SemaphoreService.h
+++ b/src/dawn_native/vulkan/external_semaphore/SemaphoreService.h
@@ -21,11 +21,11 @@
 #include "dawn_native/vulkan/VulkanFunctions.h"
 #include "dawn_native/vulkan/VulkanInfo.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
     class Device;
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
-namespace dawn_native { namespace vulkan { namespace external_semaphore {
+namespace dawn_native { namespace vulkan::external_semaphore {
 
     class Service {
       public:
@@ -55,6 +55,6 @@
         bool mSupported = false;
     };
 
-}}}  // namespace dawn_native::vulkan::external_semaphore
+}}  // namespace dawn_native::vulkan::external_semaphore
 
 #endif  // DAWNNATIVE_VULKAN_EXTERNALSEMAPHORE_SERVICE_H_
diff --git a/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceFD.cpp b/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceFD.cpp
index b81f96c..58c6f96 100644
--- a/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceFD.cpp
+++ b/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceFD.cpp
@@ -25,7 +25,7 @@
     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;
 #endif  // defined(DAWN_USE_SYNC_FDS)
 
-namespace dawn_native { namespace vulkan { namespace external_semaphore {
+namespace dawn_native { namespace vulkan::external_semaphore {
 
     Service::Service(Device* device)
         : mDevice(device),
@@ -134,4 +134,4 @@
         return fd;
     }
 
-}}}  // namespace dawn_native::vulkan::external_semaphore
+}}  // namespace dawn_native::vulkan::external_semaphore
diff --git a/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceNull.cpp b/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceNull.cpp
index 3053029..8c99da1 100644
--- a/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceNull.cpp
+++ b/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceNull.cpp
@@ -15,7 +15,7 @@
 #include "dawn_native/vulkan/DeviceVk.h"
 #include "dawn_native/vulkan/external_semaphore/SemaphoreService.h"
 
-namespace dawn_native { namespace vulkan { namespace external_semaphore {
+namespace dawn_native { namespace vulkan::external_semaphore {
 
     Service::Service(Device* device) : mDevice(device) {
         DAWN_UNUSED(mDevice);
@@ -47,4 +47,4 @@
         return DAWN_UNIMPLEMENTED_ERROR("Using null semaphore service to interop inside Vulkan");
     }
 
-}}}  // namespace dawn_native::vulkan::external_semaphore
+}}  // namespace dawn_native::vulkan::external_semaphore
diff --git a/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceZirconHandle.cpp b/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceZirconHandle.cpp
index 7a773f9..35c2b2b 100644
--- a/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceZirconHandle.cpp
+++ b/src/dawn_native/vulkan/external_semaphore/SemaphoreServiceZirconHandle.cpp
@@ -18,7 +18,7 @@
 #include "dawn_native/vulkan/VulkanError.h"
 #include "dawn_native/vulkan/external_semaphore/SemaphoreService.h"
 
-namespace dawn_native { namespace vulkan { namespace external_semaphore {
+namespace dawn_native { namespace vulkan::external_semaphore {
 
     Service::Service(Device* device)
         : mDevice(device),
@@ -132,4 +132,4 @@
         return handle;
     }
 
-}}}  // namespace dawn_native::vulkan::external_semaphore
+}}  // namespace dawn_native::vulkan::external_semaphore
diff --git a/src/dawn_node/binding/AsyncRunner.cpp b/src/dawn_node/binding/AsyncRunner.cpp
index 788abc2..94382d1 100644
--- a/src/dawn_node/binding/AsyncRunner.cpp
+++ b/src/dawn_node/binding/AsyncRunner.cpp
@@ -17,7 +17,7 @@
 #include <cassert>
 #include <limits>
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     AsyncRunner::AsyncRunner(Napi::Env env, wgpu::Device device) : env_(env), device_(device) {
     }
@@ -57,4 +57,4 @@
             });
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/AsyncRunner.h b/src/dawn_node/binding/AsyncRunner.h
index a86ee3a..9ed6e5c 100644
--- a/src/dawn_node/binding/AsyncRunner.h
+++ b/src/dawn_node/binding/AsyncRunner.h
@@ -21,7 +21,7 @@
 #include "dawn/webgpu_cpp.h"
 #include "napi.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // AsyncRunner is used to poll a wgpu::Device with calls to Tick() while there are asynchronous
     // tasks in flight.
@@ -72,6 +72,6 @@
         std::shared_ptr<AsyncRunner> runner_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_ASYNC_RUNNER_H_
diff --git a/src/dawn_node/binding/Converter.cpp b/src/dawn_node/binding/Converter.cpp
index d75e217..e2a168f 100644
--- a/src/dawn_node/binding/Converter.cpp
+++ b/src/dawn_node/binding/Converter.cpp
@@ -22,7 +22,7 @@
 #include "src/dawn_node/binding/GPUTextureView.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     Converter::~Converter() {
         for (auto& free : free_) {
@@ -1150,4 +1150,4 @@
                Convert(out.fragment, in.fragment);
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/Converter.h b/src/dawn_node/binding/Converter.h
index e6b20e8..cacba0e 100644
--- a/src/dawn_node/binding/Converter.h
+++ b/src/dawn_node/binding/Converter.h
@@ -24,7 +24,7 @@
 #include "src/dawn_node/binding/Errors.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // ImplOfTraits is a traits helper that is used to associate the interop interface type to the
     // binding implementation type.
@@ -393,6 +393,6 @@
         std::vector<std::function<void()>> free_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_CONVERTER_H_
diff --git a/src/dawn_node/binding/Errors.cpp b/src/dawn_node/binding/Errors.cpp
index 953a1a8..722be27 100644
--- a/src/dawn_node/binding/Errors.cpp
+++ b/src/dawn_node/binding/Errors.cpp
@@ -14,7 +14,7 @@
 
 #include "src/dawn_node/binding/Errors.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     namespace {
         constexpr char kHierarchyRequestError[] = "HierarchyRequestError";
@@ -176,4 +176,4 @@
         return New(env, kNotAllowedError);
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/Errors.h b/src/dawn_node/binding/Errors.h
index 0f1a40e..97a3577 100644
--- a/src/dawn_node/binding/Errors.h
+++ b/src/dawn_node/binding/Errors.h
@@ -17,7 +17,7 @@
 
 #include "napi.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // Errors contains static helper methods for creating DOMException error
     // messages as documented at:
@@ -55,6 +55,6 @@
         static Napi::Error NotAllowedError(Napi::Env);
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_ERRORS_H_
diff --git a/src/dawn_node/binding/Flags.cpp b/src/dawn_node/binding/Flags.cpp
index 3602e92..9985a49 100644
--- a/src/dawn_node/binding/Flags.cpp
+++ b/src/dawn_node/binding/Flags.cpp
@@ -14,7 +14,7 @@
 
 #include "src/dawn_node/binding/Flags.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
     void Flags::Set(const std::string& key, const std::string& value) {
         flags_[key] = value;
     }
@@ -26,4 +26,4 @@
         }
         return {};
     }
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/Flags.h b/src/dawn_node/binding/Flags.h
index 1ca4c30..89b7b43 100644
--- a/src/dawn_node/binding/Flags.h
+++ b/src/dawn_node/binding/Flags.h
@@ -19,7 +19,7 @@
 #include <string>
 #include <unordered_map>
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
     // Flags maintains a key-value mapping of input flags passed into the module's create()
     // function, used to configure dawn_node.
     class Flags {
@@ -30,6 +30,6 @@
       private:
         std::unordered_map<std::string, std::string> flags_;
     };
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_FLAGS_H_
diff --git a/src/dawn_node/binding/GPU.cpp b/src/dawn_node/binding/GPU.cpp
index a13ed30..9cbb413 100644
--- a/src/dawn_node/binding/GPU.cpp
+++ b/src/dawn_node/binding/GPU.cpp
@@ -51,7 +51,7 @@
 
 }  // namespace
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPU
@@ -158,4 +158,4 @@
         return promise;
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPU.h b/src/dawn_node/binding/GPU.h
index 8f1999d..e526403 100644
--- a/src/dawn_node/binding/GPU.h
+++ b/src/dawn_node/binding/GPU.h
@@ -21,7 +21,7 @@
 #include "src/dawn_node/binding/Flags.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
     // GPU is an implementation of interop::GPU that wraps a dawn_native::Instance.
     class GPU final : public interop::GPU {
       public:
@@ -37,6 +37,6 @@
         dawn_native::Instance instance_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPU_H_
diff --git a/src/dawn_node/binding/GPUAdapter.cpp b/src/dawn_node/binding/GPUAdapter.cpp
index 8de1269..95667ab 100644
--- a/src/dawn_node/binding/GPUAdapter.cpp
+++ b/src/dawn_node/binding/GPUAdapter.cpp
@@ -48,7 +48,7 @@
     }
 }  // namespace
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     namespace {
 
@@ -233,4 +233,4 @@
         }
         return promise;
     }
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUAdapter.h b/src/dawn_node/binding/GPUAdapter.h
index 6f837c8..a54cd0b 100644
--- a/src/dawn_node/binding/GPUAdapter.h
+++ b/src/dawn_node/binding/GPUAdapter.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
     class Flags;
 
     // GPUAdapter is an implementation of interop::GPUAdapter that wraps a dawn_native::Adapter.
@@ -42,6 +42,6 @@
         const Flags& flags_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUADAPTER_H_
diff --git a/src/dawn_node/binding/GPUBindGroup.cpp b/src/dawn_node/binding/GPUBindGroup.cpp
index e156700..3e7b2a1 100644
--- a/src/dawn_node/binding/GPUBindGroup.cpp
+++ b/src/dawn_node/binding/GPUBindGroup.cpp
@@ -16,7 +16,7 @@
 
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUBindGroup
@@ -32,4 +32,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUBindGroup.h b/src/dawn_node/binding/GPUBindGroup.h
index e71fc8b..342cf0d 100644
--- a/src/dawn_node/binding/GPUBindGroup.h
+++ b/src/dawn_node/binding/GPUBindGroup.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUBindGroup is an implementation of interop::GPUBindGroup that wraps a wgpu::BindGroup.
     class GPUBindGroup final : public interop::GPUBindGroup {
@@ -40,6 +40,6 @@
         wgpu::BindGroup group_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUBINDGROUP_H_
diff --git a/src/dawn_node/binding/GPUBindGroupLayout.cpp b/src/dawn_node/binding/GPUBindGroupLayout.cpp
index ddaeaba..db32a57 100644
--- a/src/dawn_node/binding/GPUBindGroupLayout.cpp
+++ b/src/dawn_node/binding/GPUBindGroupLayout.cpp
@@ -16,7 +16,7 @@
 
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUBindGroupLayout
@@ -33,4 +33,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUBindGroupLayout.h b/src/dawn_node/binding/GPUBindGroupLayout.h
index 34874bf..92d476d 100644
--- a/src/dawn_node/binding/GPUBindGroupLayout.h
+++ b/src/dawn_node/binding/GPUBindGroupLayout.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUBindGroupLayout is an implementation of interop::GPUBindGroupLayout that wraps a
     // wgpu::BindGroupLayout.
@@ -41,6 +41,6 @@
         wgpu::BindGroupLayout layout_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUBINDGROUPLAYOUT_H_
diff --git a/src/dawn_node/binding/GPUBuffer.cpp b/src/dawn_node/binding/GPUBuffer.cpp
index 2fca5d5..652c2e7 100644
--- a/src/dawn_node/binding/GPUBuffer.cpp
+++ b/src/dawn_node/binding/GPUBuffer.cpp
@@ -20,7 +20,7 @@
 #include "src/dawn_node/binding/Errors.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUBuffer
@@ -166,4 +166,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUBuffer.h b/src/dawn_node/binding/GPUBuffer.h
index c3d8b03..7bc1d7e 100644
--- a/src/dawn_node/binding/GPUBuffer.h
+++ b/src/dawn_node/binding/GPUBuffer.h
@@ -21,7 +21,7 @@
 #include "src/dawn_node/binding/AsyncRunner.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUBuffer is an implementation of interop::GPUBuffer that wraps a wgpu::Buffer.
     class GPUBuffer final : public interop::GPUBuffer {
@@ -81,6 +81,6 @@
         std::vector<Mapping> mapped_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUBUFFER_H_
diff --git a/src/dawn_node/binding/GPUCommandBuffer.cpp b/src/dawn_node/binding/GPUCommandBuffer.cpp
index 0ff503f..461c6d9 100644
--- a/src/dawn_node/binding/GPUCommandBuffer.cpp
+++ b/src/dawn_node/binding/GPUCommandBuffer.cpp
@@ -16,7 +16,7 @@
 
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUCommandBuffer
@@ -37,4 +37,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUCommandBuffer.h b/src/dawn_node/binding/GPUCommandBuffer.h
index b6fc3ba..8b35c21 100644
--- a/src/dawn_node/binding/GPUCommandBuffer.h
+++ b/src/dawn_node/binding/GPUCommandBuffer.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUCommandBuffer is an implementation of interop::GPUCommandBuffer that wraps a
     // wgpu::CommandBuffer.
@@ -42,6 +42,6 @@
         wgpu::CommandBuffer cmd_buf_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUCOMMANDBUFFER_H_
diff --git a/src/dawn_node/binding/GPUCommandEncoder.cpp b/src/dawn_node/binding/GPUCommandEncoder.cpp
index cf3925c..d86cebf 100644
--- a/src/dawn_node/binding/GPUCommandEncoder.cpp
+++ b/src/dawn_node/binding/GPUCommandEncoder.cpp
@@ -24,7 +24,7 @@
 #include "src/dawn_node/binding/GPUTexture.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUCommandEncoder
@@ -193,4 +193,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUCommandEncoder.h b/src/dawn_node/binding/GPUCommandEncoder.h
index f23e281..3402c78 100644
--- a/src/dawn_node/binding/GPUCommandEncoder.h
+++ b/src/dawn_node/binding/GPUCommandEncoder.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUCommandEncoder is an implementation of interop::GPUCommandEncoder that wraps a
     // wgpu::CommandEncoder.
@@ -75,6 +75,6 @@
         wgpu::CommandEncoder enc_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUCOMMANDENCODER_H_
diff --git a/src/dawn_node/binding/GPUComputePassEncoder.cpp b/src/dawn_node/binding/GPUComputePassEncoder.cpp
index 6edc467..d827d84 100644
--- a/src/dawn_node/binding/GPUComputePassEncoder.cpp
+++ b/src/dawn_node/binding/GPUComputePassEncoder.cpp
@@ -21,7 +21,7 @@
 #include "src/dawn_node/binding/GPUQuerySet.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUComputePassEncoder
@@ -132,4 +132,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUComputePassEncoder.h b/src/dawn_node/binding/GPUComputePassEncoder.h
index 9c7064b..faf0859 100644
--- a/src/dawn_node/binding/GPUComputePassEncoder.h
+++ b/src/dawn_node/binding/GPUComputePassEncoder.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUComputePassEncoder is an implementation of interop::GPUComputePassEncoder that wraps a
     // wgpu::ComputePassEncoder.
@@ -71,6 +71,6 @@
         wgpu::ComputePassEncoder enc_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUCOMPUTEPASSENCODER_H_
diff --git a/src/dawn_node/binding/GPUComputePipeline.cpp b/src/dawn_node/binding/GPUComputePipeline.cpp
index 0eef82e..be6d1c3 100644
--- a/src/dawn_node/binding/GPUComputePipeline.cpp
+++ b/src/dawn_node/binding/GPUComputePipeline.cpp
@@ -18,7 +18,7 @@
 #include "src/dawn_node/binding/GPUBuffer.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUComputePipeline
@@ -42,4 +42,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUComputePipeline.h b/src/dawn_node/binding/GPUComputePipeline.h
index e9dde76..a4b8bca 100644
--- a/src/dawn_node/binding/GPUComputePipeline.h
+++ b/src/dawn_node/binding/GPUComputePipeline.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUComputePipeline is an implementation of interop::GPUComputePipeline that wraps a
     // wgpu::ComputePipeline.
@@ -43,6 +43,6 @@
         wgpu::ComputePipeline pipeline_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUPIPELINE_H_
diff --git a/src/dawn_node/binding/GPUDevice.cpp b/src/dawn_node/binding/GPUDevice.cpp
index 3b65fa2..cddab09 100644
--- a/src/dawn_node/binding/GPUDevice.cpp
+++ b/src/dawn_node/binding/GPUDevice.cpp
@@ -35,7 +35,7 @@
 #include "src/dawn_node/binding/GPUTexture.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     namespace {
 
@@ -527,4 +527,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUDevice.h b/src/dawn_node/binding/GPUDevice.h
index a3c5dce..368f86b 100644
--- a/src/dawn_node/binding/GPUDevice.h
+++ b/src/dawn_node/binding/GPUDevice.h
@@ -20,7 +20,7 @@
 #include "src/dawn_node/binding/AsyncRunner.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
     // GPUDevice is an implementation of interop::GPUDevice that wraps a wgpu::Device.
     class GPUDevice final : public interop::GPUDevice {
       public:
@@ -108,6 +108,6 @@
             lost_promises_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUDEVICE_H_
diff --git a/src/dawn_node/binding/GPUPipelineLayout.cpp b/src/dawn_node/binding/GPUPipelineLayout.cpp
index 861df21..712e3fe 100644
--- a/src/dawn_node/binding/GPUPipelineLayout.cpp
+++ b/src/dawn_node/binding/GPUPipelineLayout.cpp
@@ -16,7 +16,7 @@
 
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUPipelineLayout
@@ -32,4 +32,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUPipelineLayout.h b/src/dawn_node/binding/GPUPipelineLayout.h
index a1d0b87..02f07c1 100644
--- a/src/dawn_node/binding/GPUPipelineLayout.h
+++ b/src/dawn_node/binding/GPUPipelineLayout.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUPipelineLayout is an implementation of interop::GPUPipelineLayout that wraps a
     // wgpu::PipelineLayout.
@@ -41,6 +41,6 @@
         wgpu::PipelineLayout layout_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUPIPELINELAYOUT_H_
diff --git a/src/dawn_node/binding/GPUQuerySet.cpp b/src/dawn_node/binding/GPUQuerySet.cpp
index e56564a..836faf9 100644
--- a/src/dawn_node/binding/GPUQuerySet.cpp
+++ b/src/dawn_node/binding/GPUQuerySet.cpp
@@ -16,7 +16,7 @@
 
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUQuerySet
@@ -36,4 +36,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUQuerySet.h b/src/dawn_node/binding/GPUQuerySet.h
index 8669e16..46d8097 100644
--- a/src/dawn_node/binding/GPUQuerySet.h
+++ b/src/dawn_node/binding/GPUQuerySet.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUQuerySet is an implementation of interop::GPUQuerySet that wraps a wgpu::QuerySet.
     class GPUQuerySet final : public interop::GPUQuerySet {
@@ -41,6 +41,6 @@
         wgpu::QuerySet query_set_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUQUERYSET_H_
diff --git a/src/dawn_node/binding/GPUQueue.cpp b/src/dawn_node/binding/GPUQueue.cpp
index e1c0413..3b0f681 100644
--- a/src/dawn_node/binding/GPUQueue.cpp
+++ b/src/dawn_node/binding/GPUQueue.cpp
@@ -21,7 +21,7 @@
 #include "src/dawn_node/binding/GPUCommandBuffer.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUQueue
@@ -129,4 +129,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUQueue.h b/src/dawn_node/binding/GPUQueue.h
index 69952c6..f59b19f 100644
--- a/src/dawn_node/binding/GPUQueue.h
+++ b/src/dawn_node/binding/GPUQueue.h
@@ -21,7 +21,7 @@
 #include "src/dawn_node/binding/AsyncRunner.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUQueue is an implementation of interop::GPUQueue that wraps a wgpu::Queue.
     class GPUQueue final : public interop::GPUQueue {
@@ -56,6 +56,6 @@
         std::shared_ptr<AsyncRunner> async_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUQUEUE_H_
diff --git a/src/dawn_node/binding/GPURenderBundle.cpp b/src/dawn_node/binding/GPURenderBundle.cpp
index 2f42ac7..f49c9007 100644
--- a/src/dawn_node/binding/GPURenderBundle.cpp
+++ b/src/dawn_node/binding/GPURenderBundle.cpp
@@ -20,7 +20,7 @@
 #include "src/dawn_node/binding/GPURenderPipeline.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPURenderBundle
@@ -36,4 +36,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPURenderBundle.h b/src/dawn_node/binding/GPURenderBundle.h
index 9f824f2..bde0b50 100644
--- a/src/dawn_node/binding/GPURenderBundle.h
+++ b/src/dawn_node/binding/GPURenderBundle.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPURenderBundle is an implementation of interop::GPURenderBundle that wraps a
     // wgpu::RenderBundle.
@@ -41,6 +41,6 @@
         wgpu::RenderBundle bundle_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPURENDERBUNDLE_H_
diff --git a/src/dawn_node/binding/GPURenderBundleEncoder.cpp b/src/dawn_node/binding/GPURenderBundleEncoder.cpp
index 123741d..fcd7219 100644
--- a/src/dawn_node/binding/GPURenderBundleEncoder.cpp
+++ b/src/dawn_node/binding/GPURenderBundleEncoder.cpp
@@ -21,7 +21,7 @@
 #include "src/dawn_node/binding/GPURenderPipeline.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPURenderBundleEncoder
@@ -189,4 +189,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPURenderBundleEncoder.h b/src/dawn_node/binding/GPURenderBundleEncoder.h
index 3d11e33..9a4dbcb 100644
--- a/src/dawn_node/binding/GPURenderBundleEncoder.h
+++ b/src/dawn_node/binding/GPURenderBundleEncoder.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPURenderBundleEncoder is an implementation of interop::GPURenderBundleEncoder that wraps a
     // wgpu::RenderBundleEncoder.
@@ -81,6 +81,6 @@
         wgpu::RenderBundleEncoder enc_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPURENDERBUNDLEENCODER_H_
diff --git a/src/dawn_node/binding/GPURenderPassEncoder.cpp b/src/dawn_node/binding/GPURenderPassEncoder.cpp
index 5dce4f2..128cbf9 100644
--- a/src/dawn_node/binding/GPURenderPassEncoder.cpp
+++ b/src/dawn_node/binding/GPURenderPassEncoder.cpp
@@ -22,7 +22,7 @@
 #include "src/dawn_node/binding/GPURenderPipeline.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPURenderPassEncoder
@@ -259,4 +259,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPURenderPassEncoder.h b/src/dawn_node/binding/GPURenderPassEncoder.h
index 866aaab..452dc1a 100644
--- a/src/dawn_node/binding/GPURenderPassEncoder.h
+++ b/src/dawn_node/binding/GPURenderPassEncoder.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPURenderPassEncoder is an implementation of interop::GPURenderPassEncoder that wraps a
     // wgpu::RenderPassEncoder.
@@ -110,6 +110,6 @@
         wgpu::RenderPassEncoder enc_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPURENDERPASSENCODER_H_
diff --git a/src/dawn_node/binding/GPURenderPipeline.cpp b/src/dawn_node/binding/GPURenderPipeline.cpp
index 3f363fc..9683b80 100644
--- a/src/dawn_node/binding/GPURenderPipeline.cpp
+++ b/src/dawn_node/binding/GPURenderPipeline.cpp
@@ -18,7 +18,7 @@
 #include "src/dawn_node/binding/GPUBuffer.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPURenderPipeline
@@ -42,4 +42,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPURenderPipeline.h b/src/dawn_node/binding/GPURenderPipeline.h
index fc15fc6..acb8c53 100644
--- a/src/dawn_node/binding/GPURenderPipeline.h
+++ b/src/dawn_node/binding/GPURenderPipeline.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPURenderPipeline is an implementation of interop::GPURenderPipeline that wraps a
     // wgpu::RenderPipeline.
@@ -43,6 +43,6 @@
         wgpu::RenderPipeline pipeline_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPURENDERPIPELINE_H_
diff --git a/src/dawn_node/binding/GPUSampler.cpp b/src/dawn_node/binding/GPUSampler.cpp
index 6de3aa4..39d87a0 100644
--- a/src/dawn_node/binding/GPUSampler.cpp
+++ b/src/dawn_node/binding/GPUSampler.cpp
@@ -17,7 +17,7 @@
 #include "src/dawn_node/binding/Converter.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUSampler
@@ -33,4 +33,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUSampler.h b/src/dawn_node/binding/GPUSampler.h
index 24e77d2..9bae388 100644
--- a/src/dawn_node/binding/GPUSampler.h
+++ b/src/dawn_node/binding/GPUSampler.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
     // GPUSampler is an implementation of interop::GPUSampler that wraps a wgpu::Sampler.
     class GPUSampler final : public interop::GPUSampler {
       public:
@@ -39,6 +39,6 @@
         wgpu::Sampler sampler_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUSAMPLER_H_
diff --git a/src/dawn_node/binding/GPUShaderModule.cpp b/src/dawn_node/binding/GPUShaderModule.cpp
index 52efabd..6ac6645 100644
--- a/src/dawn_node/binding/GPUShaderModule.cpp
+++ b/src/dawn_node/binding/GPUShaderModule.cpp
@@ -18,7 +18,7 @@
 
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUShaderModule
@@ -122,4 +122,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUShaderModule.h b/src/dawn_node/binding/GPUShaderModule.h
index 2fcd140..57c49dd 100644
--- a/src/dawn_node/binding/GPUShaderModule.h
+++ b/src/dawn_node/binding/GPUShaderModule.h
@@ -21,7 +21,7 @@
 #include "src/dawn_node/binding/AsyncRunner.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUShaderModule is an implementation of interop::GPUShaderModule that wraps a
     // wgpu::ShaderModule.
@@ -45,6 +45,6 @@
         std::shared_ptr<AsyncRunner> async_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUSHADERMODULE_H_
diff --git a/src/dawn_node/binding/GPUSupportedLimits.cpp b/src/dawn_node/binding/GPUSupportedLimits.cpp
index 4a8399b..2c8c881 100644
--- a/src/dawn_node/binding/GPUSupportedLimits.cpp
+++ b/src/dawn_node/binding/GPUSupportedLimits.cpp
@@ -14,7 +14,7 @@
 
 #include "src/dawn_node/binding/GPUSupportedLimits.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUSupportedLimits
@@ -128,4 +128,4 @@
         return limits_.limits.maxComputeWorkgroupsPerDimension;
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUSupportedLimits.h b/src/dawn_node/binding/GPUSupportedLimits.h
index faed813..82b0ea6 100644
--- a/src/dawn_node/binding/GPUSupportedLimits.h
+++ b/src/dawn_node/binding/GPUSupportedLimits.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUSupportedLimits is an implementation of interop::GPUSupportedLimits.
     class GPUSupportedLimits final : public interop::GPUSupportedLimits {
@@ -59,6 +59,6 @@
         wgpu::SupportedLimits limits_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUSUPPORTEDLIMITS_H_
diff --git a/src/dawn_node/binding/GPUTexture.cpp b/src/dawn_node/binding/GPUTexture.cpp
index 284cd8a..3257f15 100644
--- a/src/dawn_node/binding/GPUTexture.cpp
+++ b/src/dawn_node/binding/GPUTexture.cpp
@@ -19,7 +19,7 @@
 #include "src/dawn_node/binding/GPUTextureView.h"
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUTexture
@@ -61,4 +61,4 @@
         UNIMPLEMENTED();
     }
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUTexture.h b/src/dawn_node/binding/GPUTexture.h
index f5a2a47..29e7621 100644
--- a/src/dawn_node/binding/GPUTexture.h
+++ b/src/dawn_node/binding/GPUTexture.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUTexture is an implementation of interop::GPUTexture that wraps a wgpu::Texture.
     class GPUTexture final : public interop::GPUTexture {
@@ -44,6 +44,6 @@
         wgpu::Texture texture_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUTEXTURE_H_
diff --git a/src/dawn_node/binding/GPUTextureView.cpp b/src/dawn_node/binding/GPUTextureView.cpp
index f03bc3f..11aa55f 100644
--- a/src/dawn_node/binding/GPUTextureView.cpp
+++ b/src/dawn_node/binding/GPUTextureView.cpp
@@ -16,7 +16,7 @@
 
 #include "src/dawn_node/utils/Debug.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     ////////////////////////////////////////////////////////////////////////////////
     // wgpu::bindings::GPUTextureView
@@ -32,4 +32,4 @@
         UNIMPLEMENTED();
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
diff --git a/src/dawn_node/binding/GPUTextureView.h b/src/dawn_node/binding/GPUTextureView.h
index 8590735..89b972e 100644
--- a/src/dawn_node/binding/GPUTextureView.h
+++ b/src/dawn_node/binding/GPUTextureView.h
@@ -20,7 +20,7 @@
 #include "napi.h"
 #include "src/dawn_node/interop/WebGPU.h"
 
-namespace wgpu { namespace binding {
+namespace wgpu::binding {
 
     // GPUTextureView is an implementation of interop::GPUTextureView that wraps a
     // wgpu::TextureView.
@@ -41,6 +41,6 @@
         wgpu::TextureView view_;
     };
 
-}}  // namespace wgpu::binding
+}  // namespace wgpu::binding
 
 #endif  // DAWN_NODE_BINDING_GPUTEXTUREVIEW_H_
diff --git a/src/dawn_node/interop/Core.cpp b/src/dawn_node/interop/Core.cpp
index 8ee22cf..7a671c8 100644
--- a/src/dawn_node/interop/Core.cpp
+++ b/src/dawn_node/interop/Core.cpp
@@ -14,7 +14,7 @@
 
 #include "src/dawn_node/interop/Core.h"
 
-namespace wgpu { namespace interop {
+namespace wgpu::interop {
 
     Result Success;
 
@@ -157,4 +157,4 @@
         return Napi::Value::From(env, value);
     }
 
-}}  // namespace wgpu::interop
+}  // namespace wgpu::interop
diff --git a/src/dawn_node/interop/Core.h b/src/dawn_node/interop/Core.h
index d4d0ec6..c0ec61e 100644
--- a/src/dawn_node/interop/Core.h
+++ b/src/dawn_node/interop/Core.h
@@ -45,7 +45,7 @@
         __FILE__, __FUNCTION__, __LINE__ \
     }
 
-namespace wgpu { namespace interop {
+namespace wgpu::interop {
 
     ////////////////////////////////////////////////////////////////////////////////
     // Primitive JavaScript types
@@ -687,6 +687,6 @@
         }
     }
 
-}}  // namespace wgpu::interop
+}  // namespace wgpu::interop
 
 #endif  //  DAWN_NODE_INTEROP_CORE_WEBGPU_H_
diff --git a/src/dawn_node/utils/Debug.h b/src/dawn_node/utils/Debug.h
index 3636df0..cf7c7d8 100644
--- a/src/dawn_node/utils/Debug.h
+++ b/src/dawn_node/utils/Debug.h
@@ -24,7 +24,7 @@
 
 #include "dawn/webgpu_cpp_print.h"
 
-namespace wgpu { namespace utils {
+namespace wgpu::utils {
 
     // Write() is a helper for printing container types to the std::ostream.
     // Write() is used by the LOG() macro below.
@@ -141,6 +141,6 @@
 #define UNREACHABLE(...) \
     ::wgpu::utils::Fatal("UNREACHABLE", __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)
 
-}}  // namespace wgpu::utils
+}  // namespace wgpu::utils
 
 #endif  // DAWNNODE_UTILS_DEBUG_H_
diff --git a/src/dawn_platform/tracing/EventTracer.cpp b/src/dawn_platform/tracing/EventTracer.cpp
index a110340..086e355 100644
--- a/src/dawn_platform/tracing/EventTracer.cpp
+++ b/src/dawn_platform/tracing/EventTracer.cpp
@@ -16,7 +16,7 @@
 #include "common/Assert.h"
 #include "dawn_platform/DawnPlatform.h"
 
-namespace dawn_platform { namespace tracing {
+namespace dawn_platform::tracing {
 
     const unsigned char* GetTraceCategoryEnabledFlag(Platform* platform, TraceCategory category) {
         static unsigned char disabled = 0;
@@ -55,4 +55,4 @@
         return static_cast<TraceEventHandle>(0);
     }
 
-}}  // namespace dawn_platform::tracing
+}  // namespace dawn_platform::tracing
diff --git a/src/dawn_platform/tracing/TraceEvent.h b/src/dawn_platform/tracing/TraceEvent.h
index 8d375ef..5afced9 100644
--- a/src/dawn_platform/tracing/TraceEvent.h
+++ b/src/dawn_platform/tracing/TraceEvent.h
@@ -754,7 +754,7 @@
 #define TRACE_VALUE_TYPE_STRING (static_cast<unsigned char>(6))
 #define TRACE_VALUE_TYPE_COPY_STRING (static_cast<unsigned char>(7))
 
-namespace dawn_platform { namespace TraceEvent {
+namespace dawn_platform::TraceEvent {
 
     // Specify these values when the corresponding argument of addTraceEvent is not
     // used.
@@ -986,6 +986,6 @@
             Data m_data;
         };
 
-}}  // namespace dawn_platform::TraceEvent
+}  // namespace dawn_platform::TraceEvent
 
 #endif  // DAWNPLATFORM_TRACING_TRACEEVENT_H_
diff --git a/src/dawn_wire/client/Adapter.cpp b/src/dawn_wire/client/Adapter.cpp
index db9986f..ce7bd33 100644
--- a/src/dawn_wire/client/Adapter.cpp
+++ b/src/dawn_wire/client/Adapter.cpp
@@ -17,7 +17,7 @@
 #include "common/Log.h"
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     Adapter::~Adapter() {
         mRequestDeviceRequests.CloseAll([](RequestDeviceData* request) {
@@ -130,4 +130,4 @@
         return nullptr;
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/Adapter.h b/src/dawn_wire/client/Adapter.h
index 26c8222..fcfaed9 100644
--- a/src/dawn_wire/client/Adapter.h
+++ b/src/dawn_wire/client/Adapter.h
@@ -23,7 +23,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class Adapter final : public ObjectBase {
       public:
@@ -65,6 +65,6 @@
         RequestTracker<RequestDeviceData> mRequestDeviceRequests;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_ADAPTER_H_
diff --git a/src/dawn_wire/client/Buffer.cpp b/src/dawn_wire/client/Buffer.cpp
index 5077b5a..51b3010 100644
--- a/src/dawn_wire/client/Buffer.cpp
+++ b/src/dawn_wire/client/Buffer.cpp
@@ -19,7 +19,7 @@
 #include "dawn_wire/client/Client.h"
 #include "dawn_wire/client/Device.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     // static
     WGPUBuffer Buffer::Create(Device* device, const WGPUBufferDescriptor* descriptor) {
@@ -402,4 +402,4 @@
         mMappedData = nullptr;
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/Buffer.h b/src/dawn_wire/client/Buffer.h
index 0a24384..f362621 100644
--- a/src/dawn_wire/client/Buffer.h
+++ b/src/dawn_wire/client/Buffer.h
@@ -21,7 +21,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class Device;
 
@@ -104,6 +104,6 @@
         std::weak_ptr<bool> mDeviceIsAlive;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_BUFFER_H_
diff --git a/src/dawn_wire/client/Client.cpp b/src/dawn_wire/client/Client.cpp
index 628232d..b01e8f5 100644
--- a/src/dawn_wire/client/Client.cpp
+++ b/src/dawn_wire/client/Client.cpp
@@ -17,7 +17,7 @@
 #include "common/Compiler.h"
 #include "dawn_wire/client/Device.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     namespace {
 
@@ -168,4 +168,4 @@
         return mDisconnected;
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/Client.h b/src/dawn_wire/client/Client.h
index aebf953..1e5e47f 100644
--- a/src/dawn_wire/client/Client.h
+++ b/src/dawn_wire/client/Client.h
@@ -26,7 +26,7 @@
 #include "dawn_wire/WireDeserializeAllocator.h"
 #include "dawn_wire/client/ClientBase_autogen.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class Device;
     class MemoryTransferService;
@@ -90,6 +90,6 @@
 
     std::unique_ptr<MemoryTransferService> CreateInlineMemoryTransferService();
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_CLIENT_H_
diff --git a/src/dawn_wire/client/ClientDoers.cpp b/src/dawn_wire/client/ClientDoers.cpp
index e6665ab..fd75a09 100644
--- a/src/dawn_wire/client/ClientDoers.cpp
+++ b/src/dawn_wire/client/ClientDoers.cpp
@@ -18,7 +18,7 @@
 
 #include <limits>
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     bool Client::DoDeviceUncapturedErrorCallback(Device* device,
                                                  WGPUErrorType errorType,
@@ -130,4 +130,4 @@
         return shaderModule->GetCompilationInfoCallback(requestSerial, status, info);
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/ClientInlineMemoryTransferService.cpp b/src/dawn_wire/client/ClientInlineMemoryTransferService.cpp
index 9cb0eed..f03969e 100644
--- a/src/dawn_wire/client/ClientInlineMemoryTransferService.cpp
+++ b/src/dawn_wire/client/ClientInlineMemoryTransferService.cpp
@@ -19,7 +19,7 @@
 
 #include <cstring>
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class InlineMemoryTransferService : public MemoryTransferService {
         class ReadHandleImpl : public ReadHandle {
@@ -128,4 +128,4 @@
         return std::make_unique<InlineMemoryTransferService>();
     }
 
-}}  //  namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/ClientMemoryTransferService_mock.cpp b/src/dawn_wire/client/ClientMemoryTransferService_mock.cpp
index 6a523f2..eed0aea 100644
--- a/src/dawn_wire/client/ClientMemoryTransferService_mock.cpp
+++ b/src/dawn_wire/client/ClientMemoryTransferService_mock.cpp
@@ -17,7 +17,7 @@
 #include <cstdio>
 #include "common/Assert.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     MockMemoryTransferService::MockReadHandle::MockReadHandle(MockMemoryTransferService* service)
         : ReadHandle(), mService(service) {
@@ -102,4 +102,4 @@
         return new MockWriteHandle(this);
     }
 
-}}  //  namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/ClientMemoryTransferService_mock.h b/src/dawn_wire/client/ClientMemoryTransferService_mock.h
index 5f9eeb0..0db3530 100644
--- a/src/dawn_wire/client/ClientMemoryTransferService_mock.h
+++ b/src/dawn_wire/client/ClientMemoryTransferService_mock.h
@@ -20,7 +20,7 @@
 #include "dawn_wire/WireClient.h"
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class MockMemoryTransferService : public MemoryTransferService {
       public:
@@ -94,6 +94,6 @@
         MOCK_METHOD(void, OnWriteHandleDestroy, (const void* WriteHandle));
     };
 
-}}  //  namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_CLIENTMEMORYTRANSFERSERVICE_MOCK_H_
diff --git a/src/dawn_wire/client/Device.cpp b/src/dawn_wire/client/Device.cpp
index 54d1053..daa7cfc 100644
--- a/src/dawn_wire/client/Device.cpp
+++ b/src/dawn_wire/client/Device.cpp
@@ -20,7 +20,7 @@
 #include "dawn_wire/client/Client.h"
 #include "dawn_wire/client/ObjectAllocator.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     Device::Device(Client* clientIn, uint32_t initialRefcount, uint32_t initialId)
         : ObjectBase(clientIn, initialRefcount, initialId), mIsAlive(std::make_shared<bool>()) {
@@ -339,4 +339,4 @@
         return true;
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/Device.h b/src/dawn_wire/client/Device.h
index 58be198..5ec5b25 100644
--- a/src/dawn_wire/client/Device.h
+++ b/src/dawn_wire/client/Device.h
@@ -26,7 +26,7 @@
 
 #include <memory>
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class Client;
     class Queue;
@@ -107,6 +107,6 @@
         std::shared_ptr<bool> mIsAlive;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_DEVICE_H_
diff --git a/src/dawn_wire/client/Instance.cpp b/src/dawn_wire/client/Instance.cpp
index cf3976c..9b69d33 100644
--- a/src/dawn_wire/client/Instance.cpp
+++ b/src/dawn_wire/client/Instance.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     Instance::~Instance() {
         mRequestAdapterRequests.CloseAll([](RequestAdapterData* request) {
@@ -98,4 +98,4 @@
         return true;
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/Instance.h b/src/dawn_wire/client/Instance.h
index 2733b9c..964523b 100644
--- a/src/dawn_wire/client/Instance.h
+++ b/src/dawn_wire/client/Instance.h
@@ -22,7 +22,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class Instance final : public ObjectBase {
       public:
@@ -51,6 +51,6 @@
         RequestTracker<RequestAdapterData> mRequestAdapterRequests;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_INSTANCE_H_
diff --git a/src/dawn_wire/client/LimitsAndFeatures.cpp b/src/dawn_wire/client/LimitsAndFeatures.cpp
index c4b4656..d33799f 100644
--- a/src/dawn_wire/client/LimitsAndFeatures.cpp
+++ b/src/dawn_wire/client/LimitsAndFeatures.cpp
@@ -17,7 +17,7 @@
 #include "common/Assert.h"
 #include "dawn_wire/SupportedFeatures.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     bool LimitsAndFeatures::GetLimits(WGPUSupportedLimits* limits) const {
         ASSERT(limits != nullptr);
@@ -60,4 +60,4 @@
         }
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/LimitsAndFeatures.h b/src/dawn_wire/client/LimitsAndFeatures.h
index 996dbdb..4d6cfca 100644
--- a/src/dawn_wire/client/LimitsAndFeatures.h
+++ b/src/dawn_wire/client/LimitsAndFeatures.h
@@ -19,7 +19,7 @@
 
 #include <unordered_set>
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class LimitsAndFeatures {
       public:
@@ -35,6 +35,6 @@
         std::unordered_set<WGPUFeatureName> mFeatures;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_LIMITSANDFEATURES_H_
diff --git a/src/dawn_wire/client/ObjectAllocator.h b/src/dawn_wire/client/ObjectAllocator.h
index 4572752..a2efd3b 100644
--- a/src/dawn_wire/client/ObjectAllocator.h
+++ b/src/dawn_wire/client/ObjectAllocator.h
@@ -23,7 +23,7 @@
 #include <memory>
 #include <vector>
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     template <typename T>
     class ObjectAllocator {
@@ -105,6 +105,6 @@
         std::vector<uint32_t> mFreeIds;
         std::vector<ObjectAndSerial> mObjects;
     };
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_OBJECTALLOCATOR_H_
diff --git a/src/dawn_wire/client/ObjectBase.h b/src/dawn_wire/client/ObjectBase.h
index ac257c8..ac6ae27 100644
--- a/src/dawn_wire/client/ObjectBase.h
+++ b/src/dawn_wire/client/ObjectBase.h
@@ -20,7 +20,7 @@
 #include "common/LinkedList.h"
 #include "dawn_wire/ObjectType_autogen.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class Client;
 
@@ -46,6 +46,6 @@
         const uint32_t id;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_OBJECTBASE_H_
diff --git a/src/dawn_wire/client/Queue.cpp b/src/dawn_wire/client/Queue.cpp
index daa44d7..1875b25 100644
--- a/src/dawn_wire/client/Queue.cpp
+++ b/src/dawn_wire/client/Queue.cpp
@@ -17,7 +17,7 @@
 #include "dawn_wire/client/Client.h"
 #include "dawn_wire/client/Device.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     Queue::~Queue() {
         ClearAllCallbacks(WGPUQueueWorkDoneStatus_Unknown);
@@ -95,4 +95,4 @@
         });
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/Queue.h b/src/dawn_wire/client/Queue.h
index 901acac..2d17736 100644
--- a/src/dawn_wire/client/Queue.h
+++ b/src/dawn_wire/client/Queue.h
@@ -21,7 +21,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class Queue final : public ObjectBase {
       public:
@@ -52,6 +52,6 @@
         RequestTracker<OnWorkDoneData> mOnWorkDoneRequests;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_QUEUE_H_
diff --git a/src/dawn_wire/client/RequestTracker.h b/src/dawn_wire/client/RequestTracker.h
index 56691c2..8928033 100644
--- a/src/dawn_wire/client/RequestTracker.h
+++ b/src/dawn_wire/client/RequestTracker.h
@@ -21,7 +21,7 @@
 #include <cstdint>
 #include <map>
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class Device;
     class MemoryTransferService;
@@ -77,6 +77,6 @@
         std::map<uint64_t, Request> mRequests;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_REQUESTTRACKER_H_
diff --git a/src/dawn_wire/client/ShaderModule.cpp b/src/dawn_wire/client/ShaderModule.cpp
index c28b978..1e491b2 100644
--- a/src/dawn_wire/client/ShaderModule.cpp
+++ b/src/dawn_wire/client/ShaderModule.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_wire/client/Client.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     ShaderModule::~ShaderModule() {
         ClearAllCallbacks(WGPUCompilationInfoRequestStatus_Unknown);
@@ -61,4 +61,4 @@
         });
     }
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
diff --git a/src/dawn_wire/client/ShaderModule.h b/src/dawn_wire/client/ShaderModule.h
index f12a4d0..2359be3 100644
--- a/src/dawn_wire/client/ShaderModule.h
+++ b/src/dawn_wire/client/ShaderModule.h
@@ -20,7 +20,7 @@
 #include "dawn_wire/client/ObjectBase.h"
 #include "dawn_wire/client/RequestTracker.h"
 
-namespace dawn_wire { namespace client {
+namespace dawn_wire::client {
 
     class ShaderModule final : public ObjectBase {
       public:
@@ -43,6 +43,6 @@
         RequestTracker<CompilationInfoRequest> mCompilationInfoRequests;
     };
 
-}}  // namespace dawn_wire::client
+}  // namespace dawn_wire::client
 
 #endif  // DAWNWIRE_CLIENT_SHADER_MODULE_H_
diff --git a/src/dawn_wire/server/ObjectStorage.h b/src/dawn_wire/server/ObjectStorage.h
index bc45b26..c48235e 100644
--- a/src/dawn_wire/server/ObjectStorage.h
+++ b/src/dawn_wire/server/ObjectStorage.h
@@ -22,7 +22,7 @@
 #include <map>
 #include <unordered_set>
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     struct DeviceInfo {
         std::unordered_set<uint64_t> childObjectTypesAndIds;
@@ -223,6 +223,6 @@
         std::map<T, ObjectId> mTable;
     };
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
 
 #endif  // DAWNWIRE_SERVER_OBJECTSTORAGE_H_
diff --git a/src/dawn_wire/server/Server.cpp b/src/dawn_wire/server/Server.cpp
index 13ac756..57da184 100644
--- a/src/dawn_wire/server/Server.cpp
+++ b/src/dawn_wire/server/Server.cpp
@@ -15,7 +15,7 @@
 #include "dawn_wire/server/Server.h"
 #include "dawn_wire/WireServer.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     Server::Server(const DawnProcTable& procs,
                    CommandSerializer* serializer,
@@ -210,4 +210,4 @@
         return true;
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/dawn_wire/server/Server.h b/src/dawn_wire/server/Server.h
index e76f62b..69de4ab 100644
--- a/src/dawn_wire/server/Server.h
+++ b/src/dawn_wire/server/Server.h
@@ -18,7 +18,7 @@
 #include "dawn_wire/ChunkedCommandSerializer.h"
 #include "dawn_wire/server/ServerBase_autogen.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     class Server;
     class MemoryTransferService;
@@ -238,6 +238,6 @@
 
     std::unique_ptr<MemoryTransferService> CreateInlineMemoryTransferService();
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
 
 #endif  // DAWNWIRE_SERVER_SERVER_H_
diff --git a/src/dawn_wire/server/ServerAdapter.cpp b/src/dawn_wire/server/ServerAdapter.cpp
index c70b8d8..2d723ae 100644
--- a/src/dawn_wire/server/ServerAdapter.cpp
+++ b/src/dawn_wire/server/ServerAdapter.cpp
@@ -16,7 +16,7 @@
 
 #include "dawn_wire/SupportedFeatures.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     bool Server::DoAdapterRequestDevice(ObjectId adapterId,
                                         uint64_t requestSerial,
@@ -107,4 +107,4 @@
         SerializeCommand(cmd);
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/dawn_wire/server/ServerBuffer.cpp b/src/dawn_wire/server/ServerBuffer.cpp
index 86f011e..03192f6 100644
--- a/src/dawn_wire/server/ServerBuffer.cpp
+++ b/src/dawn_wire/server/ServerBuffer.cpp
@@ -19,7 +19,7 @@
 
 #include <memory>
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     bool Server::PreHandleBufferUnmap(const BufferUnmapCmd& cmd) {
         auto* buffer = BufferObjects().Get(cmd.selfId);
@@ -279,4 +279,4 @@
         });
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/dawn_wire/server/ServerDevice.cpp b/src/dawn_wire/server/ServerDevice.cpp
index 139ed3d..6a52411 100644
--- a/src/dawn_wire/server/ServerDevice.cpp
+++ b/src/dawn_wire/server/ServerDevice.cpp
@@ -14,7 +14,7 @@
 
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     namespace {
 
@@ -201,4 +201,4 @@
         SerializeCommand(cmd);
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/dawn_wire/server/ServerInlineMemoryTransferService.cpp b/src/dawn_wire/server/ServerInlineMemoryTransferService.cpp
index 71347d2..2fcbad7 100644
--- a/src/dawn_wire/server/ServerInlineMemoryTransferService.cpp
+++ b/src/dawn_wire/server/ServerInlineMemoryTransferService.cpp
@@ -18,7 +18,7 @@
 
 #include <cstring>
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     class InlineMemoryTransferService : public MemoryTransferService {
       public:
@@ -91,4 +91,4 @@
         return std::make_unique<InlineMemoryTransferService>();
     }
 
-}}  //  namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/dawn_wire/server/ServerInstance.cpp b/src/dawn_wire/server/ServerInstance.cpp
index 18d6740..4369d0c 100644
--- a/src/dawn_wire/server/ServerInstance.cpp
+++ b/src/dawn_wire/server/ServerInstance.cpp
@@ -18,7 +18,7 @@
 
 #include <algorithm>
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     bool Server::DoInstanceRequestAdapter(ObjectId instanceId,
                                           uint64_t requestSerial,
@@ -97,4 +97,4 @@
         SerializeCommand(cmd);
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/dawn_wire/server/ServerMemoryTransferService_mock.cpp b/src/dawn_wire/server/ServerMemoryTransferService_mock.cpp
index 165c6d3..0bb1442 100644
--- a/src/dawn_wire/server/ServerMemoryTransferService_mock.cpp
+++ b/src/dawn_wire/server/ServerMemoryTransferService_mock.cpp
@@ -16,7 +16,7 @@
 
 #include "common/Assert.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     MockMemoryTransferService::MockReadHandle::MockReadHandle(MockMemoryTransferService* service)
         : ReadHandle(), mService(service) {
@@ -88,4 +88,4 @@
         return new MockWriteHandle(this);
     }
 
-}}  //  namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/dawn_wire/server/ServerMemoryTransferService_mock.h b/src/dawn_wire/server/ServerMemoryTransferService_mock.h
index 23cf9ed..36510e6 100644
--- a/src/dawn_wire/server/ServerMemoryTransferService_mock.h
+++ b/src/dawn_wire/server/ServerMemoryTransferService_mock.h
@@ -20,7 +20,7 @@
 #include "dawn_wire/WireServer.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     class MockMemoryTransferService : public MemoryTransferService {
       public:
@@ -103,6 +103,6 @@
         MOCK_METHOD(void, OnWriteHandleDestroy, (const WriteHandle* writeHandle));
     };
 
-}}  //  namespace dawn_wire::server
+}  // namespace dawn_wire::server
 
 #endif  // DAWNWIRE_SERVER_SERVERMEMORYTRANSFERSERVICE_MOCK_H_
diff --git a/src/dawn_wire/server/ServerQueue.cpp b/src/dawn_wire/server/ServerQueue.cpp
index 54f573e..656c833 100644
--- a/src/dawn_wire/server/ServerQueue.cpp
+++ b/src/dawn_wire/server/ServerQueue.cpp
@@ -15,7 +15,7 @@
 #include "common/Assert.h"
 #include "dawn_wire/server/Server.h"
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     void Server::OnQueueWorkDone(QueueWorkDoneUserdata* data, WGPUQueueWorkDoneStatus status) {
         ReturnQueueWorkDoneCallbackCmd cmd;
@@ -100,4 +100,4 @@
         return true;
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/dawn_wire/server/ServerShaderModule.cpp b/src/dawn_wire/server/ServerShaderModule.cpp
index 3a7a671..072ad73 100644
--- a/src/dawn_wire/server/ServerShaderModule.cpp
+++ b/src/dawn_wire/server/ServerShaderModule.cpp
@@ -16,7 +16,7 @@
 
 #include <memory>
 
-namespace dawn_wire { namespace server {
+namespace dawn_wire::server {
 
     bool Server::DoShaderModuleGetCompilationInfo(ObjectId shaderModuleId, uint64_t requestSerial) {
         auto* shaderModule = ShaderModuleObjects().Get(shaderModuleId);
@@ -46,4 +46,4 @@
         SerializeCommand(cmd);
     }
 
-}}  // namespace dawn_wire::server
+}  // namespace dawn_wire::server
diff --git a/src/include/dawn_native/D3D12Backend.h b/src/include/dawn_native/D3D12Backend.h
index a6644b1..8973af1 100644
--- a/src/include/dawn_native/D3D12Backend.h
+++ b/src/include/dawn_native/D3D12Backend.h
@@ -28,7 +28,7 @@
 struct ID3D12Device;
 struct ID3D12Resource;
 
-namespace dawn_native { namespace d3d12 {
+namespace dawn_native::d3d12 {
 
     class D3D11on12ResourceCache;
 
@@ -101,6 +101,6 @@
         Microsoft::WRL::ComPtr<IDXGIAdapter> dxgiAdapter;
     };
 
-}}  // namespace dawn_native::d3d12
+}  // namespace dawn_native::d3d12
 
 #endif  // DAWNNATIVE_D3D12BACKEND_H_
diff --git a/src/include/dawn_native/MetalBackend.h b/src/include/dawn_native/MetalBackend.h
index 0346843..a8c1106 100644
--- a/src/include/dawn_native/MetalBackend.h
+++ b/src/include/dawn_native/MetalBackend.h
@@ -32,7 +32,7 @@
 #    import <Metal/Metal.h>
 #endif  //__OBJC__
 
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     struct DAWN_NATIVE_EXPORT AdapterDiscoveryOptions : public AdapterDiscoveryOptionsBase {
         AdapterDiscoveryOptions();
@@ -56,14 +56,14 @@
     // scheduled could lead to races in who gets scheduled first and incorrect rendering.
     DAWN_NATIVE_EXPORT void WaitForCommandsToBeScheduled(WGPUDevice device);
 
-}}  // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 
 #ifdef __OBJC__
-namespace dawn_native { namespace metal {
+namespace dawn_native::metal {
 
     DAWN_NATIVE_EXPORT id<MTLDevice> GetMetalDevice(WGPUDevice device);
 
-}}      // namespace dawn_native::metal
+}  // namespace dawn_native::metal
 #endif  // __OBJC__
 
 #pragma clang diagnostic pop
diff --git a/src/include/dawn_native/NullBackend.h b/src/include/dawn_native/NullBackend.h
index 5762a77..02f8b95 100644
--- a/src/include/dawn_native/NullBackend.h
+++ b/src/include/dawn_native/NullBackend.h
@@ -18,8 +18,8 @@
 #include <dawn/dawn_wsi.h>
 #include <dawn_native/DawnNative.h>
 
-namespace dawn_native { namespace null {
+namespace dawn_native::null {
     DAWN_NATIVE_EXPORT DawnSwapChainImplementation CreateNativeSwapChainImpl();
-}}  // namespace dawn_native::null
+}  // namespace dawn_native::null
 
 #endif  // DAWNNATIVE_NULLBACKEND_H_
diff --git a/src/include/dawn_native/OpenGLBackend.h b/src/include/dawn_native/OpenGLBackend.h
index 81ab1f8..d8d4afd 100644
--- a/src/include/dawn_native/OpenGLBackend.h
+++ b/src/include/dawn_native/OpenGLBackend.h
@@ -20,7 +20,7 @@
 #include <dawn/dawn_wsi.h>
 #include <dawn_native/DawnNative.h>
 
-namespace dawn_native { namespace opengl {
+namespace dawn_native::opengl {
 
     struct DAWN_NATIVE_EXPORT AdapterDiscoveryOptions : public AdapterDiscoveryOptionsBase {
         AdapterDiscoveryOptions();
@@ -50,6 +50,6 @@
     DAWN_NATIVE_EXPORT WGPUTexture
     WrapExternalEGLImage(WGPUDevice device, const ExternalImageDescriptorEGLImage* descriptor);
 
-}}  // namespace dawn_native::opengl
+}  // namespace dawn_native::opengl
 
 #endif  // DAWNNATIVE_OPENGLBACKEND_H_
diff --git a/src/include/dawn_native/VulkanBackend.h b/src/include/dawn_native/VulkanBackend.h
index 888ef27..4c8cfb5 100644
--- a/src/include/dawn_native/VulkanBackend.h
+++ b/src/include/dawn_native/VulkanBackend.h
@@ -22,7 +22,7 @@
 
 #include <vector>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     DAWN_NATIVE_EXPORT VkInstance GetInstance(WGPUDevice device);
 
@@ -135,6 +135,6 @@
                                                   VkImageLayout desiredLayout,
                                                   ExternalImageExportInfoVk* info);
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
 
 #endif  // DAWNNATIVE_VULKANBACKEND_H_
diff --git a/src/tests/white_box/VulkanImageWrappingTestsDmaBuf.cpp b/src/tests/white_box/VulkanImageWrappingTestsDmaBuf.cpp
index 9786c6a..c0afd94 100644
--- a/src/tests/white_box/VulkanImageWrappingTestsDmaBuf.cpp
+++ b/src/tests/white_box/VulkanImageWrappingTestsDmaBuf.cpp
@@ -28,7 +28,7 @@
 #include <fcntl.h>
 #include <gbm.h>
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -884,4 +884,4 @@
     DAWN_INSTANTIATE_TEST(VulkanImageWrappingValidationTests, VulkanBackend());
     DAWN_INSTANTIATE_TEST(VulkanImageWrappingUsageTests, VulkanBackend());
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan
diff --git a/src/tests/white_box/VulkanImageWrappingTestsOpaqueFD.cpp b/src/tests/white_box/VulkanImageWrappingTestsOpaqueFD.cpp
index 1bf503e..c0923c9 100644
--- a/src/tests/white_box/VulkanImageWrappingTestsOpaqueFD.cpp
+++ b/src/tests/white_box/VulkanImageWrappingTestsOpaqueFD.cpp
@@ -25,7 +25,7 @@
 #include "utils/SystemUtils.h"
 #include "utils/WGPUHelpers.h"
 
-namespace dawn_native { namespace vulkan {
+namespace dawn_native::vulkan {
 
     namespace {
 
@@ -1016,4 +1016,4 @@
     DAWN_INSTANTIATE_TEST(VulkanImageWrappingValidationTests, VulkanBackend());
     DAWN_INSTANTIATE_TEST(VulkanImageWrappingUsageTests, VulkanBackend());
 
-}}  // namespace dawn_native::vulkan
+}  // namespace dawn_native::vulkan