Format: src/backend/d3d12
diff --git a/src/backend/d3d12/BindGroupD3D12.cpp b/src/backend/d3d12/BindGroupD3D12.cpp
index f572aff..e5b4967 100644
--- a/src/backend/d3d12/BindGroupD3D12.cpp
+++ b/src/backend/d3d12/BindGroupD3D12.cpp
@@ -12,23 +12,26 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "common/BitSetIterator.h"
 #include "backend/d3d12/BindGroupD3D12.h"
 #include "backend/d3d12/BindGroupLayoutD3D12.h"
 #include "backend/d3d12/BufferD3D12.h"
 #include "backend/d3d12/SamplerD3D12.h"
 #include "backend/d3d12/TextureD3D12.h"
+#include "common/BitSetIterator.h"
 
 #include "backend/d3d12/D3D12Backend.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     BindGroup::BindGroup(Device* device, BindGroupBuilder* builder)
         : BindGroupBase(builder), mDevice(device) {
     }
 
-    void BindGroup::RecordDescriptors(const DescriptorHeapHandle &cbvUavSrvHeapStart, uint32_t* cbvUavSrvHeapOffset, const DescriptorHeapHandle &samplerHeapStart, uint32_t* samplerHeapOffset, uint64_t serial) {
+    void BindGroup::RecordDescriptors(const DescriptorHeapHandle& cbvUavSrvHeapStart,
+                                      uint32_t* cbvUavSrvHeapOffset,
+                                      const DescriptorHeapHandle& samplerHeapStart,
+                                      uint32_t* samplerHeapOffset,
+                                      uint64_t serial) {
         mHeapSerial = serial;
 
         const auto* bgl = ToBackend(GetLayout());
@@ -43,34 +46,36 @@
         auto d3d12Device = mDevice->GetD3D12Device();
         for (uint32_t binding : IterateBitSet(layout.mask)) {
             switch (layout.types[binding]) {
-                case nxt::BindingType::UniformBuffer:
-                    {
-                        auto* view = ToBackend(GetBindingAsBufferView(binding));
-                        auto& cbv = view->GetCBVDescriptor();
-                        d3d12Device->CreateConstantBufferView(&cbv, cbvUavSrvHeapStart.GetCPUHandle(*cbvUavSrvHeapOffset + bindingOffsets[binding]));
-                    }
-                    break;
-                case nxt::BindingType::StorageBuffer:
-                    {
-                        auto* view = ToBackend(GetBindingAsBufferView(binding));
-                        auto& uav = view->GetUAVDescriptor();
-                        d3d12Device->CreateUnorderedAccessView(ToBackend(view->GetBuffer())->GetD3D12Resource().Get(), nullptr, &uav, cbvUavSrvHeapStart.GetCPUHandle(*cbvUavSrvHeapOffset + bindingOffsets[binding]));
-                    }
-                    break;
-                case nxt::BindingType::SampledTexture:
-                    {
-                        auto* view = ToBackend(GetBindingAsTextureView(binding));
-                        auto& srv = view->GetSRVDescriptor();
-                        d3d12Device->CreateShaderResourceView(ToBackend(view->GetTexture())->GetD3D12Resource(), &srv, cbvUavSrvHeapStart.GetCPUHandle(*cbvUavSrvHeapOffset + bindingOffsets[binding]));
-                    }
-                    break;
-                case nxt::BindingType::Sampler:
-                    {
-                        auto* sampler = ToBackend(GetBindingAsSampler(binding));
-                        auto& samplerDesc = sampler->GetSamplerDescriptor();
-                        d3d12Device->CreateSampler(&samplerDesc, samplerHeapStart.GetCPUHandle(*samplerHeapOffset + bindingOffsets[binding]));
-                    }
-                    break;
+                case nxt::BindingType::UniformBuffer: {
+                    auto* view = ToBackend(GetBindingAsBufferView(binding));
+                    auto& cbv = view->GetCBVDescriptor();
+                    d3d12Device->CreateConstantBufferView(
+                        &cbv, cbvUavSrvHeapStart.GetCPUHandle(*cbvUavSrvHeapOffset +
+                                                              bindingOffsets[binding]));
+                } break;
+                case nxt::BindingType::StorageBuffer: {
+                    auto* view = ToBackend(GetBindingAsBufferView(binding));
+                    auto& uav = view->GetUAVDescriptor();
+                    d3d12Device->CreateUnorderedAccessView(
+                        ToBackend(view->GetBuffer())->GetD3D12Resource().Get(), nullptr, &uav,
+                        cbvUavSrvHeapStart.GetCPUHandle(*cbvUavSrvHeapOffset +
+                                                        bindingOffsets[binding]));
+                } break;
+                case nxt::BindingType::SampledTexture: {
+                    auto* view = ToBackend(GetBindingAsTextureView(binding));
+                    auto& srv = view->GetSRVDescriptor();
+                    d3d12Device->CreateShaderResourceView(
+                        ToBackend(view->GetTexture())->GetD3D12Resource(), &srv,
+                        cbvUavSrvHeapStart.GetCPUHandle(*cbvUavSrvHeapOffset +
+                                                        bindingOffsets[binding]));
+                } break;
+                case nxt::BindingType::Sampler: {
+                    auto* sampler = ToBackend(GetBindingAsSampler(binding));
+                    auto& samplerDesc = sampler->GetSamplerDescriptor();
+                    d3d12Device->CreateSampler(
+                        &samplerDesc, samplerHeapStart.GetCPUHandle(*samplerHeapOffset +
+                                                                    bindingOffsets[binding]));
+                } break;
             }
         }
 
@@ -91,5 +96,4 @@
         return mHeapSerial;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/BindGroupD3D12.h b/src/backend/d3d12/BindGroupD3D12.h
index 5f36662..30d50bd 100644
--- a/src/backend/d3d12/BindGroupD3D12.h
+++ b/src/backend/d3d12/BindGroupD3D12.h
@@ -21,30 +21,32 @@
 
 #include "backend/d3d12/DescriptorHeapAllocator.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class BindGroup : public BindGroupBase {
-        public:
-            BindGroup(Device* device, BindGroupBuilder* builder);
+      public:
+        BindGroup(Device* device, BindGroupBuilder* builder);
 
-            void RecordDescriptors(const DescriptorHeapHandle &cbvSrvUavHeapStart, uint32_t* cbvUavSrvHeapOffset, const DescriptorHeapHandle &samplerHeapStart, uint32_t* samplerHeapOffset, uint64_t serial);
-            uint32_t GetCbvUavSrvHeapOffset() const;
-            uint32_t GetSamplerHeapOffset() const;
-            uint64_t GetHeapSerial() const;
+        void RecordDescriptors(const DescriptorHeapHandle& cbvSrvUavHeapStart,
+                               uint32_t* cbvUavSrvHeapOffset,
+                               const DescriptorHeapHandle& samplerHeapStart,
+                               uint32_t* samplerHeapOffset,
+                               uint64_t serial);
+        uint32_t GetCbvUavSrvHeapOffset() const;
+        uint32_t GetSamplerHeapOffset() const;
+        uint64_t GetHeapSerial() const;
 
-        private:
-            Device* mDevice;
-            uint32_t mCbvUavSrvHeapOffset;
-            uint32_t mSamplerHeapOffset;
-            uint32_t mCbvUavSrvCount = 0;
-            uint32_t mSamplerCount = 0;
-            uint64_t mHeapSerial = 0;
+      private:
+        Device* mDevice;
+        uint32_t mCbvUavSrvHeapOffset;
+        uint32_t mSamplerHeapOffset;
+        uint32_t mCbvUavSrvCount = 0;
+        uint32_t mSamplerCount = 0;
+        uint64_t mHeapSerial = 0;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_BINDGROUPD3D12_H_
+#endif  // BACKEND_D3D12_BINDGROUPD3D12_H_
diff --git a/src/backend/d3d12/BindGroupLayoutD3D12.cpp b/src/backend/d3d12/BindGroupLayoutD3D12.cpp
index 38b68c0..ba29fce 100644
--- a/src/backend/d3d12/BindGroupLayoutD3D12.cpp
+++ b/src/backend/d3d12/BindGroupLayoutD3D12.cpp
@@ -14,15 +14,13 @@
 
 #include "backend/d3d12/BindGroupLayoutD3D12.h"
 
-#include "common/BitSetIterator.h"
 #include "backend/d3d12/D3D12Backend.h"
+#include "common/BitSetIterator.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     BindGroupLayout::BindGroupLayout(Device* device, BindGroupLayoutBuilder* builder)
-        : BindGroupLayoutBase(builder), mDevice(device), mDescriptorCounts {}  {
-
+        : BindGroupLayoutBase(builder), mDevice(device), mDescriptorCounts{} {
         const auto& groupInfo = GetBindingInfo();
 
         for (uint32_t binding : IterateBitSet(groupInfo.mask)) {
@@ -42,7 +40,8 @@
             }
         }
 
-        auto SetDescriptorRange = [&](uint32_t index, uint32_t count, D3D12_DESCRIPTOR_RANGE_TYPE type) -> bool {
+        auto SetDescriptorRange = [&](uint32_t index, uint32_t count,
+                                      D3D12_DESCRIPTOR_RANGE_TYPE type) -> bool {
             if (count == 0) {
                 return false;
             }
@@ -52,7 +51,8 @@
             range.NumDescriptors = count;
             range.RegisterSpace = 0;
             range.OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
-            // These ranges will be copied and range.BaseShaderRegister will be set in d3d12::PipelineLayout to account for bind group register offsets
+            // These ranges will be copied and range.BaseShaderRegister will be set in
+            // d3d12::PipelineLayout to account for bind group register offsets
             return true;
         };
 
@@ -60,23 +60,27 @@
 
         // Ranges 0-2 contain the CBV, UAV, and SRV ranges, if they exist, tightly packed
         // Range 3 contains the Sampler range, if there is one
-        if (SetDescriptorRange(rangeIndex, mDescriptorCounts[CBV], D3D12_DESCRIPTOR_RANGE_TYPE_CBV)) {
+        if (SetDescriptorRange(rangeIndex, mDescriptorCounts[CBV],
+                               D3D12_DESCRIPTOR_RANGE_TYPE_CBV)) {
             rangeIndex++;
         }
-        if (SetDescriptorRange(rangeIndex, mDescriptorCounts[UAV], D3D12_DESCRIPTOR_RANGE_TYPE_UAV)) {
+        if (SetDescriptorRange(rangeIndex, mDescriptorCounts[UAV],
+                               D3D12_DESCRIPTOR_RANGE_TYPE_UAV)) {
             rangeIndex++;
         }
-        if (SetDescriptorRange(rangeIndex, mDescriptorCounts[SRV], D3D12_DESCRIPTOR_RANGE_TYPE_SRV)) {
+        if (SetDescriptorRange(rangeIndex, mDescriptorCounts[SRV],
+                               D3D12_DESCRIPTOR_RANGE_TYPE_SRV)) {
             rangeIndex++;
         }
-        SetDescriptorRange(Sampler, mDescriptorCounts[Sampler], D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER);
+        SetDescriptorRange(Sampler, mDescriptorCounts[Sampler],
+                           D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER);
 
         // descriptors ranges are offset by the offset + size of the previous range
         std::array<uint32_t, DescriptorType::Count> descriptorOffsets;
         descriptorOffsets[CBV] = 0;
         descriptorOffsets[UAV] = descriptorOffsets[CBV] + mDescriptorCounts[CBV];
         descriptorOffsets[SRV] = descriptorOffsets[UAV] + mDescriptorCounts[UAV];
-        descriptorOffsets[Sampler] = 0; // samplers are in a different heap
+        descriptorOffsets[Sampler] = 0;  // samplers are in a different heap
 
         for (uint32_t binding : IterateBitSet(groupInfo.mask)) {
             switch (groupInfo.types[binding]) {
@@ -101,11 +105,9 @@
     }
 
     uint32_t BindGroupLayout::GetCbvUavSrvDescriptorTableSize() const {
-        return (
-            static_cast<uint32_t>(mDescriptorCounts[CBV] > 0) +
-            static_cast<uint32_t>(mDescriptorCounts[UAV] > 0) +
-            static_cast<uint32_t>(mDescriptorCounts[SRV] > 0)
-        );
+        return (static_cast<uint32_t>(mDescriptorCounts[CBV] > 0) +
+                static_cast<uint32_t>(mDescriptorCounts[UAV] > 0) +
+                static_cast<uint32_t>(mDescriptorCounts[SRV] > 0));
     }
 
     uint32_t BindGroupLayout::GetSamplerDescriptorTableSize() const {
@@ -128,5 +130,4 @@
         return &mRanges[Sampler];
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/BindGroupLayoutD3D12.h b/src/backend/d3d12/BindGroupLayoutD3D12.h
index c4a57b6..5ce2aab 100644
--- a/src/backend/d3d12/BindGroupLayoutD3D12.h
+++ b/src/backend/d3d12/BindGroupLayoutD3D12.h
@@ -19,39 +19,37 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class BindGroupLayout : public BindGroupLayoutBase {
-        public:
-            BindGroupLayout(Device* device, BindGroupLayoutBuilder* builder);
+      public:
+        BindGroupLayout(Device* device, BindGroupLayoutBuilder* builder);
 
-            enum DescriptorType {
-                CBV,
-                UAV,
-                SRV,
-                Sampler,
-                Count,
-            };
+        enum DescriptorType {
+            CBV,
+            UAV,
+            SRV,
+            Sampler,
+            Count,
+        };
 
-            const std::array<uint32_t, kMaxBindingsPerGroup>& GetBindingOffsets() const;
-            uint32_t GetCbvUavSrvDescriptorTableSize() const;
-            uint32_t GetSamplerDescriptorTableSize() const;
-            uint32_t GetCbvUavSrvDescriptorCount() const;
-            uint32_t GetSamplerDescriptorCount() const;
-            const D3D12_DESCRIPTOR_RANGE* GetCbvUavSrvDescriptorRanges() const;
-            const D3D12_DESCRIPTOR_RANGE* GetSamplerDescriptorRanges() const;
+        const std::array<uint32_t, kMaxBindingsPerGroup>& GetBindingOffsets() const;
+        uint32_t GetCbvUavSrvDescriptorTableSize() const;
+        uint32_t GetSamplerDescriptorTableSize() const;
+        uint32_t GetCbvUavSrvDescriptorCount() const;
+        uint32_t GetSamplerDescriptorCount() const;
+        const D3D12_DESCRIPTOR_RANGE* GetCbvUavSrvDescriptorRanges() const;
+        const D3D12_DESCRIPTOR_RANGE* GetSamplerDescriptorRanges() const;
 
-        private:
-            Device* mDevice;
-            std::array<uint32_t, kMaxBindingsPerGroup> mBindingOffsets;
-            std::array<uint32_t, DescriptorType::Count> mDescriptorCounts;
-            D3D12_DESCRIPTOR_RANGE mRanges[DescriptorType::Count];
+      private:
+        Device* mDevice;
+        std::array<uint32_t, kMaxBindingsPerGroup> mBindingOffsets;
+        std::array<uint32_t, DescriptorType::Count> mDescriptorCounts;
+        D3D12_DESCRIPTOR_RANGE mRanges[DescriptorType::Count];
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_BINDGROUPLAYOUTD3D12_H_
+#endif  // BACKEND_D3D12_BINDGROUPLAYOUTD3D12_H_
diff --git a/src/backend/d3d12/BlendStateD3D12.cpp b/src/backend/d3d12/BlendStateD3D12.cpp
index c0ac790..d959507 100644
--- a/src/backend/d3d12/BlendStateD3D12.cpp
+++ b/src/backend/d3d12/BlendStateD3D12.cpp
@@ -17,12 +17,11 @@
 #include "backend/d3d12/D3D12Backend.h"
 #include "common/Assert.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     namespace {
         D3D12_BLEND D3D12Blend(nxt::BlendFactor factor) {
-            switch(factor) {
+            switch (factor) {
                 case nxt::BlendFactor::Zero:
                     return D3D12_BLEND_ZERO;
                 case nxt::BlendFactor::One:
@@ -55,7 +54,7 @@
         }
 
         D3D12_BLEND_OP D3D12BlendOperation(nxt::BlendOperation operation) {
-            switch(operation) {
+            switch (operation) {
                 case nxt::BlendOperation::Add:
                     return D3D12_BLEND_OP_ADD;
                 case nxt::BlendOperation::Subtract:
@@ -72,13 +71,21 @@
         }
 
         uint8_t D3D12RenderTargetWriteMask(nxt::ColorWriteMask colorWriteMask) {
-            static_assert(static_cast<D3D12_COLOR_WRITE_ENABLE>(nxt::ColorWriteMask::Red) == D3D12_COLOR_WRITE_ENABLE_RED, "ColorWriteMask values must match");
-            static_assert(static_cast<D3D12_COLOR_WRITE_ENABLE>(nxt::ColorWriteMask::Green) == D3D12_COLOR_WRITE_ENABLE_GREEN, "ColorWriteMask values must match");
-            static_assert(static_cast<D3D12_COLOR_WRITE_ENABLE>(nxt::ColorWriteMask::Blue) == D3D12_COLOR_WRITE_ENABLE_BLUE, "ColorWriteMask values must match");
-            static_assert(static_cast<D3D12_COLOR_WRITE_ENABLE>(nxt::ColorWriteMask::Alpha) == D3D12_COLOR_WRITE_ENABLE_ALPHA, "ColorWriteMask values must match");
+            static_assert(static_cast<D3D12_COLOR_WRITE_ENABLE>(nxt::ColorWriteMask::Red) ==
+                              D3D12_COLOR_WRITE_ENABLE_RED,
+                          "ColorWriteMask values must match");
+            static_assert(static_cast<D3D12_COLOR_WRITE_ENABLE>(nxt::ColorWriteMask::Green) ==
+                              D3D12_COLOR_WRITE_ENABLE_GREEN,
+                          "ColorWriteMask values must match");
+            static_assert(static_cast<D3D12_COLOR_WRITE_ENABLE>(nxt::ColorWriteMask::Blue) ==
+                              D3D12_COLOR_WRITE_ENABLE_BLUE,
+                          "ColorWriteMask values must match");
+            static_assert(static_cast<D3D12_COLOR_WRITE_ENABLE>(nxt::ColorWriteMask::Alpha) ==
+                              D3D12_COLOR_WRITE_ENABLE_ALPHA,
+                          "ColorWriteMask values must match");
             return static_cast<uint8_t>(colorWriteMask);
         }
-    }
+    }  // namespace
 
     BlendState::BlendState(BlendStateBuilder* builder) : BlendStateBase(builder) {
         auto& info = GetBlendInfo();
@@ -98,5 +105,4 @@
         return mBlendDesc;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/BlendStateD3D12.h b/src/backend/d3d12/BlendStateD3D12.h
index 4569ffb..a42db74 100644
--- a/src/backend/d3d12/BlendStateD3D12.h
+++ b/src/backend/d3d12/BlendStateD3D12.h
@@ -19,20 +19,18 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class BlendState : public BlendStateBase {
-        public:
-            BlendState(BlendStateBuilder* builder);
+      public:
+        BlendState(BlendStateBuilder* builder);
 
-            const D3D12_RENDER_TARGET_BLEND_DESC& GetD3D12BlendDesc() const;
+        const D3D12_RENDER_TARGET_BLEND_DESC& GetD3D12BlendDesc() const;
 
-        private:
-            D3D12_RENDER_TARGET_BLEND_DESC mBlendDesc;
+      private:
+        D3D12_RENDER_TARGET_BLEND_DESC mBlendDesc;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_BLENDSTATED3D12_H_
+#endif  // BACKEND_D3D12_BLENDSTATED3D12_H_
diff --git a/src/backend/d3d12/BufferD3D12.cpp b/src/backend/d3d12/BufferD3D12.cpp
index a088b4a..dbbe402 100644
--- a/src/backend/d3d12/BufferD3D12.cpp
+++ b/src/backend/d3d12/BufferD3D12.cpp
@@ -21,8 +21,7 @@
 #include "common/Constants.h"
 #include "common/Math.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     namespace {
         D3D12_RESOURCE_FLAGS D3D12ResourceFlags(nxt::BufferUsageBit usage) {
@@ -66,11 +65,9 @@
                 return D3D12_HEAP_TYPE_DEFAULT;
             }
         }
-    }
+    }  // namespace
 
-    Buffer::Buffer(Device* device, BufferBuilder* builder)
-        : BufferBase(builder), mDevice(device) {
-
+    Buffer::Buffer(Device* device, BufferBuilder* builder) : BufferBase(builder), mDevice(device) {
         D3D12_RESOURCE_DESC resourceDescriptor;
         resourceDescriptor.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
         resourceDescriptor.Alignment = 0;
@@ -87,17 +84,20 @@
         auto heapType = D3D12HeapType(GetAllowedUsage());
         auto bufferUsage = D3D12BufferUsage(GetUsage());
 
-        // D3D12 requires buffers on the READBACK heap to have the D3D12_RESOURCE_STATE_COPY_DEST state
+        // D3D12 requires buffers on the READBACK heap to have the D3D12_RESOURCE_STATE_COPY_DEST
+        // state
         if (heapType == D3D12_HEAP_TYPE_READBACK) {
             bufferUsage |= D3D12_RESOURCE_STATE_COPY_DEST;
         }
 
-        // D3D12 requires buffers on the UPLOAD heap to have the D3D12_RESOURCE_STATE_GENERIC_READ state
+        // D3D12 requires buffers on the UPLOAD heap to have the D3D12_RESOURCE_STATE_GENERIC_READ
+        // state
         if (heapType == D3D12_HEAP_TYPE_UPLOAD) {
             bufferUsage |= D3D12_RESOURCE_STATE_GENERIC_READ;
         }
 
-        mResource = device->GetResourceAllocator()->Allocate(heapType, resourceDescriptor, bufferUsage);
+        mResource =
+            device->GetResourceAllocator()->Allocate(heapType, resourceDescriptor, bufferUsage);
     }
 
     Buffer::~Buffer() {
@@ -113,10 +113,13 @@
         return mResource;
     }
 
-    bool Buffer::GetResourceTransitionBarrier(nxt::BufferUsageBit currentUsage, nxt::BufferUsageBit targetUsage, D3D12_RESOURCE_BARRIER* barrier) {
+    bool Buffer::GetResourceTransitionBarrier(nxt::BufferUsageBit currentUsage,
+                                              nxt::BufferUsageBit targetUsage,
+                                              D3D12_RESOURCE_BARRIER* barrier) {
         if (GetAllowedUsage() & (nxt::BufferUsageBit::MapRead | nxt::BufferUsageBit::MapWrite)) {
-            // Transitions are never needed for mapped buffers because they are created with and always need the Transfer(Dst|Src) state.
-            // Mapped buffers cannot have states outside of (MapRead|TransferDst) and (MapWrite|TransferSrc)
+            // Transitions are never needed for mapped buffers because they are created with and
+            // always need the Transfer(Dst|Src) state. Mapped buffers cannot have states outside of
+            // (MapRead|TransferDst) and (MapWrite|TransferSrc)
             return false;
         }
 
@@ -146,11 +149,12 @@
     }
 
     void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) {
-        mDevice->GetResourceUploader()->BufferSubData(mResource, start * sizeof(uint32_t), count * sizeof(uint32_t), data);
+        mDevice->GetResourceUploader()->BufferSubData(mResource, start * sizeof(uint32_t),
+                                                      count * sizeof(uint32_t), data);
     }
 
     void Buffer::MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) {
-        D3D12_RANGE readRange = { start, start + count };
+        D3D12_RANGE readRange = {start, start + count};
         char* data = nullptr;
         ASSERT_SUCCESS(mResource->Map(0, &readRange, reinterpret_cast<void**>(&data)));
 
@@ -159,22 +163,22 @@
     }
 
     void Buffer::UnmapImpl() {
-        // TODO(enga@google.com): When MapWrite is implemented, this should state the range that was modified
+        // TODO(enga@google.com): When MapWrite is implemented, this should state the range that was
+        // modified
         D3D12_RANGE writeRange = {};
         mResource->Unmap(0, &writeRange);
         mDevice->GetResourceAllocator()->Release(mResource);
     }
 
-    void Buffer::TransitionUsageImpl(nxt::BufferUsageBit currentUsage, nxt::BufferUsageBit targetUsage) {
+    void Buffer::TransitionUsageImpl(nxt::BufferUsageBit currentUsage,
+                                     nxt::BufferUsageBit targetUsage) {
         D3D12_RESOURCE_BARRIER barrier;
         if (GetResourceTransitionBarrier(currentUsage, targetUsage, &barrier)) {
             mDevice->GetPendingCommandList()->ResourceBarrier(1, &barrier);
         }
     }
 
-    BufferView::BufferView(BufferViewBuilder* builder)
-        : BufferViewBase(builder) {
-
+    BufferView::BufferView(BufferViewBuilder* builder) : BufferViewBase(builder) {
         mCbvDesc.BufferLocation = ToBackend(GetBuffer())->GetVA() + GetOffset();
         mCbvDesc.SizeInBytes = GetD3D12Size();
 
@@ -200,8 +204,7 @@
         return mUavDesc;
     }
 
-    MapReadRequestTracker::MapReadRequestTracker(Device* device)
-        : mDevice(device) {
+    MapReadRequestTracker::MapReadRequestTracker(Device* device) : mDevice(device) {
     }
 
     MapReadRequestTracker::~MapReadRequestTracker() {
@@ -224,5 +227,4 @@
         mInflightRequests.ClearUpTo(finishedSerial);
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/BufferD3D12.h b/src/backend/d3d12/BufferD3D12.h
index df9eacd..fd18a87 100644
--- a/src/backend/d3d12/BufferD3D12.h
+++ b/src/backend/d3d12/BufferD3D12.h
@@ -20,67 +20,67 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class Buffer : public BufferBase {
-        public:
-            Buffer(Device* device, BufferBuilder* builder);
-            ~Buffer();
+      public:
+        Buffer(Device* device, BufferBuilder* builder);
+        ~Buffer();
 
-            uint32_t GetD3D12Size() const;
-            ComPtr<ID3D12Resource> GetD3D12Resource();
-            D3D12_GPU_VIRTUAL_ADDRESS GetVA() const;
-            bool GetResourceTransitionBarrier(nxt::BufferUsageBit currentUsage, nxt::BufferUsageBit targetUsage, D3D12_RESOURCE_BARRIER* barrier);
-            void OnMapReadCommandSerialFinished(uint32_t mapSerial, const void* data);
+        uint32_t GetD3D12Size() const;
+        ComPtr<ID3D12Resource> GetD3D12Resource();
+        D3D12_GPU_VIRTUAL_ADDRESS GetVA() const;
+        bool GetResourceTransitionBarrier(nxt::BufferUsageBit currentUsage,
+                                          nxt::BufferUsageBit targetUsage,
+                                          D3D12_RESOURCE_BARRIER* barrier);
+        void OnMapReadCommandSerialFinished(uint32_t mapSerial, const void* data);
 
-        private:
-            Device* mDevice;
-            ComPtr<ID3D12Resource> mResource;
+      private:
+        Device* mDevice;
+        ComPtr<ID3D12Resource> mResource;
 
-            // NXT API
-            void SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) override;
-            void MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
-            void UnmapImpl() override;
-            void TransitionUsageImpl(nxt::BufferUsageBit currentUsage, nxt::BufferUsageBit targetUsage) override;
-
+        // NXT API
+        void SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) override;
+        void MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
+        void UnmapImpl() override;
+        void TransitionUsageImpl(nxt::BufferUsageBit currentUsage,
+                                 nxt::BufferUsageBit targetUsage) override;
     };
 
     class BufferView : public BufferViewBase {
-        public:
-            BufferView(BufferViewBuilder* builder);
+      public:
+        BufferView(BufferViewBuilder* builder);
 
-            uint32_t GetD3D12Size() const;
-            const D3D12_CONSTANT_BUFFER_VIEW_DESC& GetCBVDescriptor() const;
-            const D3D12_UNORDERED_ACCESS_VIEW_DESC& GetUAVDescriptor() const;
+        uint32_t GetD3D12Size() const;
+        const D3D12_CONSTANT_BUFFER_VIEW_DESC& GetCBVDescriptor() const;
+        const D3D12_UNORDERED_ACCESS_VIEW_DESC& GetUAVDescriptor() const;
 
-        private:
-            D3D12_CONSTANT_BUFFER_VIEW_DESC mCbvDesc;
-            D3D12_UNORDERED_ACCESS_VIEW_DESC mUavDesc;
+      private:
+        D3D12_CONSTANT_BUFFER_VIEW_DESC mCbvDesc;
+        D3D12_UNORDERED_ACCESS_VIEW_DESC mUavDesc;
     };
 
     class MapReadRequestTracker {
-        public:
-            MapReadRequestTracker(Device* device);
-            ~MapReadRequestTracker();
+      public:
+        MapReadRequestTracker(Device* device);
+        ~MapReadRequestTracker();
 
-            void Track(Buffer* buffer, uint32_t mapSerial, const void* data);
-            void Tick(Serial finishedSerial);
+        void Track(Buffer* buffer, uint32_t mapSerial, const void* data);
+        void Tick(Serial finishedSerial);
 
-        private:
-            Device* mDevice;
+      private:
+        Device* mDevice;
 
-            struct Request {
-                Ref<Buffer> buffer;
-                uint32_t mapSerial;
-                const void* data;
-            };
-            SerialQueue<Request> mInflightRequests;
+        struct Request {
+            Ref<Buffer> buffer;
+            uint32_t mapSerial;
+            const void* data;
+        };
+        SerialQueue<Request> mInflightRequests;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_BUFFERD3D12_H_
+#endif  // BACKEND_D3D12_BUFFERD3D12_H_
diff --git a/src/backend/d3d12/CommandAllocatorManager.cpp b/src/backend/d3d12/CommandAllocatorManager.cpp
index 89cf1df..15343bb 100644
--- a/src/backend/d3d12/CommandAllocatorManager.cpp
+++ b/src/backend/d3d12/CommandAllocatorManager.cpp
@@ -19,10 +19,10 @@
 #include "common/Assert.h"
 #include "common/BitSetIterator.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
-    CommandAllocatorManager::CommandAllocatorManager(Device* device) : device(device), mAllocatorCount(0) {
+    CommandAllocatorManager::CommandAllocatorManager(Device* device)
+        : device(device), mAllocatorCount(0) {
         mFreeAllocators.set();
     }
 
@@ -42,14 +42,17 @@
         if (firstFreeIndex >= mAllocatorCount) {
             ASSERT(firstFreeIndex == mAllocatorCount);
             mAllocatorCount++;
-            ASSERT_SUCCESS(device->GetD3D12Device()->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&mCommandAllocators[firstFreeIndex])));
+            ASSERT_SUCCESS(device->GetD3D12Device()->CreateCommandAllocator(
+                D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&mCommandAllocators[firstFreeIndex])));
         }
 
         // Mark the command allocator as used
         mFreeAllocators.reset(firstFreeIndex);
 
-        // Enqueue the command allocator. It will be scheduled for reset after the next ExecuteCommandLists
-        mInFlightCommandAllocators.Enqueue({mCommandAllocators[firstFreeIndex], firstFreeIndex}, device->GetSerial());
+        // Enqueue the command allocator. It will be scheduled for reset after the next
+        // ExecuteCommandLists
+        mInFlightCommandAllocators.Enqueue({mCommandAllocators[firstFreeIndex], firstFreeIndex},
+                                           device->GetSerial());
 
         return mCommandAllocators[firstFreeIndex];
     }
@@ -63,5 +66,4 @@
         mInFlightCommandAllocators.ClearUpTo(lastCompletedSerial);
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/CommandAllocatorManager.h b/src/backend/d3d12/CommandAllocatorManager.h
index 957c435..17c1df9 100644
--- a/src/backend/d3d12/CommandAllocatorManager.h
+++ b/src/backend/d3d12/CommandAllocatorManager.h
@@ -21,38 +21,36 @@
 
 #include <bitset>
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class CommandAllocatorManager {
-        public:
-            CommandAllocatorManager(Device* device);
+      public:
+        CommandAllocatorManager(Device* device);
 
-            // A CommandAllocator that is reserved must be used on the next ExecuteCommandLists
-            // otherwise its commands may be reset before execution has completed on the GPU
-            ComPtr<ID3D12CommandAllocator> ReserveCommandAllocator();
-            void Tick(uint64_t lastCompletedSerial);
+        // A CommandAllocator that is reserved must be used on the next ExecuteCommandLists
+        // otherwise its commands may be reset before execution has completed on the GPU
+        ComPtr<ID3D12CommandAllocator> ReserveCommandAllocator();
+        void Tick(uint64_t lastCompletedSerial);
 
-        private:
-            Device* device;
+      private:
+        Device* device;
 
-            // This must be at least 2 because the Device and Queue use separate command allocators
-            static constexpr unsigned int kMaxCommandAllocators = 32;
-            unsigned int mAllocatorCount;
+        // This must be at least 2 because the Device and Queue use separate command allocators
+        static constexpr unsigned int kMaxCommandAllocators = 32;
+        unsigned int mAllocatorCount;
 
-            struct IndexedCommandAllocator {
-                ComPtr<ID3D12CommandAllocator> commandAllocator;
-                unsigned int index;
-            };
+        struct IndexedCommandAllocator {
+            ComPtr<ID3D12CommandAllocator> commandAllocator;
+            unsigned int index;
+        };
 
-            ComPtr<ID3D12CommandAllocator> mCommandAllocators[kMaxCommandAllocators];
-            std::bitset<kMaxCommandAllocators> mFreeAllocators;
-            SerialQueue<IndexedCommandAllocator> mInFlightCommandAllocators;
+        ComPtr<ID3D12CommandAllocator> mCommandAllocators[kMaxCommandAllocators];
+        std::bitset<kMaxCommandAllocators> mFreeAllocators;
+        SerialQueue<IndexedCommandAllocator> mInFlightCommandAllocators;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_COMMANDALLOCATORMANAGER_H_
+#endif  // BACKEND_D3D12_COMMANDALLOCATORMANAGER_H_
diff --git a/src/backend/d3d12/CommandBufferD3D12.cpp b/src/backend/d3d12/CommandBufferD3D12.cpp
index 94420d0..7d373f9 100644
--- a/src/backend/d3d12/CommandBufferD3D12.cpp
+++ b/src/backend/d3d12/CommandBufferD3D12.cpp
@@ -15,11 +15,11 @@
 #include "backend/d3d12/CommandBufferD3D12.h"
 
 #include "backend/Commands.h"
-#include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/BindGroupD3D12.h"
 #include "backend/d3d12/BindGroupLayoutD3D12.h"
 #include "backend/d3d12/BufferD3D12.h"
 #include "backend/d3d12/ComputePipelineD3D12.h"
+#include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/DescriptorHeapAllocator.h"
 #include "backend/d3d12/FramebufferD3D12.h"
 #include "backend/d3d12/InputStateD3D12.h"
@@ -31,8 +31,7 @@
 #include "backend/d3d12/TextureD3D12.h"
 #include "common/Assert.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     namespace {
         DXGI_FORMAT DXGIIndexFormat(nxt::IndexFormat format) {
@@ -69,10 +68,13 @@
                 if (bindGroups[index] != group) {
                     bindGroups[index] = group;
 
-                    // Descriptors don't need to be recorded if they have already been recorded in the heap. Indices are only updated when descriptors are recorded
+                    // Descriptors don't need to be recorded if they have already been recorded in
+                    // the heap. Indices are only updated when descriptors are recorded
                     const uint64_t serial = device->GetSerial();
                     if (group->GetHeapSerial() != serial) {
-                        group->RecordDescriptors(cbvSrvUavCPUDescriptorHeap, &cbvSrvUavDescriptorIndex, samplerCPUDescriptorHeap, &samplerDescriptorIndex, serial);
+                        group->RecordDescriptors(
+                            cbvSrvUavCPUDescriptorHeap, &cbvSrvUavDescriptorIndex,
+                            samplerCPUDescriptorHeap, &samplerDescriptorIndex, serial);
                     }
                 }
             }
@@ -88,37 +90,54 @@
                 }
             }
 
-            void SetBindGroup(ComPtr<ID3D12GraphicsCommandList> commandList, PipelineLayout* pipelineLayout, BindGroup* group,
-                              uint32_t index, bool force = false) {
+            void SetBindGroup(ComPtr<ID3D12GraphicsCommandList> commandList,
+                              PipelineLayout* pipelineLayout,
+                              BindGroup* group,
+                              uint32_t index,
+                              bool force = false) {
                 if (bindGroups[index] != group || force) {
                     bindGroups[index] = group;
 
-                    uint32_t cbvUavSrvCount = ToBackend(group->GetLayout())->GetCbvUavSrvDescriptorCount();
-                    uint32_t samplerCount = ToBackend(group->GetLayout())->GetSamplerDescriptorCount();
+                    uint32_t cbvUavSrvCount =
+                        ToBackend(group->GetLayout())->GetCbvUavSrvDescriptorCount();
+                    uint32_t samplerCount =
+                        ToBackend(group->GetLayout())->GetSamplerDescriptorCount();
 
                     if (cbvUavSrvCount > 0) {
-                        uint32_t parameterIndex = pipelineLayout->GetCbvUavSrvRootParameterIndex(index);
+                        uint32_t parameterIndex =
+                            pipelineLayout->GetCbvUavSrvRootParameterIndex(index);
 
                         if (inCompute) {
-                            commandList->SetComputeRootDescriptorTable(parameterIndex, cbvSrvUavGPUDescriptorHeap.GetGPUHandle(group->GetCbvUavSrvHeapOffset()));
+                            commandList->SetComputeRootDescriptorTable(
+                                parameterIndex, cbvSrvUavGPUDescriptorHeap.GetGPUHandle(
+                                                    group->GetCbvUavSrvHeapOffset()));
                         } else {
-                            commandList->SetGraphicsRootDescriptorTable(parameterIndex, cbvSrvUavGPUDescriptorHeap.GetGPUHandle(group->GetCbvUavSrvHeapOffset()));
+                            commandList->SetGraphicsRootDescriptorTable(
+                                parameterIndex, cbvSrvUavGPUDescriptorHeap.GetGPUHandle(
+                                                    group->GetCbvUavSrvHeapOffset()));
                         }
                     }
 
                     if (samplerCount > 0) {
-                        uint32_t parameterIndex = pipelineLayout->GetSamplerRootParameterIndex(index);
+                        uint32_t parameterIndex =
+                            pipelineLayout->GetSamplerRootParameterIndex(index);
 
                         if (inCompute) {
-                            commandList->SetComputeRootDescriptorTable(parameterIndex, samplerGPUDescriptorHeap.GetGPUHandle(group->GetSamplerHeapOffset()));
+                            commandList->SetComputeRootDescriptorTable(
+                                parameterIndex, samplerGPUDescriptorHeap.GetGPUHandle(
+                                                    group->GetSamplerHeapOffset()));
                         } else {
-                            commandList->SetGraphicsRootDescriptorTable(parameterIndex, samplerGPUDescriptorHeap.GetGPUHandle(group->GetSamplerHeapOffset()));
+                            commandList->SetGraphicsRootDescriptorTable(
+                                parameterIndex, samplerGPUDescriptorHeap.GetGPUHandle(
+                                                    group->GetSamplerHeapOffset()));
                         }
                     }
                 }
             }
 
-            void SetInheritedBindGroups(ComPtr<ID3D12GraphicsCommandList> commandList, PipelineLayout* oldLayout, PipelineLayout* newLayout) {
+            void SetInheritedBindGroups(ComPtr<ID3D12GraphicsCommandList> commandList,
+                                        PipelineLayout* oldLayout,
+                                        PipelineLayout* newLayout) {
                 if (oldLayout == nullptr) {
                     return;
                 }
@@ -136,13 +155,17 @@
             }
         };
 
-        void AllocateAndSetDescriptorHeaps(Device* device, BindGroupStateTracker* bindingTracker, CommandIterator* commands) {
+        void AllocateAndSetDescriptorHeaps(Device* device,
+                                           BindGroupStateTracker* bindingTracker,
+                                           CommandIterator* commands) {
             auto* descriptorHeapAllocator = device->GetDescriptorHeapAllocator();
 
             // TODO(enga@google.com): This currently allocates CPU heaps of arbitrarily chosen sizes
             // This will not work if there are too many descriptors
-            bindingTracker->cbvSrvUavCPUDescriptorHeap = descriptorHeapAllocator->AllocateCPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, 8192);
-            bindingTracker->samplerCPUDescriptorHeap = descriptorHeapAllocator->AllocateCPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, 2048);
+            bindingTracker->cbvSrvUavCPUDescriptorHeap = descriptorHeapAllocator->AllocateCPUHeap(
+                D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, 8192);
+            bindingTracker->samplerCPUDescriptorHeap =
+                descriptorHeapAllocator->AllocateCPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, 2048);
 
             {
                 Command type;
@@ -150,31 +173,27 @@
 
                 while (commands->NextCommandId(&type)) {
                     switch (type) {
-                        case Command::SetComputePipeline:
-                        {
-                            SetComputePipelineCmd* cmd = commands->NextCommand<SetComputePipelineCmd>();
+                        case Command::SetComputePipeline: {
+                            SetComputePipelineCmd* cmd =
+                                commands->NextCommand<SetComputePipelineCmd>();
                             PipelineLayout* layout = ToBackend(cmd->pipeline->GetLayout());
                             bindingTracker->TrackInheritedGroups(lastLayout, layout);
                             lastLayout = layout;
-                        }
-                        break;
+                        } break;
 
-                    case Command::SetRenderPipeline:
-                        {
-                            SetRenderPipelineCmd* cmd = commands->NextCommand<SetRenderPipelineCmd>();
+                        case Command::SetRenderPipeline: {
+                            SetRenderPipelineCmd* cmd =
+                                commands->NextCommand<SetRenderPipelineCmd>();
                             PipelineLayout* layout = ToBackend(cmd->pipeline->GetLayout());
                             bindingTracker->TrackInheritedGroups(lastLayout, layout);
                             lastLayout = layout;
-                        }
-                        break;
+                        } break;
 
-                        case Command::SetBindGroup:
-                        {
+                        case Command::SetBindGroup: {
                             SetBindGroupCmd* cmd = commands->NextCommand<SetBindGroupCmd>();
                             BindGroup* group = ToBackend(cmd->group.Get());
                             bindingTracker->TrackSetBindGroup(group, cmd->index);
-                        }
-                        break;
+                        } break;
                         default:
                             SkipCommand(commands, type);
                     }
@@ -184,8 +203,12 @@
             }
 
             if (bindingTracker->cbvSrvUavDescriptorIndex > 0) {
-                // Allocate a GPU-visible heap and copy from the CPU-only heap to the GPU-visible heap
-                bindingTracker->cbvSrvUavGPUDescriptorHeap = descriptorHeapAllocator->AllocateGPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, bindingTracker->cbvSrvUavDescriptorIndex);
+                // Allocate a GPU-visible heap and copy from the CPU-only heap to the GPU-visible
+                // heap
+                bindingTracker->cbvSrvUavGPUDescriptorHeap =
+                    descriptorHeapAllocator->AllocateGPUHeap(
+                        D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
+                        bindingTracker->cbvSrvUavDescriptorIndex);
                 device->GetD3D12Device()->CopyDescriptorsSimple(
                     bindingTracker->cbvSrvUavDescriptorIndex,
                     bindingTracker->cbvSrvUavGPUDescriptorHeap.GetCPUHandle(0),
@@ -194,7 +217,8 @@
             }
 
             if (bindingTracker->samplerDescriptorIndex > 0) {
-                bindingTracker->samplerGPUDescriptorHeap = descriptorHeapAllocator->AllocateGPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, bindingTracker->samplerDescriptorIndex);
+                bindingTracker->samplerGPUDescriptorHeap = descriptorHeapAllocator->AllocateGPUHeap(
+                    D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, bindingTracker->samplerDescriptorIndex);
                 device->GetD3D12Device()->CopyDescriptorsSimple(
                     bindingTracker->samplerDescriptorIndex,
                     bindingTracker->samplerGPUDescriptorHeap.GetCPUHandle(0),
@@ -202,7 +226,7 @@
                     D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
             }
         }
-    }
+    }  // namespace
 
     CommandBuffer::CommandBuffer(Device* device, CommandBufferBuilder* builder)
         : CommandBufferBase(builder), mDevice(device), mCommands(builder->AcquireCommands()) {
@@ -217,7 +241,8 @@
         AllocateAndSetDescriptorHeaps(mDevice, &bindingTracker, &mCommands);
         bindingTracker.Reset();
 
-        ID3D12DescriptorHeap* descriptorHeaps[2] = { bindingTracker.cbvSrvUavGPUDescriptorHeap.Get(), bindingTracker.samplerGPUDescriptorHeap.Get() };
+        ID3D12DescriptorHeap* descriptorHeaps[2] = {bindingTracker.cbvSrvUavGPUDescriptorHeap.Get(),
+                                                    bindingTracker.samplerGPUDescriptorHeap.Get()};
         if (descriptorHeaps[0] && descriptorHeaps[1]) {
             commandList->SetDescriptorHeaps(2, descriptorHeaps);
         } else if (descriptorHeaps[0]) {
@@ -234,393 +259,352 @@
         Framebuffer* currentFramebuffer = nullptr;
         uint32_t currentSubpass = 0;
 
-        while(mCommands.NextCommandId(&type)) {
+        while (mCommands.NextCommandId(&type)) {
             switch (type) {
-                case Command::BeginComputePass:
-                    {
-                        mCommands.NextCommand<BeginComputePassCmd>();
-                        bindingTracker.SetInComputePass(true);
+                case Command::BeginComputePass: {
+                    mCommands.NextCommand<BeginComputePassCmd>();
+                    bindingTracker.SetInComputePass(true);
+                } break;
+
+                case Command::BeginRenderPass: {
+                    BeginRenderPassCmd* beginRenderPassCmd =
+                        mCommands.NextCommand<BeginRenderPassCmd>();
+                    currentRenderPass = ToBackend(beginRenderPassCmd->renderPass.Get());
+                    currentFramebuffer = ToBackend(beginRenderPassCmd->framebuffer.Get());
+                    currentSubpass = 0;
+
+                    uint32_t width = currentFramebuffer->GetWidth();
+                    uint32_t height = currentFramebuffer->GetHeight();
+                    D3D12_VIEWPORT viewport = {
+                        0.f, 0.f, static_cast<float>(width), static_cast<float>(height), 0.f, 1.f};
+                    D3D12_RECT scissorRect = {0, 0, static_cast<long>(width),
+                                              static_cast<long>(height)};
+                    commandList->RSSetViewports(1, &viewport);
+                    commandList->RSSetScissorRects(1, &scissorRect);
+                } break;
+
+                case Command::BeginRenderSubpass: {
+                    mCommands.NextCommand<BeginRenderSubpassCmd>();
+                    const auto& subpass = currentRenderPass->GetSubpassInfo(currentSubpass);
+
+                    Framebuffer::OMSetRenderTargetArgs args =
+                        currentFramebuffer->GetSubpassOMSetRenderTargetArgs(currentSubpass);
+                    if (args.dsv.ptr) {
+                        commandList->OMSetRenderTargets(args.numRTVs, args.RTVs.data(), FALSE,
+                                                        &args.dsv);
+                    } else {
+                        commandList->OMSetRenderTargets(args.numRTVs, args.RTVs.data(), FALSE,
+                                                        nullptr);
                     }
-                    break;
 
-                case Command::BeginRenderPass:
-                    {
-                        BeginRenderPassCmd* beginRenderPassCmd = mCommands.NextCommand<BeginRenderPassCmd>();
-                        currentRenderPass = ToBackend(beginRenderPassCmd->renderPass.Get());
-                        currentFramebuffer = ToBackend(beginRenderPassCmd->framebuffer.Get());
-                        currentSubpass = 0;
+                    // Clear framebuffer attachments as needed
 
-                        uint32_t width = currentFramebuffer->GetWidth();
-                        uint32_t height = currentFramebuffer->GetHeight();
-                        D3D12_VIEWPORT viewport = { 0.f, 0.f, static_cast<float>(width), static_cast<float>(height), 0.f, 1.f };
-                        D3D12_RECT scissorRect = { 0, 0, static_cast<long>(width), static_cast<long>(height) };
-                        commandList->RSSetViewports(1, &viewport);
-                        commandList->RSSetScissorRects(1, &scissorRect);
-                    }
-                    break;
+                    for (unsigned int location : IterateBitSet(subpass.colorAttachmentsSet)) {
+                        uint32_t attachmentSlot = subpass.colorAttachments[location];
+                        const auto& attachmentInfo =
+                            currentRenderPass->GetAttachmentInfo(attachmentSlot);
 
-                case Command::BeginRenderSubpass:
-                    {
-                        mCommands.NextCommand<BeginRenderSubpassCmd>();
-                        const auto& subpass = currentRenderPass->GetSubpassInfo(currentSubpass);
-
-                        Framebuffer::OMSetRenderTargetArgs args = currentFramebuffer->GetSubpassOMSetRenderTargetArgs(currentSubpass);
-                        if (args.dsv.ptr) {
-                            commandList->OMSetRenderTargets(args.numRTVs, args.RTVs.data(), FALSE, &args.dsv);
-                        } else {
-                            commandList->OMSetRenderTargets(args.numRTVs, args.RTVs.data(), FALSE, nullptr);
+                        Texture* texture = ToBackend(
+                            currentFramebuffer->GetTextureView(attachmentSlot)->GetTexture());
+                        constexpr auto usage = nxt::TextureUsageBit::OutputAttachment;
+                        // It's already validated that this texture is either frozen to the correct
+                        // usage, or not frozen.
+                        if (!texture->IsFrozen()) {
+                            texture->TransitionUsageImpl(texture->GetUsage(), usage);
+                            texture->UpdateUsageInternal(usage);
                         }
 
-                        // Clear framebuffer attachments as needed
-
-                        for (unsigned int location : IterateBitSet(subpass.colorAttachmentsSet)) {
-                            uint32_t attachmentSlot = subpass.colorAttachments[location];
-                            const auto& attachmentInfo = currentRenderPass->GetAttachmentInfo(attachmentSlot);
-
-                            Texture* texture = ToBackend(currentFramebuffer->GetTextureView(attachmentSlot)->GetTexture());
-                            constexpr auto usage = nxt::TextureUsageBit::OutputAttachment;
-                            // It's already validated that this texture is either frozen to the correct usage, or not frozen.
-                            if (!texture->IsFrozen()) {
-                                texture->TransitionUsageImpl(texture->GetUsage(), usage);
-                                texture->UpdateUsageInternal(usage);
-                            }
-
-                            // Only perform load op on first use
-                            if (attachmentInfo.firstSubpass == currentSubpass) {
-                                // Load op - color
-                                if (attachmentInfo.colorLoadOp == nxt::LoadOp::Clear) {
-                                    auto handle = currentFramebuffer->GetRTVDescriptor(attachmentSlot);
-                                    const auto& clear = currentFramebuffer->GetClearColor(attachmentSlot);
-                                    commandList->ClearRenderTargetView(handle, clear.color, 0, nullptr);
-                                }
+                        // Only perform load op on first use
+                        if (attachmentInfo.firstSubpass == currentSubpass) {
+                            // Load op - color
+                            if (attachmentInfo.colorLoadOp == nxt::LoadOp::Clear) {
+                                auto handle = currentFramebuffer->GetRTVDescriptor(attachmentSlot);
+                                const auto& clear =
+                                    currentFramebuffer->GetClearColor(attachmentSlot);
+                                commandList->ClearRenderTargetView(handle, clear.color, 0, nullptr);
                             }
                         }
+                    }
 
-                        if (subpass.depthStencilAttachmentSet) {
-                            uint32_t attachmentSlot = subpass.depthStencilAttachment;
-                            const auto& attachmentInfo = currentRenderPass->GetAttachmentInfo(attachmentSlot);
+                    if (subpass.depthStencilAttachmentSet) {
+                        uint32_t attachmentSlot = subpass.depthStencilAttachment;
+                        const auto& attachmentInfo =
+                            currentRenderPass->GetAttachmentInfo(attachmentSlot);
 
-                            // Only perform load op on first use
-                            if (attachmentInfo.firstSubpass == currentSubpass) {
-                                // Load op - depth/stencil
-                                bool doDepthClear = TextureFormatHasDepth(attachmentInfo.format) &&
-                                    (attachmentInfo.depthLoadOp == nxt::LoadOp::Clear);
-                                bool doStencilClear = TextureFormatHasStencil(attachmentInfo.format) &&
-                                    (attachmentInfo.stencilLoadOp == nxt::LoadOp::Clear);
+                        // Only perform load op on first use
+                        if (attachmentInfo.firstSubpass == currentSubpass) {
+                            // Load op - depth/stencil
+                            bool doDepthClear = TextureFormatHasDepth(attachmentInfo.format) &&
+                                                (attachmentInfo.depthLoadOp == nxt::LoadOp::Clear);
+                            bool doStencilClear =
+                                TextureFormatHasStencil(attachmentInfo.format) &&
+                                (attachmentInfo.stencilLoadOp == nxt::LoadOp::Clear);
 
-                                D3D12_CLEAR_FLAGS clearFlags = {};
-                                if (doDepthClear) {
-                                    clearFlags |= D3D12_CLEAR_FLAG_DEPTH;
-                                }
-                                if (doStencilClear) {
-                                    clearFlags |= D3D12_CLEAR_FLAG_STENCIL;
-                                }
-                                if (clearFlags) {
-                                    auto handle = currentFramebuffer->GetDSVDescriptor(attachmentSlot);
-                                    const auto& clear = currentFramebuffer->GetClearDepthStencil(attachmentSlot);
-                                    // TODO(kainino@chromium.org): investigate: should the NXT clear stencil type be uint8_t?
-                                    uint8_t clearStencil = static_cast<uint8_t>(clear.stencil);
-                                    commandList->ClearDepthStencilView(handle, clearFlags, clear.depth, clearStencil, 0, nullptr);
-                                }
+                            D3D12_CLEAR_FLAGS clearFlags = {};
+                            if (doDepthClear) {
+                                clearFlags |= D3D12_CLEAR_FLAG_DEPTH;
+                            }
+                            if (doStencilClear) {
+                                clearFlags |= D3D12_CLEAR_FLAG_STENCIL;
+                            }
+                            if (clearFlags) {
+                                auto handle = currentFramebuffer->GetDSVDescriptor(attachmentSlot);
+                                const auto& clear =
+                                    currentFramebuffer->GetClearDepthStencil(attachmentSlot);
+                                // TODO(kainino@chromium.org): investigate: should the NXT clear
+                                // stencil type be uint8_t?
+                                uint8_t clearStencil = static_cast<uint8_t>(clear.stencil);
+                                commandList->ClearDepthStencilView(handle, clearFlags, clear.depth,
+                                                                   clearStencil, 0, nullptr);
                             }
                         }
-
-                        static constexpr std::array<float, 4> defaultBlendFactor = { 0, 0, 0, 0 };
-                        commandList->OMSetBlendFactor(&defaultBlendFactor[0]);
                     }
-                    break;
 
-                case Command::CopyBufferToBuffer:
-                    {
-                        CopyBufferToBufferCmd* copy = mCommands.NextCommand<CopyBufferToBufferCmd>();
-                        auto src = ToBackend(copy->source.buffer.Get())->GetD3D12Resource();
-                        auto dst = ToBackend(copy->destination.buffer.Get())->GetD3D12Resource();
-                        commandList->CopyBufferRegion(dst.Get(), copy->destination.offset, src.Get(), copy->source.offset, copy->size);
+                    static constexpr std::array<float, 4> defaultBlendFactor = {0, 0, 0, 0};
+                    commandList->OMSetBlendFactor(&defaultBlendFactor[0]);
+                } break;
+
+                case Command::CopyBufferToBuffer: {
+                    CopyBufferToBufferCmd* copy = mCommands.NextCommand<CopyBufferToBufferCmd>();
+                    auto src = ToBackend(copy->source.buffer.Get())->GetD3D12Resource();
+                    auto dst = ToBackend(copy->destination.buffer.Get())->GetD3D12Resource();
+                    commandList->CopyBufferRegion(dst.Get(), copy->destination.offset, src.Get(),
+                                                  copy->source.offset, copy->size);
+                } break;
+
+                case Command::CopyBufferToTexture: {
+                    CopyBufferToTextureCmd* copy = mCommands.NextCommand<CopyBufferToTextureCmd>();
+                    Buffer* buffer = ToBackend(copy->source.buffer.Get());
+                    Texture* texture = ToBackend(copy->destination.texture.Get());
+
+                    auto copySplit = ComputeTextureCopySplit(
+                        copy->destination.x, copy->destination.y, copy->destination.z,
+                        copy->destination.width, copy->destination.height, copy->destination.depth,
+                        static_cast<uint32_t>(TextureFormatPixelSize(texture->GetFormat())),
+                        copy->source.offset, copy->rowPitch);
+
+                    D3D12_TEXTURE_COPY_LOCATION textureLocation;
+                    textureLocation.pResource = texture->GetD3D12Resource();
+                    textureLocation.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
+                    textureLocation.SubresourceIndex = copy->destination.level;
+
+                    for (uint32_t i = 0; i < copySplit.count; ++i) {
+                        auto& info = copySplit.copies[i];
+
+                        D3D12_TEXTURE_COPY_LOCATION bufferLocation;
+                        bufferLocation.pResource = buffer->GetD3D12Resource().Get();
+                        bufferLocation.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
+                        bufferLocation.PlacedFootprint.Offset = copySplit.offset;
+                        bufferLocation.PlacedFootprint.Footprint.Format = texture->GetD3D12Format();
+                        bufferLocation.PlacedFootprint.Footprint.Width = info.bufferSize.width;
+                        bufferLocation.PlacedFootprint.Footprint.Height = info.bufferSize.height;
+                        bufferLocation.PlacedFootprint.Footprint.Depth = info.bufferSize.depth;
+                        bufferLocation.PlacedFootprint.Footprint.RowPitch = copy->rowPitch;
+
+                        D3D12_BOX sourceRegion;
+                        sourceRegion.left = info.bufferOffset.x;
+                        sourceRegion.top = info.bufferOffset.y;
+                        sourceRegion.front = info.bufferOffset.z;
+                        sourceRegion.right = info.bufferOffset.x + info.copySize.width;
+                        sourceRegion.bottom = info.bufferOffset.y + info.copySize.height;
+                        sourceRegion.back = info.bufferOffset.z + info.copySize.depth;
+
+                        commandList->CopyTextureRegion(&textureLocation, info.textureOffset.x,
+                                                       info.textureOffset.y, info.textureOffset.z,
+                                                       &bufferLocation, &sourceRegion);
                     }
-                    break;
+                } break;
 
-                case Command::CopyBufferToTexture:
-                    {
-                        CopyBufferToTextureCmd* copy = mCommands.NextCommand<CopyBufferToTextureCmd>();
-                        Buffer* buffer = ToBackend(copy->source.buffer.Get());
-                        Texture* texture = ToBackend(copy->destination.texture.Get());
+                case Command::CopyTextureToBuffer: {
+                    CopyTextureToBufferCmd* copy = mCommands.NextCommand<CopyTextureToBufferCmd>();
+                    Texture* texture = ToBackend(copy->source.texture.Get());
+                    Buffer* buffer = ToBackend(copy->destination.buffer.Get());
 
-                        auto copySplit = ComputeTextureCopySplit(
-                            copy->destination.x,
-                            copy->destination.y,
-                            copy->destination.z,
-                            copy->destination.width,
-                            copy->destination.height,
-                            copy->destination.depth,
-                            static_cast<uint32_t>(TextureFormatPixelSize(texture->GetFormat())),
-                            copy->source.offset,
-                            copy->rowPitch
-                        );
+                    auto copySplit = ComputeTextureCopySplit(
+                        copy->source.x, copy->source.y, copy->source.z, copy->source.width,
+                        copy->source.height, copy->source.depth,
+                        static_cast<uint32_t>(TextureFormatPixelSize(texture->GetFormat())),
+                        copy->destination.offset, copy->rowPitch);
 
-                        D3D12_TEXTURE_COPY_LOCATION textureLocation;
-                        textureLocation.pResource = texture->GetD3D12Resource();
-                        textureLocation.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
-                        textureLocation.SubresourceIndex = copy->destination.level;
+                    D3D12_TEXTURE_COPY_LOCATION textureLocation;
+                    textureLocation.pResource = texture->GetD3D12Resource();
+                    textureLocation.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
+                    textureLocation.SubresourceIndex = copy->source.level;
 
-                        for (uint32_t i = 0; i < copySplit.count; ++i) {
-                            auto& info = copySplit.copies[i];
+                    for (uint32_t i = 0; i < copySplit.count; ++i) {
+                        auto& info = copySplit.copies[i];
 
-                            D3D12_TEXTURE_COPY_LOCATION bufferLocation;
-                            bufferLocation.pResource = buffer->GetD3D12Resource().Get();
-                            bufferLocation.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
-                            bufferLocation.PlacedFootprint.Offset = copySplit.offset;
-                            bufferLocation.PlacedFootprint.Footprint.Format = texture->GetD3D12Format();
-                            bufferLocation.PlacedFootprint.Footprint.Width = info.bufferSize.width;
-                            bufferLocation.PlacedFootprint.Footprint.Height = info.bufferSize.height;
-                            bufferLocation.PlacedFootprint.Footprint.Depth = info.bufferSize.depth;
-                            bufferLocation.PlacedFootprint.Footprint.RowPitch = copy->rowPitch;
+                        D3D12_TEXTURE_COPY_LOCATION bufferLocation;
+                        bufferLocation.pResource = buffer->GetD3D12Resource().Get();
+                        bufferLocation.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
+                        bufferLocation.PlacedFootprint.Offset = copySplit.offset;
+                        bufferLocation.PlacedFootprint.Footprint.Format = texture->GetD3D12Format();
+                        bufferLocation.PlacedFootprint.Footprint.Width = info.bufferSize.width;
+                        bufferLocation.PlacedFootprint.Footprint.Height = info.bufferSize.height;
+                        bufferLocation.PlacedFootprint.Footprint.Depth = info.bufferSize.depth;
+                        bufferLocation.PlacedFootprint.Footprint.RowPitch = copy->rowPitch;
 
-                            D3D12_BOX sourceRegion;
-                            sourceRegion.left = info.bufferOffset.x;
-                            sourceRegion.top = info.bufferOffset.y;
-                            sourceRegion.front = info.bufferOffset.z;
-                            sourceRegion.right = info.bufferOffset.x + info.copySize.width;
-                            sourceRegion.bottom = info.bufferOffset.y + info.copySize.height;
-                            sourceRegion.back = info.bufferOffset.z + info.copySize.depth;
+                        D3D12_BOX sourceRegion;
+                        sourceRegion.left = info.textureOffset.x;
+                        sourceRegion.top = info.textureOffset.y;
+                        sourceRegion.front = info.textureOffset.z;
+                        sourceRegion.right = info.textureOffset.x + info.copySize.width;
+                        sourceRegion.bottom = info.textureOffset.y + info.copySize.height;
+                        sourceRegion.back = info.textureOffset.z + info.copySize.depth;
 
-                            commandList->CopyTextureRegion(&textureLocation, info.textureOffset.x, info.textureOffset.y, info.textureOffset.z, &bufferLocation, &sourceRegion);
-                        }
+                        commandList->CopyTextureRegion(&bufferLocation, info.bufferOffset.x,
+                                                       info.bufferOffset.y, info.bufferOffset.z,
+                                                       &textureLocation, &sourceRegion);
                     }
-                    break;
+                } break;
 
-                case Command::CopyTextureToBuffer:
-                    {
-                        CopyTextureToBufferCmd* copy = mCommands.NextCommand<CopyTextureToBufferCmd>();
-                        Texture* texture = ToBackend(copy->source.texture.Get());
-                        Buffer* buffer = ToBackend(copy->destination.buffer.Get());
+                case Command::Dispatch: {
+                    DispatchCmd* dispatch = mCommands.NextCommand<DispatchCmd>();
+                    commandList->Dispatch(dispatch->x, dispatch->y, dispatch->z);
+                } break;
 
-                        auto copySplit = ComputeTextureCopySplit(
-                            copy->source.x,
-                            copy->source.y,
-                            copy->source.z,
-                            copy->source.width,
-                            copy->source.height,
-                            copy->source.depth,
-                            static_cast<uint32_t>(TextureFormatPixelSize(texture->GetFormat())),
-                            copy->destination.offset,
-                            copy->rowPitch
-                        );
+                case Command::DrawArrays: {
+                    DrawArraysCmd* draw = mCommands.NextCommand<DrawArraysCmd>();
+                    commandList->DrawInstanced(draw->vertexCount, draw->instanceCount,
+                                               draw->firstVertex, draw->firstInstance);
+                } break;
 
-                        D3D12_TEXTURE_COPY_LOCATION textureLocation;
-                        textureLocation.pResource = texture->GetD3D12Resource();
-                        textureLocation.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
-                        textureLocation.SubresourceIndex = copy->source.level;
+                case Command::DrawElements: {
+                    DrawElementsCmd* draw = mCommands.NextCommand<DrawElementsCmd>();
 
-                        for (uint32_t i = 0; i < copySplit.count; ++i) {
-                            auto& info = copySplit.copies[i];
+                    commandList->DrawIndexedInstanced(draw->indexCount, draw->instanceCount,
+                                                      draw->firstIndex, 0, draw->firstInstance);
+                } break;
 
-                            D3D12_TEXTURE_COPY_LOCATION bufferLocation;
-                            bufferLocation.pResource = buffer->GetD3D12Resource().Get();
-                            bufferLocation.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
-                            bufferLocation.PlacedFootprint.Offset = copySplit.offset;
-                            bufferLocation.PlacedFootprint.Footprint.Format = texture->GetD3D12Format();
-                            bufferLocation.PlacedFootprint.Footprint.Width = info.bufferSize.width;
-                            bufferLocation.PlacedFootprint.Footprint.Height = info.bufferSize.height;
-                            bufferLocation.PlacedFootprint.Footprint.Depth = info.bufferSize.depth;
-                            bufferLocation.PlacedFootprint.Footprint.RowPitch = copy->rowPitch;
+                case Command::EndComputePass: {
+                    mCommands.NextCommand<EndComputePassCmd>();
+                    bindingTracker.SetInComputePass(false);
+                } break;
 
-                            D3D12_BOX sourceRegion;
-                            sourceRegion.left = info.textureOffset.x;
-                            sourceRegion.top = info.textureOffset.y;
-                            sourceRegion.front = info.textureOffset.z;
-                            sourceRegion.right = info.textureOffset.x + info.copySize.width;
-                            sourceRegion.bottom = info.textureOffset.y + info.copySize.height;
-                            sourceRegion.back = info.textureOffset.z + info.copySize.depth;
+                case Command::EndRenderPass: {
+                    mCommands.NextCommand<EndRenderPassCmd>();
+                } break;
 
-                            commandList->CopyTextureRegion(&bufferLocation, info.bufferOffset.x, info.bufferOffset.y, info.bufferOffset.z, &textureLocation, &sourceRegion);
-                        }
+                case Command::EndRenderSubpass: {
+                    mCommands.NextCommand<EndRenderSubpassCmd>();
+                    currentSubpass += 1;
+                } break;
+
+                case Command::SetComputePipeline: {
+                    SetComputePipelineCmd* cmd = mCommands.NextCommand<SetComputePipelineCmd>();
+                    ComputePipeline* pipeline = ToBackend(cmd->pipeline).Get();
+                    PipelineLayout* layout = ToBackend(pipeline->GetLayout());
+
+                    commandList->SetComputeRootSignature(layout->GetRootSignature().Get());
+                    commandList->SetPipelineState(pipeline->GetPipelineState().Get());
+
+                    // TODO(enga@google.com): Implement compute pipelines
+                    bindingTracker.SetInheritedBindGroups(commandList, lastLayout, layout);
+                    lastLayout = layout;
+                } break;
+
+                case Command::SetRenderPipeline: {
+                    SetRenderPipelineCmd* cmd = mCommands.NextCommand<SetRenderPipelineCmd>();
+                    RenderPipeline* pipeline = ToBackend(cmd->pipeline).Get();
+                    PipelineLayout* layout = ToBackend(pipeline->GetLayout());
+
+                    commandList->SetGraphicsRootSignature(layout->GetRootSignature().Get());
+                    commandList->SetPipelineState(pipeline->GetPipelineState().Get());
+                    commandList->IASetPrimitiveTopology(pipeline->GetD3D12PrimitiveTopology());
+
+                    bindingTracker.SetInheritedBindGroups(commandList, lastLayout, layout);
+
+                    lastRenderPipeline = pipeline;
+                    lastLayout = layout;
+                } break;
+
+                case Command::SetPushConstants: {
+                    mCommands.NextCommand<SetPushConstantsCmd>();
+                } break;
+
+                case Command::SetStencilReference: {
+                    SetStencilReferenceCmd* cmd = mCommands.NextCommand<SetStencilReferenceCmd>();
+
+                    commandList->OMSetStencilRef(cmd->reference);
+                } break;
+
+                case Command::SetBlendColor: {
+                    SetBlendColorCmd* cmd = mCommands.NextCommand<SetBlendColorCmd>();
+                    ASSERT(lastRenderPipeline);
+                    commandList->OMSetBlendFactor(static_cast<const FLOAT*>(&cmd->r));
+                } break;
+
+                case Command::SetBindGroup: {
+                    SetBindGroupCmd* cmd = mCommands.NextCommand<SetBindGroupCmd>();
+                    BindGroup* group = ToBackend(cmd->group.Get());
+                    bindingTracker.SetBindGroup(commandList, lastLayout, group, cmd->index);
+                } break;
+
+                case Command::SetIndexBuffer: {
+                    SetIndexBufferCmd* cmd = mCommands.NextCommand<SetIndexBufferCmd>();
+
+                    Buffer* buffer = ToBackend(cmd->buffer.Get());
+                    D3D12_INDEX_BUFFER_VIEW bufferView;
+                    bufferView.BufferLocation = buffer->GetVA() + cmd->offset;
+                    bufferView.SizeInBytes = buffer->GetSize() - cmd->offset;
+                    // TODO(cwallez@chromium.org): Make index buffers lazily applied, right now
+                    // this will break if the pipeline is changed for one with a different index
+                    // format after SetIndexBuffer
+                    bufferView.Format = DXGIIndexFormat(lastRenderPipeline->GetIndexFormat());
+
+                    commandList->IASetIndexBuffer(&bufferView);
+                } break;
+
+                case Command::SetVertexBuffers: {
+                    SetVertexBuffersCmd* cmd = mCommands.NextCommand<SetVertexBuffersCmd>();
+                    auto buffers = mCommands.NextData<Ref<BufferBase>>(cmd->count);
+                    auto offsets = mCommands.NextData<uint32_t>(cmd->count);
+
+                    auto inputState = ToBackend(lastRenderPipeline->GetInputState());
+
+                    std::array<D3D12_VERTEX_BUFFER_VIEW, kMaxVertexInputs> d3d12BufferViews;
+                    for (uint32_t i = 0; i < cmd->count; ++i) {
+                        auto input = inputState->GetInput(cmd->startSlot + i);
+                        Buffer* buffer = ToBackend(buffers[i].Get());
+                        d3d12BufferViews[i].BufferLocation = buffer->GetVA() + offsets[i];
+                        d3d12BufferViews[i].StrideInBytes = input.stride;
+                        d3d12BufferViews[i].SizeInBytes = buffer->GetSize() - offsets[i];
                     }
-                    break;
 
-                case Command::Dispatch:
-                    {
-                        DispatchCmd* dispatch = mCommands.NextCommand<DispatchCmd>();
-                        commandList->Dispatch(dispatch->x, dispatch->y, dispatch->z);
+                    commandList->IASetVertexBuffers(cmd->startSlot, cmd->count,
+                                                    d3d12BufferViews.data());
+                } break;
+
+                case Command::TransitionBufferUsage: {
+                    TransitionBufferUsageCmd* cmd =
+                        mCommands.NextCommand<TransitionBufferUsageCmd>();
+
+                    Buffer* buffer = ToBackend(cmd->buffer.Get());
+
+                    D3D12_RESOURCE_BARRIER barrier;
+                    if (buffer->GetResourceTransitionBarrier(buffer->GetUsage(), cmd->usage,
+                                                             &barrier)) {
+                        commandList->ResourceBarrier(1, &barrier);
                     }
-                    break;
 
-                case Command::DrawArrays:
-                    {
-                        DrawArraysCmd* draw = mCommands.NextCommand<DrawArraysCmd>();
-                        commandList->DrawInstanced(
-                            draw->vertexCount,
-                            draw->instanceCount,
-                            draw->firstVertex,
-                            draw->firstInstance
-                        );
+                    buffer->UpdateUsageInternal(cmd->usage);
+                } break;
+
+                case Command::TransitionTextureUsage: {
+                    TransitionTextureUsageCmd* cmd =
+                        mCommands.NextCommand<TransitionTextureUsageCmd>();
+
+                    Texture* texture = ToBackend(cmd->texture.Get());
+
+                    D3D12_RESOURCE_BARRIER barrier;
+                    if (texture->GetResourceTransitionBarrier(texture->GetUsage(), cmd->usage,
+                                                              &barrier)) {
+                        commandList->ResourceBarrier(1, &barrier);
                     }
-                    break;
 
-                case Command::DrawElements:
-                    {
-                        DrawElementsCmd* draw = mCommands.NextCommand<DrawElementsCmd>();
-
-                        commandList->DrawIndexedInstanced(
-                            draw->indexCount,
-                            draw->instanceCount,
-                            draw->firstIndex,
-                            0,
-                            draw->firstInstance
-                        );
-                    }
-                    break;
-
-                case Command::EndComputePass:
-                    {
-                        mCommands.NextCommand<EndComputePassCmd>();
-                        bindingTracker.SetInComputePass(false);
-                    }
-                    break;
-
-                case Command::EndRenderPass:
-                    {
-                        mCommands.NextCommand<EndRenderPassCmd>();
-                    }
-                    break;
-
-                case Command::EndRenderSubpass:
-                    {
-                        mCommands.NextCommand<EndRenderSubpassCmd>();
-                        currentSubpass += 1;
-                    }
-                    break;
-
-                case Command::SetComputePipeline:
-                    {
-                        SetComputePipelineCmd* cmd = mCommands.NextCommand<SetComputePipelineCmd>();
-                        ComputePipeline* pipeline = ToBackend(cmd->pipeline).Get();
-                        PipelineLayout* layout = ToBackend(pipeline->GetLayout());
-
-                        commandList->SetComputeRootSignature(layout->GetRootSignature().Get());
-                        commandList->SetPipelineState(pipeline->GetPipelineState().Get());
-
-                        // TODO(enga@google.com): Implement compute pipelines
-                        bindingTracker.SetInheritedBindGroups(commandList, lastLayout, layout);
-                        lastLayout = layout;
-                    }
-                    break;
-
-                case Command::SetRenderPipeline:
-                    {
-                        SetRenderPipelineCmd* cmd = mCommands.NextCommand<SetRenderPipelineCmd>();
-                        RenderPipeline* pipeline = ToBackend(cmd->pipeline).Get();
-                        PipelineLayout* layout = ToBackend(pipeline->GetLayout());
-
-                        commandList->SetGraphicsRootSignature(layout->GetRootSignature().Get());
-                        commandList->SetPipelineState(pipeline->GetPipelineState().Get());
-                        commandList->IASetPrimitiveTopology(pipeline->GetD3D12PrimitiveTopology());
-
-                        bindingTracker.SetInheritedBindGroups(commandList, lastLayout, layout);
-
-                        lastRenderPipeline = pipeline;
-                        lastLayout = layout;
-                    }
-                    break;
-
-                case Command::SetPushConstants:
-                    {
-                        mCommands.NextCommand<SetPushConstantsCmd>();
-                    }
-                    break;
-
-                case Command::SetStencilReference:
-                    {
-                        SetStencilReferenceCmd *cmd = mCommands.NextCommand<SetStencilReferenceCmd>();
-
-                        commandList->OMSetStencilRef(cmd->reference);
-                    }
-                    break;
-
-                case Command::SetBlendColor:
-                    {
-                        SetBlendColorCmd* cmd = mCommands.NextCommand<SetBlendColorCmd>();
-                        ASSERT(lastRenderPipeline);
-                        commandList->OMSetBlendFactor(static_cast<const FLOAT*>(&cmd->r));
-                    }
-                    break;
-
-                case Command::SetBindGroup:
-                    {
-                        SetBindGroupCmd* cmd = mCommands.NextCommand<SetBindGroupCmd>();
-                        BindGroup* group = ToBackend(cmd->group.Get());
-                        bindingTracker.SetBindGroup(commandList, lastLayout, group, cmd->index);
-                    }
-                    break;
-
-                case Command::SetIndexBuffer:
-                    {
-                        SetIndexBufferCmd* cmd = mCommands.NextCommand<SetIndexBufferCmd>();
-
-                        Buffer* buffer = ToBackend(cmd->buffer.Get());
-                        D3D12_INDEX_BUFFER_VIEW bufferView;
-                        bufferView.BufferLocation = buffer->GetVA() + cmd->offset;
-                        bufferView.SizeInBytes = buffer->GetSize() - cmd->offset;
-                        //TODO(cwallez@chromium.org): Make index buffers lazily applied, right now
-                        //this will break if the pipeline is changed for one with a different index
-                        //format after SetIndexBuffer
-                        bufferView.Format = DXGIIndexFormat(lastRenderPipeline->GetIndexFormat());
-
-                        commandList->IASetIndexBuffer(&bufferView);
-                    }
-                    break;
-
-                case Command::SetVertexBuffers:
-                    {
-                        SetVertexBuffersCmd* cmd = mCommands.NextCommand<SetVertexBuffersCmd>();
-                        auto buffers = mCommands.NextData<Ref<BufferBase>>(cmd->count);
-                        auto offsets = mCommands.NextData<uint32_t>(cmd->count);
-
-                        auto inputState = ToBackend(lastRenderPipeline->GetInputState());
-
-                        std::array<D3D12_VERTEX_BUFFER_VIEW, kMaxVertexInputs> d3d12BufferViews;
-                        for (uint32_t i = 0; i < cmd->count; ++i) {
-                            auto input = inputState->GetInput(cmd->startSlot + i);
-                            Buffer* buffer = ToBackend(buffers[i].Get());
-                            d3d12BufferViews[i].BufferLocation = buffer->GetVA() + offsets[i];
-                            d3d12BufferViews[i].StrideInBytes = input.stride;
-                            d3d12BufferViews[i].SizeInBytes = buffer->GetSize() - offsets[i];
-                        }
-
-                        commandList->IASetVertexBuffers(cmd->startSlot, cmd->count, d3d12BufferViews.data());
-                    }
-                    break;
-
-                case Command::TransitionBufferUsage:
-                    {
-                        TransitionBufferUsageCmd* cmd = mCommands.NextCommand<TransitionBufferUsageCmd>();
-
-                        Buffer* buffer = ToBackend(cmd->buffer.Get());
-
-                        D3D12_RESOURCE_BARRIER barrier;
-                        if (buffer->GetResourceTransitionBarrier(buffer->GetUsage(), cmd->usage, &barrier)) {
-                            commandList->ResourceBarrier(1, &barrier);
-                        }
-
-                        buffer->UpdateUsageInternal(cmd->usage);
-                    }
-                    break;
-
-                case Command::TransitionTextureUsage:
-                    {
-                        TransitionTextureUsageCmd* cmd = mCommands.NextCommand<TransitionTextureUsageCmd>();
-
-                        Texture* texture = ToBackend(cmd->texture.Get());
-
-                        D3D12_RESOURCE_BARRIER barrier;
-                        if (texture->GetResourceTransitionBarrier(texture->GetUsage(), cmd->usage, &barrier)) {
-                            commandList->ResourceBarrier(1, &barrier);
-                        }
-
-                        texture->UpdateUsageInternal(cmd->usage);
-                    }
-                    break;
+                    texture->UpdateUsageInternal(cmd->usage);
+                } break;
             }
         }
     }
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/CommandBufferD3D12.h b/src/backend/d3d12/CommandBufferD3D12.h
index fb4f329..224b3bb 100644
--- a/src/backend/d3d12/CommandBufferD3D12.h
+++ b/src/backend/d3d12/CommandBufferD3D12.h
@@ -20,23 +20,21 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class CommandBuffer : public CommandBufferBase {
-        public:
-            CommandBuffer(Device* device, CommandBufferBuilder* builder);
-            ~CommandBuffer();
+      public:
+        CommandBuffer(Device* device, CommandBufferBuilder* builder);
+        ~CommandBuffer();
 
-            void FillCommands(ComPtr<ID3D12GraphicsCommandList> commandList);
+        void FillCommands(ComPtr<ID3D12GraphicsCommandList> commandList);
 
-        private:
-            Device* mDevice;
-            CommandIterator mCommands;
+      private:
+        Device* mDevice;
+        CommandIterator mCommands;
     };
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_COMMANDBUFFERD3D12_H_
+#endif  // BACKEND_D3D12_COMMANDBUFFERD3D12_H_
diff --git a/src/backend/d3d12/ComputePipelineD3D12.cpp b/src/backend/d3d12/ComputePipelineD3D12.cpp
index 3e1dccd..f8822d6 100644
--- a/src/backend/d3d12/ComputePipelineD3D12.cpp
+++ b/src/backend/d3d12/ComputePipelineD3D12.cpp
@@ -15,14 +15,13 @@
 #include "backend/d3d12/ComputePipelineD3D12.h"
 
 #include "backend/d3d12/D3D12Backend.h"
-#include "backend/d3d12/ShaderModuleD3D12.h"
 #include "backend/d3d12/PipelineLayoutD3D12.h"
+#include "backend/d3d12/ShaderModuleD3D12.h"
 #include "common/Assert.h"
 
 #include <d3dcompiler.h>
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     ComputePipeline::ComputePipeline(ComputePipelineBuilder* builder)
         : ComputePipelineBase(builder) {
@@ -41,19 +40,9 @@
         ComPtr<ID3DBlob> compiledShader;
         ComPtr<ID3DBlob> errors;
 
-        if (FAILED(D3DCompile(
-            hlslSource.c_str(),
-            hlslSource.length(),
-            nullptr,
-            { nullptr },
-            nullptr,
-            entryPoint.c_str(),
-            "cs_5_1",
-            compileFlags,
-            0,
-            &compiledShader,
-            &errors
-        ))) {
+        if (FAILED(D3DCompile(hlslSource.c_str(), hlslSource.length(), nullptr, {nullptr}, nullptr,
+                              entryPoint.c_str(), "cs_5_1", compileFlags, 0, &compiledShader,
+                              &errors))) {
             printf("%s\n", reinterpret_cast<char*>(errors->GetBufferPointer()));
             ASSERT(false);
         }
@@ -64,12 +53,12 @@
         descriptor.CS.BytecodeLength = compiledShader->GetBufferSize();
 
         Device* device = ToBackend(builder->GetDevice());
-        device->GetD3D12Device()->CreateComputePipelineState(&descriptor, IID_PPV_ARGS(&mPipelineState));
+        device->GetD3D12Device()->CreateComputePipelineState(&descriptor,
+                                                             IID_PPV_ARGS(&mPipelineState));
     }
 
     ComPtr<ID3D12PipelineState> ComputePipeline::GetPipelineState() {
         return mPipelineState;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/ComputePipelineD3D12.h b/src/backend/d3d12/ComputePipelineD3D12.h
index 0fc4707..fd9f2a6 100644
--- a/src/backend/d3d12/ComputePipelineD3D12.h
+++ b/src/backend/d3d12/ComputePipelineD3D12.h
@@ -19,20 +19,18 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-    namespace d3d12 {
+namespace backend { namespace d3d12 {
 
-        class ComputePipeline : public ComputePipelineBase {
-        public:
-            ComputePipeline(ComputePipelineBuilder* builder);
+    class ComputePipeline : public ComputePipelineBase {
+      public:
+        ComputePipeline(ComputePipelineBuilder* builder);
 
-            ComPtr<ID3D12PipelineState> GetPipelineState();
+        ComPtr<ID3D12PipelineState> GetPipelineState();
 
-        private:
-            ComPtr<ID3D12PipelineState> mPipelineState;
-        };
+      private:
+        ComPtr<ID3D12PipelineState> mPipelineState;
+    };
 
-    }
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_COMPUTEPIPELINED3D12_H_
+#endif  // BACKEND_D3D12_COMPUTEPIPELINED3D12_H_
diff --git a/src/backend/d3d12/D3D12Backend.cpp b/src/backend/d3d12/D3D12Backend.cpp
index 16ee44d..bc7fca2 100644
--- a/src/backend/d3d12/D3D12Backend.cpp
+++ b/src/backend/d3d12/D3D12Backend.cpp
@@ -36,8 +36,7 @@
 #include "backend/d3d12/TextureD3D12.h"
 #include "common/Assert.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     nxtProcTable GetNonValidatingProcs();
     nxtProcTable GetValidatingProcs();
@@ -63,7 +62,8 @@
         backendDevice->NextSerial();
     }
 
-    void ExecuteCommandLists(nxtDevice device, std::initializer_list<ID3D12CommandList*> commandLists) {
+    void ExecuteCommandLists(nxtDevice device,
+                             std::initializer_list<ID3D12CommandList*> commandLists) {
         Device* backendDevice = reinterpret_cast<Device*>(device);
         backendDevice->ExecuteCommandLists(commandLists);
     }
@@ -89,13 +89,13 @@
           mMapReadRequestTracker(new MapReadRequestTracker(this)),
           mResourceAllocator(new ResourceAllocator(this)),
           mResourceUploader(new ResourceUploader(this)) {
-
         D3D12_COMMAND_QUEUE_DESC queueDesc = {};
         queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
         queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
         ASSERT_SUCCESS(d3d12Device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&mCommandQueue)));
 
-        ASSERT_SUCCESS(d3d12Device->CreateFence(mSerial, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&mFence)));
+        ASSERT_SUCCESS(
+            d3d12Device->CreateFence(mSerial, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&mFence)));
         mFenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
         ASSERT(mFenceEvent != nullptr);
 
@@ -105,8 +105,8 @@
     Device::~Device() {
         const uint64_t currentSerial = GetSerial();
         NextSerial();
-        WaitForSerial(currentSerial); // Wait for all in-flight commands to finish executing
-        TickImpl(); // Call tick one last time so resources are cleaned up
+        WaitForSerial(currentSerial);  // Wait for all in-flight commands to finish executing
+        TickImpl();                    // Call tick one last time so resources are cleaned up
         delete mCommandAllocatorManager;
         delete mDescriptorHeapAllocator;
         delete mMapReadRequestTracker;
@@ -139,22 +139,21 @@
     }
 
     void Device::OpenCommandList(ComPtr<ID3D12GraphicsCommandList>* commandList) {
-        ComPtr<ID3D12GraphicsCommandList> &cmdList = *commandList;
+        ComPtr<ID3D12GraphicsCommandList>& cmdList = *commandList;
         if (!cmdList) {
             ASSERT_SUCCESS(mD3d12Device->CreateCommandList(
-                0,
-                D3D12_COMMAND_LIST_TYPE_DIRECT,
-                mCommandAllocatorManager->ReserveCommandAllocator().Get(),
-                nullptr,
-                IID_PPV_ARGS(&cmdList)
-            ));
+                0, D3D12_COMMAND_LIST_TYPE_DIRECT,
+                mCommandAllocatorManager->ReserveCommandAllocator().Get(), nullptr,
+                IID_PPV_ARGS(&cmdList)));
         } else {
-            ASSERT_SUCCESS(cmdList->Reset(mCommandAllocatorManager->ReserveCommandAllocator().Get(), nullptr));
+            ASSERT_SUCCESS(
+                cmdList->Reset(mCommandAllocatorManager->ReserveCommandAllocator().Get(), nullptr));
         }
     }
 
     ComPtr<ID3D12GraphicsCommandList> Device::GetPendingCommandList() {
-        // Callers of GetPendingCommandList do so to record commands. Only reserve a command allocator when it is needed so we don't submit empty command lists
+        // Callers of GetPendingCommandList do so to record commands. Only reserve a command
+        // allocator when it is needed so we don't submit empty command lists
         if (!mPendingCommands.open) {
             OpenCommandList(&mPendingCommands.commandList);
             mPendingCommands.open = true;
@@ -197,10 +196,12 @@
             mPendingCommands.open = false;
             lists[0] = mPendingCommands.commandList.Get();
             std::copy(commandLists.begin(), commandLists.end(), lists.begin() + 1);
-            mCommandQueue->ExecuteCommandLists(static_cast<UINT>(commandLists.size() + 1), lists.data());
+            mCommandQueue->ExecuteCommandLists(static_cast<UINT>(commandLists.size() + 1),
+                                               lists.data());
         } else {
             std::vector<ID3D12CommandList*> lists(commandLists);
-            mCommandQueue->ExecuteCommandLists(static_cast<UINT>(commandLists.size()), lists.data());
+            mCommandQueue->ExecuteCommandLists(static_cast<UINT>(commandLists.size()),
+                                               lists.data());
         }
     }
 
@@ -268,5 +269,4 @@
         : RenderPassBase(builder), mDevice(device) {
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/D3D12Backend.h b/src/backend/d3d12/D3D12Backend.h
index 591b509..7125c79 100644
--- a/src/backend/d3d12/D3D12Backend.h
+++ b/src/backend/d3d12/D3D12Backend.h
@@ -24,8 +24,7 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class BindGroup;
     class BindGroupLayout;
@@ -77,7 +76,7 @@
         using TextureViewType = TextureView;
     };
 
-    template<typename T>
+    template <typename T>
     auto ToBackend(T&& common) -> decltype(ToBackendBase<D3D12BackendTraits>(common)) {
         return ToBackendBase<D3D12BackendTraits>(common);
     }
@@ -86,78 +85,77 @@
 
     // Definition of backend types
     class Device : public DeviceBase {
-        public:
-            Device(ComPtr<ID3D12Device> d3d12Device);
-            ~Device();
+      public:
+        Device(ComPtr<ID3D12Device> d3d12Device);
+        ~Device();
 
-            BindGroupBase* CreateBindGroup(BindGroupBuilder* builder) override;
-            BindGroupLayoutBase* CreateBindGroupLayout(BindGroupLayoutBuilder* builder) override;
-            BlendStateBase* CreateBlendState(BlendStateBuilder* builder) override;
-            BufferBase* CreateBuffer(BufferBuilder* builder) override;
-            BufferViewBase* CreateBufferView(BufferViewBuilder* builder) override;
-            CommandBufferBase* CreateCommandBuffer(CommandBufferBuilder* builder) override;
-            ComputePipelineBase* CreateComputePipeline(ComputePipelineBuilder* builder) override;
-            DepthStencilStateBase* CreateDepthStencilState(DepthStencilStateBuilder* builder) override;
-            FramebufferBase* CreateFramebuffer(FramebufferBuilder* builder) override;
-            InputStateBase* CreateInputState(InputStateBuilder* builder) override;
-            PipelineLayoutBase* CreatePipelineLayout(PipelineLayoutBuilder* builder) override;
-            QueueBase* CreateQueue(QueueBuilder* builder) override;
-            RenderPassBase* CreateRenderPass(RenderPassBuilder* builder) override;
-            RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) override;
-            SamplerBase* CreateSampler(SamplerBuilder* builder) override;
-            ShaderModuleBase* CreateShaderModule(ShaderModuleBuilder* builder) override;
-            SwapChainBase* CreateSwapChain(SwapChainBuilder* builder) override;
-            TextureBase* CreateTexture(TextureBuilder* builder) override;
-            TextureViewBase* CreateTextureView(TextureViewBuilder* builder) override;
+        BindGroupBase* CreateBindGroup(BindGroupBuilder* builder) override;
+        BindGroupLayoutBase* CreateBindGroupLayout(BindGroupLayoutBuilder* builder) override;
+        BlendStateBase* CreateBlendState(BlendStateBuilder* builder) override;
+        BufferBase* CreateBuffer(BufferBuilder* builder) override;
+        BufferViewBase* CreateBufferView(BufferViewBuilder* builder) override;
+        CommandBufferBase* CreateCommandBuffer(CommandBufferBuilder* builder) override;
+        ComputePipelineBase* CreateComputePipeline(ComputePipelineBuilder* builder) override;
+        DepthStencilStateBase* CreateDepthStencilState(DepthStencilStateBuilder* builder) override;
+        FramebufferBase* CreateFramebuffer(FramebufferBuilder* builder) override;
+        InputStateBase* CreateInputState(InputStateBuilder* builder) override;
+        PipelineLayoutBase* CreatePipelineLayout(PipelineLayoutBuilder* builder) override;
+        QueueBase* CreateQueue(QueueBuilder* builder) override;
+        RenderPassBase* CreateRenderPass(RenderPassBuilder* builder) override;
+        RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) override;
+        SamplerBase* CreateSampler(SamplerBuilder* builder) override;
+        ShaderModuleBase* CreateShaderModule(ShaderModuleBuilder* builder) override;
+        SwapChainBase* CreateSwapChain(SwapChainBuilder* builder) override;
+        TextureBase* CreateTexture(TextureBuilder* builder) override;
+        TextureViewBase* CreateTextureView(TextureViewBuilder* builder) override;
 
-            void TickImpl() override;
+        void TickImpl() override;
 
-            ComPtr<ID3D12Device> GetD3D12Device();
-            ComPtr<ID3D12CommandQueue> GetCommandQueue();
+        ComPtr<ID3D12Device> GetD3D12Device();
+        ComPtr<ID3D12CommandQueue> GetCommandQueue();
 
-            DescriptorHeapAllocator* GetDescriptorHeapAllocator();
-            MapReadRequestTracker* GetMapReadRequestTracker() const;
-            ResourceAllocator* GetResourceAllocator();
-            ResourceUploader* GetResourceUploader();
+        DescriptorHeapAllocator* GetDescriptorHeapAllocator();
+        MapReadRequestTracker* GetMapReadRequestTracker() const;
+        ResourceAllocator* GetResourceAllocator();
+        ResourceUploader* GetResourceUploader();
 
-            void OpenCommandList(ComPtr<ID3D12GraphicsCommandList>* commandList);
-            ComPtr<ID3D12GraphicsCommandList> GetPendingCommandList();
+        void OpenCommandList(ComPtr<ID3D12GraphicsCommandList>* commandList);
+        ComPtr<ID3D12GraphicsCommandList> GetPendingCommandList();
 
-            uint64_t GetSerial() const;
-            void NextSerial();
-            void WaitForSerial(uint64_t serial);
+        uint64_t GetSerial() const;
+        void NextSerial();
+        void WaitForSerial(uint64_t serial);
 
-            void ExecuteCommandLists(std::initializer_list<ID3D12CommandList*> commandLists);
+        void ExecuteCommandLists(std::initializer_list<ID3D12CommandList*> commandLists);
 
-        private:
-            uint64_t mSerial = 0;
-            ComPtr<ID3D12Fence> mFence;
-            HANDLE mFenceEvent;
+      private:
+        uint64_t mSerial = 0;
+        ComPtr<ID3D12Fence> mFence;
+        HANDLE mFenceEvent;
 
-            ComPtr<ID3D12Device> mD3d12Device;
-            ComPtr<ID3D12CommandQueue> mCommandQueue;
+        ComPtr<ID3D12Device> mD3d12Device;
+        ComPtr<ID3D12CommandQueue> mCommandQueue;
 
-            CommandAllocatorManager* mCommandAllocatorManager;
-            DescriptorHeapAllocator* mDescriptorHeapAllocator;
-            MapReadRequestTracker* mMapReadRequestTracker;
-            ResourceAllocator* mResourceAllocator;
-            ResourceUploader* mResourceUploader;
+        CommandAllocatorManager* mCommandAllocatorManager;
+        DescriptorHeapAllocator* mDescriptorHeapAllocator;
+        MapReadRequestTracker* mMapReadRequestTracker;
+        ResourceAllocator* mResourceAllocator;
+        ResourceUploader* mResourceUploader;
 
-            struct PendingCommandList {
-                ComPtr<ID3D12GraphicsCommandList> commandList;
-                bool open = false;
-            } mPendingCommands;
+        struct PendingCommandList {
+            ComPtr<ID3D12GraphicsCommandList> commandList;
+            bool open = false;
+        } mPendingCommands;
     };
 
     class RenderPass : public RenderPassBase {
-        public:
-            RenderPass(Device* device, RenderPassBuilder* builder);
+      public:
+        RenderPass(Device* device, RenderPassBuilder* builder);
 
-        private:
-            Device* mDevice;
+      private:
+        Device* mDevice;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_D3D12BACKEND_H_
+#endif  // BACKEND_D3D12_D3D12BACKEND_H_
diff --git a/src/backend/d3d12/DepthStencilStateD3D12.cpp b/src/backend/d3d12/DepthStencilStateD3D12.cpp
index ea5e39f..72b72ee 100644
--- a/src/backend/d3d12/DepthStencilStateD3D12.cpp
+++ b/src/backend/d3d12/DepthStencilStateD3D12.cpp
@@ -16,8 +16,7 @@
 
 #include "common/BitSetIterator.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     static D3D12_STENCIL_OP StencilOp(nxt::StencilOperation op) {
         switch (op) {
@@ -43,8 +42,7 @@
     }
 
     static D3D12_COMPARISON_FUNC ComparisonFunc(nxt::CompareFunction func) {
-        switch (func)
-        {
+        switch (func) {
             case nxt::CompareFunction::Always:
                 return D3D12_COMPARISON_FUNC_ALWAYS;
             case nxt::CompareFunction::Equal:
@@ -66,7 +64,8 @@
         }
     }
 
-    static D3D12_DEPTH_STENCILOP_DESC StencilOpDesc(backend::DepthStencilStateBase::StencilFaceInfo faceInfo) {
+    static D3D12_DEPTH_STENCILOP_DESC StencilOpDesc(
+        backend::DepthStencilStateBase::StencilFaceInfo faceInfo) {
         D3D12_DEPTH_STENCILOP_DESC desc;
 
         desc.StencilFailOp = StencilOp(faceInfo.stencilFail);
@@ -79,9 +78,9 @@
 
     DepthStencilState::DepthStencilState(Device* device, DepthStencilStateBuilder* builder)
         : DepthStencilStateBase(builder), mDevice(device) {
-
         mDepthStencilDescriptor.DepthEnable = TRUE;
-        mDepthStencilDescriptor.DepthWriteMask = GetDepth().depthWriteEnabled ? D3D12_DEPTH_WRITE_MASK_ALL : D3D12_DEPTH_WRITE_MASK_ZERO;
+        mDepthStencilDescriptor.DepthWriteMask =
+            GetDepth().depthWriteEnabled ? D3D12_DEPTH_WRITE_MASK_ALL : D3D12_DEPTH_WRITE_MASK_ZERO;
         mDepthStencilDescriptor.DepthFunc = ComparisonFunc(GetDepth().compareFunction);
 
         mDepthStencilDescriptor.StencilEnable = StencilTestEnabled() ? TRUE : FALSE;
@@ -90,11 +89,10 @@
 
         mDepthStencilDescriptor.FrontFace = StencilOpDesc(GetStencil().front);
         mDepthStencilDescriptor.BackFace = StencilOpDesc(GetStencil().back);
-	}
+    }
 
     const D3D12_DEPTH_STENCIL_DESC& DepthStencilState::GetD3D12DepthStencilDescriptor() const {
         return mDepthStencilDescriptor;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/DepthStencilStateD3D12.h b/src/backend/d3d12/DepthStencilStateD3D12.h
index 4020c56..e67944d 100644
--- a/src/backend/d3d12/DepthStencilStateD3D12.h
+++ b/src/backend/d3d12/DepthStencilStateD3D12.h
@@ -19,23 +19,21 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class DepthStencilState : public DepthStencilStateBase {
-        public:
-            DepthStencilState(Device* device, DepthStencilStateBuilder* builder);
+      public:
+        DepthStencilState(Device* device, DepthStencilStateBuilder* builder);
 
-            const D3D12_DEPTH_STENCIL_DESC& GetD3D12DepthStencilDescriptor() const;
+        const D3D12_DEPTH_STENCIL_DESC& GetD3D12DepthStencilDescriptor() const;
 
-        private:
-            Device* mDevice;
-            D3D12_DEPTH_STENCIL_DESC mDepthStencilDescriptor;
+      private:
+        Device* mDevice;
+        D3D12_DEPTH_STENCIL_DESC mDepthStencilDescriptor;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_DEPTHSTENCILSTATED3D12_H_
+#endif  // BACKEND_D3D12_DEPTHSTENCILSTATED3D12_H_
diff --git a/src/backend/d3d12/DescriptorHeapAllocator.cpp b/src/backend/d3d12/DescriptorHeapAllocator.cpp
index 0cd97cf..320a508 100644
--- a/src/backend/d3d12/DescriptorHeapAllocator.cpp
+++ b/src/backend/d3d12/DescriptorHeapAllocator.cpp
@@ -17,14 +17,15 @@
 #include "backend/d3d12/D3D12Backend.h"
 #include "common/Assert.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     DescriptorHeapHandle::DescriptorHeapHandle()
         : mDescriptorHeap(nullptr), mSizeIncrement(0), mOffset(0) {
     }
 
-    DescriptorHeapHandle::DescriptorHeapHandle(ComPtr<ID3D12DescriptorHeap> descriptorHeap, uint32_t sizeIncrement, uint32_t offset)
+    DescriptorHeapHandle::DescriptorHeapHandle(ComPtr<ID3D12DescriptorHeap> descriptorHeap,
+                                               uint32_t sizeIncrement,
+                                               uint32_t offset)
         : mDescriptorHeap(descriptorHeap), mSizeIncrement(sizeIncrement), mOffset(offset) {
     }
 
@@ -46,29 +47,39 @@
         return handle;
     }
 
-
     DescriptorHeapAllocator::DescriptorHeapAllocator(Device* device)
         : mDevice(device),
-          mSizeIncrements {
-            device->GetD3D12Device()->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV),
-            device->GetD3D12Device()->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER),
-            device->GetD3D12Device()->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV),
-            device->GetD3D12Device()->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_DSV),
+          mSizeIncrements{
+              device->GetD3D12Device()->GetDescriptorHandleIncrementSize(
+                  D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV),
+              device->GetD3D12Device()->GetDescriptorHandleIncrementSize(
+                  D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER),
+              device->GetD3D12Device()->GetDescriptorHandleIncrementSize(
+                  D3D12_DESCRIPTOR_HEAP_TYPE_RTV),
+              device->GetD3D12Device()->GetDescriptorHandleIncrementSize(
+                  D3D12_DESCRIPTOR_HEAP_TYPE_DSV),
           } {
     }
 
-    DescriptorHeapHandle DescriptorHeapAllocator::Allocate(D3D12_DESCRIPTOR_HEAP_TYPE type, uint32_t count, uint32_t allocationSize, DescriptorHeapInfo* heapInfo, D3D12_DESCRIPTOR_HEAP_FLAGS flags) {
-        // TODO(enga@google.com): This is just a linear allocator so the heap will quickly run out of space causing a new one to be allocated
-        // We should reuse heap subranges that have been released
+    DescriptorHeapHandle DescriptorHeapAllocator::Allocate(D3D12_DESCRIPTOR_HEAP_TYPE type,
+                                                           uint32_t count,
+                                                           uint32_t allocationSize,
+                                                           DescriptorHeapInfo* heapInfo,
+                                                           D3D12_DESCRIPTOR_HEAP_FLAGS flags) {
+        // TODO(enga@google.com): This is just a linear allocator so the heap will quickly run out
+        // of space causing a new one to be allocated We should reuse heap subranges that have been
+        // released
         if (count == 0) {
             return DescriptorHeapHandle();
         }
 
         {
-            // If the current pool for this type has space, linearly allocate count bytes in the pool
+            // If the current pool for this type has space, linearly allocate count bytes in the
+            // pool
             auto& allocationInfo = heapInfo->second;
             if (allocationInfo.remaining >= count) {
-                DescriptorHeapHandle handle(heapInfo->first, mSizeIncrements[type], allocationInfo.size - allocationInfo.remaining);
+                DescriptorHeapHandle handle(heapInfo->first, mSizeIncrements[type],
+                                            allocationInfo.size - allocationInfo.remaining);
                 allocationInfo.remaining -= count;
                 Release(handle);
                 return handle;
@@ -83,9 +94,10 @@
         heapDescriptor.Flags = flags;
         heapDescriptor.NodeMask = 0;
         ComPtr<ID3D12DescriptorHeap> heap;
-        ASSERT_SUCCESS(mDevice->GetD3D12Device()->CreateDescriptorHeap(&heapDescriptor, IID_PPV_ARGS(&heap)));
+        ASSERT_SUCCESS(
+            mDevice->GetD3D12Device()->CreateDescriptorHeap(&heapDescriptor, IID_PPV_ARGS(&heap)));
 
-        AllocationInfo allocationInfo = { allocationSize, allocationSize - count };
+        AllocationInfo allocationInfo = {allocationSize, allocationSize - count};
         *heapInfo = std::make_pair(heap, allocationInfo);
 
         DescriptorHeapHandle handle(heap, mSizeIncrements[type], 0);
@@ -93,14 +105,21 @@
         return handle;
     }
 
-    DescriptorHeapHandle DescriptorHeapAllocator::AllocateCPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, uint32_t count) {
-        return Allocate(type, count, count, &mCpuDescriptorHeapInfos[type], D3D12_DESCRIPTOR_HEAP_FLAG_NONE);
+    DescriptorHeapHandle DescriptorHeapAllocator::AllocateCPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE type,
+                                                                  uint32_t count) {
+        return Allocate(type, count, count, &mCpuDescriptorHeapInfos[type],
+                        D3D12_DESCRIPTOR_HEAP_FLAG_NONE);
     }
 
-    DescriptorHeapHandle DescriptorHeapAllocator::AllocateGPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, uint32_t count) {
-        ASSERT(type == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV || type == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
-        unsigned int heapSize = (type == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV ? kMaxCbvUavSrvHeapSize : kMaxSamplerHeapSize);
-        return Allocate(type, count, heapSize, &mGpuDescriptorHeapInfos[type], D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE);
+    DescriptorHeapHandle DescriptorHeapAllocator::AllocateGPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE type,
+                                                                  uint32_t count) {
+        ASSERT(type == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV ||
+               type == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
+        unsigned int heapSize =
+            (type == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV ? kMaxCbvUavSrvHeapSize
+                                                            : kMaxSamplerHeapSize);
+        return Allocate(type, count, heapSize, &mGpuDescriptorHeapInfos[type],
+                        D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE);
     }
 
     void DescriptorHeapAllocator::Tick(uint64_t lastCompletedSerial) {
@@ -110,5 +129,4 @@
     void DescriptorHeapAllocator::Release(DescriptorHeapHandle handle) {
         mReleasedHandles.Enqueue(handle, mDevice->GetSerial());
     }
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/DescriptorHeapAllocator.h b/src/backend/d3d12/DescriptorHeapAllocator.h
index 41cd46b..9c6bf0c 100644
--- a/src/backend/d3d12/DescriptorHeapAllocator.h
+++ b/src/backend/d3d12/DescriptorHeapAllocator.h
@@ -17,63 +17,67 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-#include "common/SerialQueue.h"
 #include <array>
 #include <vector>
+#include "common/SerialQueue.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class DescriptorHeapHandle {
+      public:
+        DescriptorHeapHandle();
+        DescriptorHeapHandle(ComPtr<ID3D12DescriptorHeap> descriptorHeap,
+                             uint32_t sizeIncrement,
+                             uint32_t offset);
 
-        public:
-            DescriptorHeapHandle();
-            DescriptorHeapHandle(ComPtr<ID3D12DescriptorHeap> descriptorHeap, uint32_t sizeIncrement, uint32_t offset);
+        ID3D12DescriptorHeap* Get() const;
+        D3D12_CPU_DESCRIPTOR_HANDLE GetCPUHandle(uint32_t index) const;
+        D3D12_GPU_DESCRIPTOR_HANDLE GetGPUHandle(uint32_t index) const;
 
-            ID3D12DescriptorHeap* Get() const;
-            D3D12_CPU_DESCRIPTOR_HANDLE GetCPUHandle(uint32_t index) const;
-            D3D12_GPU_DESCRIPTOR_HANDLE GetGPUHandle(uint32_t index) const;
-
-        private:
-            ComPtr<ID3D12DescriptorHeap> mDescriptorHeap;
-            uint32_t mSizeIncrement;
-            uint32_t mOffset;
+      private:
+        ComPtr<ID3D12DescriptorHeap> mDescriptorHeap;
+        uint32_t mSizeIncrement;
+        uint32_t mOffset;
     };
 
     class DescriptorHeapAllocator {
-        public:
-            DescriptorHeapAllocator(Device* device);
+      public:
+        DescriptorHeapAllocator(Device* device);
 
-            DescriptorHeapHandle AllocateGPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, uint32_t count);
-            DescriptorHeapHandle AllocateCPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, uint32_t count);
-            void Tick(uint64_t lastCompletedSerial);
+        DescriptorHeapHandle AllocateGPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, uint32_t count);
+        DescriptorHeapHandle AllocateCPUHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, uint32_t count);
+        void Tick(uint64_t lastCompletedSerial);
 
-        private:
-            static constexpr unsigned int kMaxCbvUavSrvHeapSize = 1000000;
-            static constexpr unsigned int kMaxSamplerHeapSize = 2048;
-            static constexpr unsigned int kDescriptorHeapTypes = D3D12_DESCRIPTOR_HEAP_TYPE::D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES;
+      private:
+        static constexpr unsigned int kMaxCbvUavSrvHeapSize = 1000000;
+        static constexpr unsigned int kMaxSamplerHeapSize = 2048;
+        static constexpr unsigned int kDescriptorHeapTypes =
+            D3D12_DESCRIPTOR_HEAP_TYPE::D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES;
 
-            struct AllocationInfo {
-                uint32_t size = 0;
-                uint32_t remaining = 0;
-            };
+        struct AllocationInfo {
+            uint32_t size = 0;
+            uint32_t remaining = 0;
+        };
 
-            using DescriptorHeapInfo = std::pair<ComPtr<ID3D12DescriptorHeap>, AllocationInfo>;
+        using DescriptorHeapInfo = std::pair<ComPtr<ID3D12DescriptorHeap>, AllocationInfo>;
 
-            DescriptorHeapHandle Allocate(D3D12_DESCRIPTOR_HEAP_TYPE type, uint32_t count, uint32_t allocationSize, DescriptorHeapInfo* heapInfo, D3D12_DESCRIPTOR_HEAP_FLAGS flags);
-            void Release(DescriptorHeapHandle handle);
+        DescriptorHeapHandle Allocate(D3D12_DESCRIPTOR_HEAP_TYPE type,
+                                      uint32_t count,
+                                      uint32_t allocationSize,
+                                      DescriptorHeapInfo* heapInfo,
+                                      D3D12_DESCRIPTOR_HEAP_FLAGS flags);
+        void Release(DescriptorHeapHandle handle);
 
-            Device* mDevice;
+        Device* mDevice;
 
-            std::array<uint32_t, kDescriptorHeapTypes> mSizeIncrements;
-            std::array<DescriptorHeapInfo, kDescriptorHeapTypes> mCpuDescriptorHeapInfos;
-            std::array<DescriptorHeapInfo, kDescriptorHeapTypes> mGpuDescriptorHeapInfos;
-            SerialQueue<DescriptorHeapHandle> mReleasedHandles;
+        std::array<uint32_t, kDescriptorHeapTypes> mSizeIncrements;
+        std::array<DescriptorHeapInfo, kDescriptorHeapTypes> mCpuDescriptorHeapInfos;
+        std::array<DescriptorHeapInfo, kDescriptorHeapTypes> mGpuDescriptorHeapInfos;
+        SerialQueue<DescriptorHeapHandle> mReleasedHandles;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_DESCRIPTORHEAPALLOCATOR_H_
+#endif  // BACKEND_D3D12_DESCRIPTORHEAPALLOCATOR_H_
diff --git a/src/backend/d3d12/FramebufferD3D12.cpp b/src/backend/d3d12/FramebufferD3D12.cpp
index e45d6e5..9b15d0d 100644
--- a/src/backend/d3d12/FramebufferD3D12.cpp
+++ b/src/backend/d3d12/FramebufferD3D12.cpp
@@ -14,12 +14,11 @@
 
 #include "backend/d3d12/FramebufferD3D12.h"
 
-#include "common/BitSetIterator.h"
 #include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/TextureD3D12.h"
+#include "common/BitSetIterator.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     Framebuffer::Framebuffer(Device* device, FramebufferBuilder* builder)
         : FramebufferBase(builder), mDevice(device) {
@@ -39,32 +38,36 @@
 
         if (rtvCount) {
             mRtvHeap = device->GetDescriptorHeapAllocator()->AllocateCPUHeap(
-                    D3D12_DESCRIPTOR_HEAP_TYPE_RTV, rtvCount);
+                D3D12_DESCRIPTOR_HEAP_TYPE_RTV, rtvCount);
         }
         if (dsvCount) {
             mDsvHeap = device->GetDescriptorHeapAllocator()->AllocateCPUHeap(
-                    D3D12_DESCRIPTOR_HEAP_TYPE_DSV, dsvCount);
+                D3D12_DESCRIPTOR_HEAP_TYPE_DSV, dsvCount);
         }
 
         for (uint32_t attachment = 0; attachment < renderPass->GetAttachmentCount(); ++attachment) {
             uint32_t heapIndex = mAttachmentHeapIndices[attachment];
             auto* textureView = GetTextureView(attachment);
 
-            ComPtr<ID3D12Resource> texture = ToBackend(textureView->GetTexture())->GetD3D12Resource();
+            ComPtr<ID3D12Resource> texture =
+                ToBackend(textureView->GetTexture())->GetD3D12Resource();
             auto format = textureView->GetTexture()->GetFormat();
             if (TextureFormatHasDepth(format) || TextureFormatHasStencil(format)) {
                 D3D12_CPU_DESCRIPTOR_HANDLE dsvHandle = mDsvHeap.GetCPUHandle(heapIndex);
                 D3D12_DEPTH_STENCIL_VIEW_DESC dsvDesc = ToBackend(textureView)->GetDSVDescriptor();
-                device->GetD3D12Device()->CreateDepthStencilView(texture.Get(), &dsvDesc, dsvHandle);
+                device->GetD3D12Device()->CreateDepthStencilView(texture.Get(), &dsvDesc,
+                                                                 dsvHandle);
             } else {
                 D3D12_CPU_DESCRIPTOR_HANDLE rtvHandle = mRtvHeap.GetCPUHandle(heapIndex);
                 D3D12_RENDER_TARGET_VIEW_DESC rtvDesc = ToBackend(textureView)->GetRTVDescriptor();
-                device->GetD3D12Device()->CreateRenderTargetView(texture.Get(), &rtvDesc, rtvHandle);
+                device->GetD3D12Device()->CreateRenderTargetView(texture.Get(), &rtvDesc,
+                                                                 rtvHandle);
             }
         }
     }
 
-    Framebuffer::OMSetRenderTargetArgs Framebuffer::GetSubpassOMSetRenderTargetArgs(uint32_t subpassIndex) {
+    Framebuffer::OMSetRenderTargetArgs Framebuffer::GetSubpassOMSetRenderTargetArgs(
+        uint32_t subpassIndex) {
         const auto& subpassInfo = GetRenderPass()->GetSubpassInfo(subpassIndex);
         OMSetRenderTargetArgs args = {};
 
@@ -89,5 +92,4 @@
         return mDsvHeap.GetCPUHandle(mAttachmentHeapIndices[attachmentSlot]);
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/FramebufferD3D12.h b/src/backend/d3d12/FramebufferD3D12.h
index 5855654..4393b4c 100644
--- a/src/backend/d3d12/FramebufferD3D12.h
+++ b/src/backend/d3d12/FramebufferD3D12.h
@@ -17,41 +17,39 @@
 
 #include "backend/Framebuffer.h"
 
-#include "common/Constants.h"
-#include "backend/d3d12/d3d12_platform.h"
 #include "backend/d3d12/DescriptorHeapAllocator.h"
+#include "backend/d3d12/d3d12_platform.h"
+#include "common/Constants.h"
 
 #include <array>
 #include <vector>
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class Framebuffer : public FramebufferBase {
-        public:
-            struct OMSetRenderTargetArgs {
-                unsigned int numRTVs = 0;
-                std::array<D3D12_CPU_DESCRIPTOR_HANDLE, kMaxColorAttachments> RTVs = {};
-                D3D12_CPU_DESCRIPTOR_HANDLE dsv = {};
-            };
+      public:
+        struct OMSetRenderTargetArgs {
+            unsigned int numRTVs = 0;
+            std::array<D3D12_CPU_DESCRIPTOR_HANDLE, kMaxColorAttachments> RTVs = {};
+            D3D12_CPU_DESCRIPTOR_HANDLE dsv = {};
+        };
 
-            Framebuffer(Device* device, FramebufferBuilder* builder);
-            OMSetRenderTargetArgs GetSubpassOMSetRenderTargetArgs(uint32_t subpassIndex);
-            D3D12_CPU_DESCRIPTOR_HANDLE GetRTVDescriptor(uint32_t attachmentSlot);
-            D3D12_CPU_DESCRIPTOR_HANDLE GetDSVDescriptor(uint32_t attachmentSlot);
+        Framebuffer(Device* device, FramebufferBuilder* builder);
+        OMSetRenderTargetArgs GetSubpassOMSetRenderTargetArgs(uint32_t subpassIndex);
+        D3D12_CPU_DESCRIPTOR_HANDLE GetRTVDescriptor(uint32_t attachmentSlot);
+        D3D12_CPU_DESCRIPTOR_HANDLE GetDSVDescriptor(uint32_t attachmentSlot);
 
-        private:
-            Device* mDevice = nullptr;
-            DescriptorHeapHandle mRtvHeap = {};
-            DescriptorHeapHandle mDsvHeap = {};
+      private:
+        Device* mDevice = nullptr;
+        DescriptorHeapHandle mRtvHeap = {};
+        DescriptorHeapHandle mDsvHeap = {};
 
-            // Indices into either the RTV or DSV heap, depending on texture format.
-            std::vector<uint32_t> mAttachmentHeapIndices;
+        // Indices into either the RTV or DSV heap, depending on texture format.
+        std::vector<uint32_t> mAttachmentHeapIndices;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_FRAMEBUFFERD3D12_H_
+#endif  // BACKEND_D3D12_FRAMEBUFFERD3D12_H_
diff --git a/src/backend/d3d12/GeneratedCodeIncludes.h b/src/backend/d3d12/GeneratedCodeIncludes.h
index f037f99..dbd0559 100644
--- a/src/backend/d3d12/GeneratedCodeIncludes.h
+++ b/src/backend/d3d12/GeneratedCodeIncludes.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/BindGroupD3D12.h"
 #include "backend/d3d12/BindGroupLayoutD3D12.h"
 #include "backend/d3d12/BlendStateD3D12.h"
 #include "backend/d3d12/BufferD3D12.h"
 #include "backend/d3d12/CommandBufferD3D12.h"
 #include "backend/d3d12/ComputePipelineD3D12.h"
+#include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/DepthStencilStateD3D12.h"
 #include "backend/d3d12/FramebufferD3D12.h"
 #include "backend/d3d12/InputStateD3D12.h"
diff --git a/src/backend/d3d12/InputStateD3D12.cpp b/src/backend/d3d12/InputStateD3D12.cpp
index 592f64c..4b005fd 100644
--- a/src/backend/d3d12/InputStateD3D12.cpp
+++ b/src/backend/d3d12/InputStateD3D12.cpp
@@ -16,8 +16,7 @@
 
 #include "common/BitSetIterator.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     static DXGI_FORMAT VertexFormatType(nxt::VertexFormat format) {
         switch (format) {
@@ -47,7 +46,6 @@
 
     InputState::InputState(Device* device, InputStateBuilder* builder)
         : InputStateBase(builder), mDevice(device) {
-
         const auto& attributesSetMask = GetAttributesSetMask();
 
         unsigned int count = 0;
@@ -60,7 +58,8 @@
 
             const AttributeInfo& attribute = GetAttribute(i);
 
-            // If the HLSL semantic is TEXCOORDN the SemanticName should be "TEXCOORD" and the SemanticIndex N
+            // If the HLSL semantic is TEXCOORDN the SemanticName should be "TEXCOORD" and the
+            // SemanticIndex N
             inputElementDescriptor.SemanticName = "TEXCOORD";
             inputElementDescriptor.SemanticIndex = static_cast<uint32_t>(i);
             inputElementDescriptor.Format = VertexFormatType(attribute.format);
@@ -70,7 +69,8 @@
 
             inputElementDescriptor.AlignedByteOffset = attribute.offset;
             inputElementDescriptor.InputSlotClass = InputStepModeFunction(input.stepMode);
-            if (inputElementDescriptor.InputSlotClass == D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA) {
+            if (inputElementDescriptor.InputSlotClass ==
+                D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA) {
                 inputElementDescriptor.InstanceDataStepRate = 0;
             } else {
                 inputElementDescriptor.InstanceDataStepRate = 1;
@@ -79,12 +79,10 @@
 
         mInputLayoutDescriptor.pInputElementDescs = mInputElementDescriptors;
         mInputLayoutDescriptor.NumElements = count;
-
     }
 
     const D3D12_INPUT_LAYOUT_DESC& InputState::GetD3D12InputLayoutDescriptor() const {
         return mInputLayoutDescriptor;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/InputStateD3D12.h b/src/backend/d3d12/InputStateD3D12.h
index 9f1a1d3..fcd86c8 100644
--- a/src/backend/d3d12/InputStateD3D12.h
+++ b/src/backend/d3d12/InputStateD3D12.h
@@ -19,24 +19,22 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class InputState : public InputStateBase {
-        public:
-            InputState(Device* device, InputStateBuilder* builder);
+      public:
+        InputState(Device* device, InputStateBuilder* builder);
 
-            const D3D12_INPUT_LAYOUT_DESC& GetD3D12InputLayoutDescriptor() const;
+        const D3D12_INPUT_LAYOUT_DESC& GetD3D12InputLayoutDescriptor() const;
 
-        private:
-            Device* mDevice;
-            D3D12_INPUT_LAYOUT_DESC mInputLayoutDescriptor;
-            D3D12_INPUT_ELEMENT_DESC mInputElementDescriptors[kMaxVertexAttributes];
+      private:
+        Device* mDevice;
+        D3D12_INPUT_LAYOUT_DESC mInputLayoutDescriptor;
+        D3D12_INPUT_ELEMENT_DESC mInputElementDescriptors[kMaxVertexAttributes];
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_INPUTSTATED3D12_H_
+#endif  // BACKEND_D3D12_INPUTSTATED3D12_H_
diff --git a/src/backend/d3d12/PipelineLayoutD3D12.cpp b/src/backend/d3d12/PipelineLayoutD3D12.cpp
index 090f462..6262ead 100644
--- a/src/backend/d3d12/PipelineLayoutD3D12.cpp
+++ b/src/backend/d3d12/PipelineLayoutD3D12.cpp
@@ -14,18 +14,16 @@
 
 #include "backend/d3d12/PipelineLayoutD3D12.h"
 
-#include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/BindGroupLayoutD3D12.h"
+#include "backend/d3d12/D3D12Backend.h"
 #include "common/Assert.h"
 
 using Microsoft::WRL::ComPtr;
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     PipelineLayout::PipelineLayout(Device* device, PipelineLayoutBuilder* builder)
         : PipelineLayoutBase(builder), mDevice(device) {
-
         D3D12_ROOT_PARAMETER rootParameters[kMaxBindGroups * 2];
 
         // A root parameter is one of these types
@@ -34,7 +32,8 @@
             D3D12_ROOT_CONSTANTS Constants;
             D3D12_ROOT_DESCRIPTOR Descriptor;
         } rootParameterValues[kMaxBindGroups * 2];
-        // samplers must be in a separate descriptor table so we need at most twice as many tables as bind groups
+        // samplers must be in a separate descriptor table so we need at most twice as many tables
+        // as bind groups
 
         // Ranges are D3D12_DESCRIPTOR_RANGE_TYPE_(SRV|UAV|CBV|SAMPLER)
         // They are grouped together so each bind group has at most 4 ranges
@@ -46,9 +45,11 @@
         for (uint32_t group = 0; group < kMaxBindGroups; ++group) {
             const BindGroupLayout* bindGroupLayout = ToBackend(GetBindGroupLayout(group));
 
-            // Set the root descriptor table parameter and copy ranges. Ranges are offset by the bind group index
-            // Returns whether or not the parameter was set. A root parameter is not set if the number of ranges is 0
-            auto SetRootDescriptorTable = [&](uint32_t rangeCount, const D3D12_DESCRIPTOR_RANGE* descriptorRanges) -> bool {
+            // Set the root descriptor table parameter and copy ranges. Ranges are offset by the
+            // bind group index Returns whether or not the parameter was set. A root parameter is
+            // not set if the number of ranges is 0
+            auto SetRootDescriptorTable =
+                [&](uint32_t rangeCount, const D3D12_DESCRIPTOR_RANGE* descriptorRanges) -> bool {
                 if (rangeCount == 0) {
                     return false;
                 }
@@ -69,11 +70,13 @@
                 return true;
             };
 
-            if (SetRootDescriptorTable(bindGroupLayout->GetCbvUavSrvDescriptorTableSize(), bindGroupLayout->GetCbvUavSrvDescriptorRanges())) {
+            if (SetRootDescriptorTable(bindGroupLayout->GetCbvUavSrvDescriptorTableSize(),
+                                       bindGroupLayout->GetCbvUavSrvDescriptorRanges())) {
                 mCbvUavSrvRootParameterInfo[group] = parameterIndex++;
             }
 
-            if (SetRootDescriptorTable(bindGroupLayout->GetSamplerDescriptorTableSize(), bindGroupLayout->GetSamplerDescriptorRanges())) {
+            if (SetRootDescriptorTable(bindGroupLayout->GetSamplerDescriptorTableSize(),
+                                       bindGroupLayout->GetSamplerDescriptorRanges())) {
                 mSamplerRootParameterInfo[group] = parameterIndex++;
             }
         }
@@ -83,15 +86,18 @@
         rootSignatureDescriptor.pParameters = rootParameters;
         rootSignatureDescriptor.NumStaticSamplers = 0;
         rootSignatureDescriptor.pStaticSamplers = nullptr;
-        rootSignatureDescriptor.Flags = D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT;
+        rootSignatureDescriptor.Flags =
+            D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT;
 
         ComPtr<ID3DBlob> signature;
         ComPtr<ID3DBlob> error;
-        ASSERT_SUCCESS(D3D12SerializeRootSignature(&rootSignatureDescriptor, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error));
-        ASSERT_SUCCESS(device->GetD3D12Device()->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(), IID_PPV_ARGS(&mRootSignature)));
+        ASSERT_SUCCESS(D3D12SerializeRootSignature(
+            &rootSignatureDescriptor, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error));
+        ASSERT_SUCCESS(device->GetD3D12Device()->CreateRootSignature(
+            0, signature->GetBufferPointer(), signature->GetBufferSize(),
+            IID_PPV_ARGS(&mRootSignature)));
     }
 
-
     uint32_t PipelineLayout::GetCbvUavSrvRootParameterIndex(uint32_t group) const {
         ASSERT(group < kMaxBindGroups);
         return mCbvUavSrvRootParameterInfo[group];
@@ -105,5 +111,4 @@
     ComPtr<ID3D12RootSignature> PipelineLayout::GetRootSignature() {
         return mRootSignature;
     }
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/PipelineLayoutD3D12.h b/src/backend/d3d12/PipelineLayoutD3D12.h
index ff80944..a7af1f7 100644
--- a/src/backend/d3d12/PipelineLayoutD3D12.h
+++ b/src/backend/d3d12/PipelineLayoutD3D12.h
@@ -19,30 +19,28 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class PipelineLayout : public PipelineLayoutBase {
-        public:
-            PipelineLayout(Device* device, PipelineLayoutBuilder* builder);
+      public:
+        PipelineLayout(Device* device, PipelineLayoutBuilder* builder);
 
-            uint32_t GetCbvUavSrvRootParameterIndex(uint32_t group) const;
-            uint32_t GetSamplerRootParameterIndex(uint32_t group) const;
+        uint32_t GetCbvUavSrvRootParameterIndex(uint32_t group) const;
+        uint32_t GetSamplerRootParameterIndex(uint32_t group) const;
 
-            ComPtr<ID3D12RootSignature> GetRootSignature();
+        ComPtr<ID3D12RootSignature> GetRootSignature();
 
-        private:
-            Device* mDevice;
+      private:
+        Device* mDevice;
 
-            std::array<uint32_t, kMaxBindGroups> mCbvUavSrvRootParameterInfo;
-            std::array<uint32_t, kMaxBindGroups> mSamplerRootParameterInfo;
+        std::array<uint32_t, kMaxBindGroups> mCbvUavSrvRootParameterInfo;
+        std::array<uint32_t, kMaxBindGroups> mSamplerRootParameterInfo;
 
-            ComPtr<ID3D12RootSignature> mRootSignature;
+        ComPtr<ID3D12RootSignature> mRootSignature;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_PIPELINELAYOUTD3D12_H_
+#endif  // BACKEND_D3D12_PIPELINELAYOUTD3D12_H_
diff --git a/src/backend/d3d12/QueueD3D12.cpp b/src/backend/d3d12/QueueD3D12.cpp
index ba3f860..861ba18 100644
--- a/src/backend/d3d12/QueueD3D12.cpp
+++ b/src/backend/d3d12/QueueD3D12.cpp
@@ -14,17 +14,15 @@
 
 #include "backend/d3d12/QueueD3D12.h"
 
-#include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/CommandBufferD3D12.h"
+#include "backend/d3d12/D3D12Backend.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
-    Queue::Queue(Device* device, QueueBuilder* builder)
-        : QueueBase(builder), mDevice(device) {
+    Queue::Queue(Device* device, QueueBuilder* builder) : QueueBase(builder), mDevice(device) {
     }
 
-    void Queue::Submit(uint32_t numCommands, CommandBuffer* const * commands) {
+    void Queue::Submit(uint32_t numCommands, CommandBuffer* const* commands) {
         mDevice->Tick();
 
         mDevice->OpenCommandList(&mCommandList);
@@ -33,10 +31,9 @@
         }
         ASSERT_SUCCESS(mCommandList->Close());
 
-        mDevice->ExecuteCommandLists({ mCommandList.Get() });
+        mDevice->ExecuteCommandLists({mCommandList.Get()});
 
         mDevice->NextSerial();
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/QueueD3D12.h b/src/backend/d3d12/QueueD3D12.h
index 668b3b7..c0adb2a 100644
--- a/src/backend/d3d12/QueueD3D12.h
+++ b/src/backend/d3d12/QueueD3D12.h
@@ -19,26 +19,24 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
     class CommandBuffer;
 
     class Queue : public QueueBase {
-        public:
-            Queue(Device* device, QueueBuilder* builder);
+      public:
+        Queue(Device* device, QueueBuilder* builder);
 
-            // NXT API
-            void Submit(uint32_t numCommands, CommandBuffer* const * commands);
+        // NXT API
+        void Submit(uint32_t numCommands, CommandBuffer* const* commands);
 
-        private:
-            Device* mDevice;
+      private:
+        Device* mDevice;
 
-            ComPtr<ID3D12GraphicsCommandList> mCommandList;
+        ComPtr<ID3D12GraphicsCommandList> mCommandList;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_QUEUED3D12_H_
+#endif  // BACKEND_D3D12_QUEUED3D12_H_
diff --git a/src/backend/d3d12/RenderPipelineD3D12.cpp b/src/backend/d3d12/RenderPipelineD3D12.cpp
index d400eb5..3e23dfd 100644
--- a/src/backend/d3d12/RenderPipelineD3D12.cpp
+++ b/src/backend/d3d12/RenderPipelineD3D12.cpp
@@ -18,15 +18,14 @@
 #include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/DepthStencilStateD3D12.h"
 #include "backend/d3d12/InputStateD3D12.h"
+#include "backend/d3d12/PipelineLayoutD3D12.h"
 #include "backend/d3d12/ShaderModuleD3D12.h"
 #include "backend/d3d12/TextureD3D12.h"
-#include "backend/d3d12/PipelineLayoutD3D12.h"
 #include "common/Assert.h"
 
 #include <d3dcompiler.h>
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     namespace {
         D3D12_PRIMITIVE_TOPOLOGY D3D12PrimitiveTopology(nxt::PrimitiveTopology primitiveTopology) {
@@ -46,7 +45,8 @@
             }
         }
 
-        D3D12_PRIMITIVE_TOPOLOGY_TYPE D3D12PrimitiveTopologyType(nxt::PrimitiveTopology primitiveTopology) {
+        D3D12_PRIMITIVE_TOPOLOGY_TYPE D3D12PrimitiveTopologyType(
+            nxt::PrimitiveTopology primitiveTopology) {
             switch (primitiveTopology) {
                 case nxt::PrimitiveTopology::PointList:
                     return D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT;
@@ -60,10 +60,11 @@
                     UNREACHABLE();
             }
         }
-    }
+    }  // namespace
 
     RenderPipeline::RenderPipeline(RenderPipelineBuilder* builder)
-        : RenderPipelineBase(builder), mD3d12PrimitiveTopology(D3D12PrimitiveTopology(GetPrimitiveTopology())) {
+        : RenderPipelineBase(builder),
+          mD3d12PrimitiveTopology(D3D12PrimitiveTopology(GetPrimitiveTopology())) {
         uint32_t compileFlags = 0;
 #if defined(_DEBUG)
         // Enable better shader debugging with the graphics debugging tools.
@@ -86,32 +87,22 @@
 
             D3D12_SHADER_BYTECODE* shader = nullptr;
             switch (stage) {
-            case nxt::ShaderStage::Vertex:
-                shader = &descriptor.VS;
-                compileTarget = "vs_5_1";
-                break;
-            case nxt::ShaderStage::Fragment:
-                shader = &descriptor.PS;
-                compileTarget = "ps_5_1";
-                break;
-            case nxt::ShaderStage::Compute:
-                UNREACHABLE();
-                break;
+                case nxt::ShaderStage::Vertex:
+                    shader = &descriptor.VS;
+                    compileTarget = "vs_5_1";
+                    break;
+                case nxt::ShaderStage::Fragment:
+                    shader = &descriptor.PS;
+                    compileTarget = "ps_5_1";
+                    break;
+                case nxt::ShaderStage::Compute:
+                    UNREACHABLE();
+                    break;
             }
 
-            if(FAILED(D3DCompile(
-                hlslSource.c_str(),
-                hlslSource.length(),
-                nullptr,
-                nullptr,
-                nullptr,
-                entryPoint.c_str(),
-                compileTarget,
-                compileFlags,
-                0,
-                &compiledShader[stage],
-                &errors
-            ))) {
+            if (FAILED(D3DCompile(hlslSource.c_str(), hlslSource.length(), nullptr, nullptr,
+                                  nullptr, entryPoint.c_str(), compileTarget, compileFlags, 0,
+                                  &compiledShader[stage], &errors))) {
                 printf("%s\n", reinterpret_cast<char*>(errors->GetBufferPointer()));
                 ASSERT(false);
             }
@@ -148,7 +139,8 @@
         auto& subpassInfo = renderPass->GetSubpassInfo(GetSubPass());
 
         if (subpassInfo.depthStencilAttachmentSet) {
-            const auto& attachmentInfo = renderPass->GetAttachmentInfo(subpassInfo.depthStencilAttachment);
+            const auto& attachmentInfo =
+                renderPass->GetAttachmentInfo(subpassInfo.depthStencilAttachment);
             descriptor.DSVFormat = D3D12TextureFormat(attachmentInfo.format);
         }
 
@@ -158,7 +150,8 @@
             const auto& attachmentInfo = renderPass->GetAttachmentInfo(attachment);
 
             descriptor.RTVFormats[attachmentSlot] = D3D12TextureFormat(attachmentInfo.format);
-            descriptor.BlendState.RenderTarget[attachmentSlot] = ToBackend(GetBlendState(attachmentSlot))->GetD3D12BlendDesc();
+            descriptor.BlendState.RenderTarget[attachmentSlot] =
+                ToBackend(GetBlendState(attachmentSlot))->GetD3D12BlendDesc();
             attachmentCount = attachmentSlot + 1;
         }
         descriptor.NumRenderTargets = attachmentCount;
@@ -174,7 +167,8 @@
         descriptor.SampleDesc.Count = 1;
 
         Device* device = ToBackend(builder->GetDevice());
-        ASSERT_SUCCESS(device->GetD3D12Device()->CreateGraphicsPipelineState(&descriptor, IID_PPV_ARGS(&mPipelineState)));
+        ASSERT_SUCCESS(device->GetD3D12Device()->CreateGraphicsPipelineState(
+            &descriptor, IID_PPV_ARGS(&mPipelineState)));
     }
 
     D3D12_PRIMITIVE_TOPOLOGY RenderPipeline::GetD3D12PrimitiveTopology() const {
@@ -185,5 +179,4 @@
         return mPipelineState;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/RenderPipelineD3D12.h b/src/backend/d3d12/RenderPipelineD3D12.h
index e27ec37..ad29870 100644
--- a/src/backend/d3d12/RenderPipelineD3D12.h
+++ b/src/backend/d3d12/RenderPipelineD3D12.h
@@ -19,22 +19,20 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class RenderPipeline : public RenderPipelineBase {
-        public:
-            RenderPipeline(RenderPipelineBuilder* builder);
+      public:
+        RenderPipeline(RenderPipelineBuilder* builder);
 
-            D3D12_PRIMITIVE_TOPOLOGY GetD3D12PrimitiveTopology() const;
-            ComPtr<ID3D12PipelineState> GetPipelineState();
+        D3D12_PRIMITIVE_TOPOLOGY GetD3D12PrimitiveTopology() const;
+        ComPtr<ID3D12PipelineState> GetPipelineState();
 
-        private:
-            D3D12_PRIMITIVE_TOPOLOGY mD3d12PrimitiveTopology;
-            ComPtr<ID3D12PipelineState> mPipelineState;
+      private:
+        D3D12_PRIMITIVE_TOPOLOGY mD3d12PrimitiveTopology;
+        ComPtr<ID3D12PipelineState> mPipelineState;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_RENDERPIPELINED3D12_H_
+#endif  // BACKEND_D3D12_RENDERPIPELINED3D12_H_
diff --git a/src/backend/d3d12/ResourceAllocator.cpp b/src/backend/d3d12/ResourceAllocator.cpp
index edfde70..251e604 100644
--- a/src/backend/d3d12/ResourceAllocator.cpp
+++ b/src/backend/d3d12/ResourceAllocator.cpp
@@ -16,41 +16,31 @@
 
 #include "backend/d3d12/D3D12Backend.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     namespace {
         static constexpr D3D12_HEAP_PROPERTIES kDefaultHeapProperties = {
-            D3D12_HEAP_TYPE_DEFAULT,
-            D3D12_CPU_PAGE_PROPERTY_UNKNOWN,
-            D3D12_MEMORY_POOL_UNKNOWN,
-            0,
-            0
-        };
+            D3D12_HEAP_TYPE_DEFAULT, D3D12_CPU_PAGE_PROPERTY_UNKNOWN, D3D12_MEMORY_POOL_UNKNOWN, 0,
+            0};
 
         static constexpr D3D12_HEAP_PROPERTIES kUploadHeapProperties = {
-            D3D12_HEAP_TYPE_UPLOAD,
-            D3D12_CPU_PAGE_PROPERTY_UNKNOWN,
-            D3D12_MEMORY_POOL_UNKNOWN,
-            0,
-            0
-        };
+            D3D12_HEAP_TYPE_UPLOAD, D3D12_CPU_PAGE_PROPERTY_UNKNOWN, D3D12_MEMORY_POOL_UNKNOWN, 0,
+            0};
 
         static constexpr D3D12_HEAP_PROPERTIES kReadbackHeapProperties = {
-            D3D12_HEAP_TYPE_READBACK,
-            D3D12_CPU_PAGE_PROPERTY_UNKNOWN,
-            D3D12_MEMORY_POOL_UNKNOWN,
-            0,
-            0
-        };
-    }
+            D3D12_HEAP_TYPE_READBACK, D3D12_CPU_PAGE_PROPERTY_UNKNOWN, D3D12_MEMORY_POOL_UNKNOWN, 0,
+            0};
+    }  // namespace
 
     ResourceAllocator::ResourceAllocator(Device* device) : mDevice(device) {
     }
 
-    ComPtr<ID3D12Resource> ResourceAllocator::Allocate(D3D12_HEAP_TYPE heapType, const D3D12_RESOURCE_DESC &resourceDescriptor, D3D12_RESOURCE_STATES initialUsage) {
+    ComPtr<ID3D12Resource> ResourceAllocator::Allocate(
+        D3D12_HEAP_TYPE heapType,
+        const D3D12_RESOURCE_DESC& resourceDescriptor,
+        D3D12_RESOURCE_STATES initialUsage) {
         const D3D12_HEAP_PROPERTIES* heapProperties = nullptr;
-        switch(heapType) {
+        switch (heapType) {
             case D3D12_HEAP_TYPE_DEFAULT:
                 heapProperties = &kDefaultHeapProperties;
                 break;
@@ -68,19 +58,15 @@
 
         // TODO(enga@google.com): Use CreatePlacedResource
         ASSERT_SUCCESS(mDevice->GetD3D12Device()->CreateCommittedResource(
-            heapProperties,
-            D3D12_HEAP_FLAG_NONE,
-            &resourceDescriptor,
-            initialUsage,
-            nullptr,
-            IID_PPV_ARGS(&resource)
-        ));
+            heapProperties, D3D12_HEAP_FLAG_NONE, &resourceDescriptor, initialUsage, nullptr,
+            IID_PPV_ARGS(&resource)));
 
         return resource;
     }
 
     void ResourceAllocator::Release(ComPtr<ID3D12Resource> resource) {
-        // Resources may still be in use on the GPU. Enqueue them so that we hold onto them until GPU execution has completed
+        // Resources may still be in use on the GPU. Enqueue them so that we hold onto them until
+        // GPU execution has completed
         mReleasedResources.Enqueue(resource, mDevice->GetSerial());
     }
 
@@ -88,5 +74,4 @@
         mReleasedResources.ClearUpTo(lastCompletedSerial);
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/ResourceAllocator.h b/src/backend/d3d12/ResourceAllocator.h
index 287619f..df56119 100644
--- a/src/backend/d3d12/ResourceAllocator.h
+++ b/src/backend/d3d12/ResourceAllocator.h
@@ -19,27 +19,26 @@
 
 #include "common/SerialQueue.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class ResourceAllocator {
+      public:
+        ResourceAllocator(Device* device);
 
-        public:
-            ResourceAllocator(Device* device);
+        ComPtr<ID3D12Resource> Allocate(D3D12_HEAP_TYPE heapType,
+                                        const D3D12_RESOURCE_DESC& resourceDescriptor,
+                                        D3D12_RESOURCE_STATES initialUsage);
+        void Release(ComPtr<ID3D12Resource> resource);
+        void Tick(uint64_t lastCompletedSerial);
 
-            ComPtr<ID3D12Resource> Allocate(D3D12_HEAP_TYPE heapType, const D3D12_RESOURCE_DESC &resourceDescriptor, D3D12_RESOURCE_STATES initialUsage);
-            void Release(ComPtr<ID3D12Resource> resource);
-            void Tick(uint64_t lastCompletedSerial);
+      private:
+        Device* mDevice;
 
-        private:
-            Device* mDevice;
-
-            SerialQueue<ComPtr<ID3D12Resource>> mReleasedResources;
+        SerialQueue<ComPtr<ID3D12Resource>> mReleasedResources;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_RESOURCEALLOCATIONMANAGER_H_
+#endif  // BACKEND_D3D12_RESOURCEALLOCATIONMANAGER_H_
diff --git a/src/backend/d3d12/ResourceUploader.cpp b/src/backend/d3d12/ResourceUploader.cpp
index 19be7c2..bd1ac3f 100644
--- a/src/backend/d3d12/ResourceUploader.cpp
+++ b/src/backend/d3d12/ResourceUploader.cpp
@@ -17,23 +17,29 @@
 #include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/ResourceAllocator.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     ResourceUploader::ResourceUploader(Device* device) : mDevice(device) {
     }
 
-    void ResourceUploader::BufferSubData(ComPtr<ID3D12Resource> resource, uint32_t start, uint32_t count, const void* data) {
-        // TODO(enga@google.com): Use a handle to a subset of a large ring buffer. On Release, decrease reference count on the ring buffer and free when 0.
-        // Alternatively, the SerialQueue could be used to track which last point of the ringbuffer is in use, and start reusing chunks of it that aren't in flight.
+    void ResourceUploader::BufferSubData(ComPtr<ID3D12Resource> resource,
+                                         uint32_t start,
+                                         uint32_t count,
+                                         const void* data) {
+        // TODO(enga@google.com): Use a handle to a subset of a large ring buffer. On Release,
+        // decrease reference count on the ring buffer and free when 0. Alternatively, the
+        // SerialQueue could be used to track which last point of the ringbuffer is in use, and
+        // start reusing chunks of it that aren't in flight.
         UploadHandle uploadHandle = GetUploadBuffer(count);
         memcpy(uploadHandle.mappedBuffer, data, count);
-        mDevice->GetPendingCommandList()->CopyBufferRegion(resource.Get(), start, uploadHandle.resource.Get(), 0, count);
+        mDevice->GetPendingCommandList()->CopyBufferRegion(resource.Get(), start,
+                                                           uploadHandle.resource.Get(), 0, count);
         Release(uploadHandle);
     }
 
     ResourceUploader::UploadHandle ResourceUploader::GetUploadBuffer(uint32_t requiredSize) {
-        // TODO(enga@google.com): This will find or create a mapped buffer of sufficient size and return a handle to a mapped range
+        // TODO(enga@google.com): This will find or create a mapped buffer of sufficient size and
+        // return a handle to a mapped range
         D3D12_RESOURCE_DESC resourceDescriptor;
         resourceDescriptor.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
         resourceDescriptor.Alignment = 0;
@@ -48,12 +54,14 @@
         resourceDescriptor.Flags = D3D12_RESOURCE_FLAG_NONE;
 
         UploadHandle uploadHandle;
-        uploadHandle.resource = mDevice->GetResourceAllocator()->Allocate(D3D12_HEAP_TYPE_UPLOAD, resourceDescriptor, D3D12_RESOURCE_STATE_GENERIC_READ);
+        uploadHandle.resource = mDevice->GetResourceAllocator()->Allocate(
+            D3D12_HEAP_TYPE_UPLOAD, resourceDescriptor, D3D12_RESOURCE_STATE_GENERIC_READ);
         D3D12_RANGE readRange;
         readRange.Begin = 0;
         readRange.End = 0;
 
-        uploadHandle.resource->Map(0, &readRange, reinterpret_cast<void**>(&uploadHandle.mappedBuffer));
+        uploadHandle.resource->Map(0, &readRange,
+                                   reinterpret_cast<void**>(&uploadHandle.mappedBuffer));
         return uploadHandle;
     }
 
@@ -62,5 +70,4 @@
         mDevice->GetResourceAllocator()->Release(uploadHandle.resource);
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/ResourceUploader.h b/src/backend/d3d12/ResourceUploader.h
index cdcb372..e861df6 100644
--- a/src/backend/d3d12/ResourceUploader.h
+++ b/src/backend/d3d12/ResourceUploader.h
@@ -19,29 +19,30 @@
 
 #include "backend/Forward.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class ResourceUploader {
-        public:
-            ResourceUploader(Device* device);
+      public:
+        ResourceUploader(Device* device);
 
-            void BufferSubData(ComPtr<ID3D12Resource> resource, uint32_t start, uint32_t count, const void* data);
+        void BufferSubData(ComPtr<ID3D12Resource> resource,
+                           uint32_t start,
+                           uint32_t count,
+                           const void* data);
 
-        private:
-            struct UploadHandle {
-                ComPtr<ID3D12Resource> resource;
-                uint8_t* mappedBuffer;
-            };
+      private:
+        struct UploadHandle {
+            ComPtr<ID3D12Resource> resource;
+            uint8_t* mappedBuffer;
+        };
 
-            UploadHandle GetUploadBuffer(uint32_t requiredSize);
-            void Release(UploadHandle uploadHandle);
+        UploadHandle GetUploadBuffer(uint32_t requiredSize);
+        void Release(UploadHandle uploadHandle);
 
-            Device* mDevice;
+        Device* mDevice;
     };
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_RESOURCEUPLOADER_H_
+#endif  // BACKEND_D3D12_RESOURCEUPLOADER_H_
diff --git a/src/backend/d3d12/SamplerD3D12.cpp b/src/backend/d3d12/SamplerD3D12.cpp
index 18f8e85..5ba83b5 100644
--- a/src/backend/d3d12/SamplerD3D12.cpp
+++ b/src/backend/d3d12/SamplerD3D12.cpp
@@ -16,14 +16,12 @@
 
 #include "backend/d3d12/D3D12Backend.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
-    Sampler::Sampler(SamplerBuilder* builder)
-        : SamplerBase(builder) {
-
+    Sampler::Sampler(SamplerBuilder* builder) : SamplerBase(builder) {
         // https://msdn.microsoft.com/en-us/library/windows/desktop/dn770367(v=vs.85).aspx
-        // D3D12_FILTER_MIN_MAG_MIP_POINT                       = 0       0     0 0 0   // hex value, decimal value, min linear, mag linear, mip linear
+        // hex value, decimal value, min linear, mag linear, mip linear
+        // D3D12_FILTER_MIN_MAG_MIP_POINT                       = 0       0     0 0 0
         // D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR                = 0x1     1     0 0 1
         // D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT          = 0x4     4     0 1 0
         // D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR                = 0x5     5     0 1 1
@@ -69,15 +67,14 @@
         mSamplerDesc.MipLODBias = 0.f;
         mSamplerDesc.MaxAnisotropy = 1;
         mSamplerDesc.ComparisonFunc = D3D12_COMPARISON_FUNC_ALWAYS;
-        mSamplerDesc.BorderColor[0] = mSamplerDesc.BorderColor[1] = mSamplerDesc.BorderColor[2] = mSamplerDesc.BorderColor[3] = 0;
+        mSamplerDesc.BorderColor[0] = mSamplerDesc.BorderColor[1] = mSamplerDesc.BorderColor[2] =
+            mSamplerDesc.BorderColor[3] = 0;
         mSamplerDesc.MinLOD = 0;
         mSamplerDesc.MaxLOD = D3D12_FLOAT32_MAX;
-
     }
 
     const D3D12_SAMPLER_DESC& Sampler::GetSamplerDescriptor() const {
         return mSamplerDesc;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/SamplerD3D12.h b/src/backend/d3d12/SamplerD3D12.h
index 153a531..9d3600d 100644
--- a/src/backend/d3d12/SamplerD3D12.h
+++ b/src/backend/d3d12/SamplerD3D12.h
@@ -19,20 +19,18 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Sampler : public SamplerBase {
-        public:
-            Sampler(SamplerBuilder* builder);
+      public:
+        Sampler(SamplerBuilder* builder);
 
-            const D3D12_SAMPLER_DESC& GetSamplerDescriptor() const;
+        const D3D12_SAMPLER_DESC& GetSamplerDescriptor() const;
 
-        private:
-            D3D12_SAMPLER_DESC mSamplerDesc;
+      private:
+        D3D12_SAMPLER_DESC mSamplerDesc;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_SAMPLERD3D12_H_
+#endif  // BACKEND_D3D12_SAMPLERD3D12_H_
diff --git a/src/backend/d3d12/ShaderModuleD3D12.cpp b/src/backend/d3d12/ShaderModuleD3D12.cpp
index 3056875..ea53b12 100644
--- a/src/backend/d3d12/ShaderModuleD3D12.cpp
+++ b/src/backend/d3d12/ShaderModuleD3D12.cpp
@@ -16,8 +16,7 @@
 
 #include <spirv-cross/spirv_hlsl.hpp>
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     ShaderModule::ShaderModule(Device* device, ShaderModuleBuilder* builder)
         : ShaderModuleBase(builder), mDevice(device) {
@@ -34,15 +33,18 @@
 
         ExtractSpirvInfo(compiler);
 
-        // rename bindings so that each register type b/u/t/s starts at 0 and then offset by kMaxBindingsPerGroup * bindGroupIndex
+        // rename bindings so that each register type b/u/t/s starts at 0 and then offset by
+        // kMaxBindingsPerGroup * bindGroupIndex
         auto RenumberBindings = [&](std::vector<spirv_cross::Resource> resources) {
             std::array<uint32_t, kMaxBindGroups> baseRegisters = {};
 
             for (const auto& resource : resources) {
-                auto bindGroupIndex = compiler.get_decoration(resource.id, spv::DecorationDescriptorSet);
+                auto bindGroupIndex =
+                    compiler.get_decoration(resource.id, spv::DecorationDescriptorSet);
                 auto& baseRegister = baseRegisters[bindGroupIndex];
                 auto bindGroupOffset = bindGroupIndex * kMaxBindingsPerGroup;
-                compiler.set_decoration(resource.id, spv::DecorationBinding, bindGroupOffset + baseRegister++);
+                compiler.set_decoration(resource.id, spv::DecorationBinding,
+                                        bindGroupOffset + baseRegister++);
             }
         };
 
@@ -59,5 +61,4 @@
         return mHlslSource;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/ShaderModuleD3D12.h b/src/backend/d3d12/ShaderModuleD3D12.h
index cba2fc4..0cedd6d 100644
--- a/src/backend/d3d12/ShaderModuleD3D12.h
+++ b/src/backend/d3d12/ShaderModuleD3D12.h
@@ -17,24 +17,22 @@
 
 #include "backend/ShaderModule.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     class ShaderModule : public ShaderModuleBase {
-        public:
-            ShaderModule(Device* device, ShaderModuleBuilder* builder);
+      public:
+        ShaderModule(Device* device, ShaderModuleBuilder* builder);
 
-            const std::string& GetHLSLSource() const;
+        const std::string& GetHLSLSource() const;
 
-        private:
-            Device* mDevice;
+      private:
+        Device* mDevice;
 
-            std::string mHlslSource;
+        std::string mHlslSource;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_SHADERMODULED3D12_H_
+#endif  // BACKEND_D3D12_SHADERMODULED3D12_H_
diff --git a/src/backend/d3d12/SwapChainD3D12.cpp b/src/backend/d3d12/SwapChainD3D12.cpp
index 4d3d874..70e7187 100644
--- a/src/backend/d3d12/SwapChainD3D12.cpp
+++ b/src/backend/d3d12/SwapChainD3D12.cpp
@@ -19,11 +19,9 @@
 
 #include <nxt/nxt_wsi.h>
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
-    SwapChain::SwapChain(SwapChainBuilder* builder)
-        : SwapChainBase(builder) {
+    SwapChain::SwapChain(SwapChainBuilder* builder) : SwapChainBase(builder) {
         const auto& im = GetImplementation();
         nxtWSIContextD3D12 wsiContext = {};
         wsiContext.device = reinterpret_cast<nxtDevice>(GetDevice());
@@ -46,6 +44,4 @@
         return new Texture(builder, nativeTexture);
     }
 
-}
-}
-
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/SwapChainD3D12.h b/src/backend/d3d12/SwapChainD3D12.h
index 139f9e8..fa39bf8 100644
--- a/src/backend/d3d12/SwapChainD3D12.h
+++ b/src/backend/d3d12/SwapChainD3D12.h
@@ -17,19 +17,17 @@
 
 #include "backend/SwapChain.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class SwapChain : public SwapChainBase {
-        public:
-            SwapChain(SwapChainBuilder* builder);
-            ~SwapChain();
+      public:
+        SwapChain(SwapChainBuilder* builder);
+        ~SwapChain();
 
-        protected:
-            TextureBase* GetNextTextureImpl(TextureBuilder* builder) override;
+      protected:
+        TextureBase* GetNextTextureImpl(TextureBuilder* builder) override;
     };
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_SWAPCHAIN_D3D12_H_
+#endif  // BACKEND_D3D12_SWAPCHAIN_D3D12_H_
diff --git a/src/backend/d3d12/TextureCopySplitter.cpp b/src/backend/d3d12/TextureCopySplitter.cpp
index 5bc34db..040f44d 100644
--- a/src/backend/d3d12/TextureCopySplitter.cpp
+++ b/src/backend/d3d12/TextureCopySplitter.cpp
@@ -17,11 +17,16 @@
 #include "backend/d3d12/d3d12_platform.h"
 #include "common/Assert.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     namespace {
-        void ComputeTexelOffsets(uint32_t offset, uint32_t rowPitch, uint32_t slicePitch, uint32_t texelSize, uint32_t* texelOffsetX, uint32_t* texelOffsetY, uint32_t* texelOffsetZ) {		
+        void ComputeTexelOffsets(uint32_t offset,
+                                 uint32_t rowPitch,
+                                 uint32_t slicePitch,
+                                 uint32_t texelSize,
+                                 uint32_t* texelOffsetX,
+                                 uint32_t* texelOffsetY,
+                                 uint32_t* texelOffsetZ) {
             uint32_t byteOffsetX = offset % rowPitch;
             offset -= byteOffsetX;
             uint32_t byteOffsetY = offset % slicePitch;
@@ -31,10 +36,17 @@
             *texelOffsetY = byteOffsetY / rowPitch;
             *texelOffsetZ = byteOffsetZ / slicePitch;
         }
-    }
+    }  // namespace
 
-    TextureCopySplit ComputeTextureCopySplit(uint32_t x, uint32_t y, uint32_t z, uint32_t width, uint32_t height, uint32_t depth, uint32_t texelSize, uint32_t offset, uint32_t rowPitch) {
-
+    TextureCopySplit ComputeTextureCopySplit(uint32_t x,
+                                             uint32_t y,
+                                             uint32_t z,
+                                             uint32_t width,
+                                             uint32_t height,
+                                             uint32_t depth,
+                                             uint32_t texelSize,
+                                             uint32_t offset,
+                                             uint32_t rowPitch) {
         TextureCopySplit copy;
 
         if (z != 0 || depth > 1) {
@@ -58,27 +70,30 @@
             copy.copies[0].copySize.width = width;
             copy.copies[0].copySize.height = height;
             copy.copies[0].copySize.depth = depth;
-            
+
             copy.copies[0].bufferOffset.x = 0;
             copy.copies[0].bufferOffset.y = 0;
             copy.copies[0].bufferOffset.z = 0;
             copy.copies[0].bufferSize.width = width;
             copy.copies[0].bufferSize.height = height;
             copy.copies[0].bufferSize.depth = depth;
-            
-            // Return early. There is only one copy needed because the offset is already 512-byte aligned
+
+            // Return early. There is only one copy needed because the offset is already 512-byte
+            // aligned
             return copy;
         }
 
         ASSERT(alignedOffset < offset);
 
         uint32_t texelOffsetX, texelOffsetY, texelOffsetZ;
-        ComputeTexelOffsets(offset - alignedOffset, rowPitch, rowPitch * height, texelSize, &texelOffsetX, &texelOffsetY, &texelOffsetZ);
+        ComputeTexelOffsets(offset - alignedOffset, rowPitch, rowPitch * height, texelSize,
+                            &texelOffsetX, &texelOffsetY, &texelOffsetZ);
 
         uint32_t rowPitchInTexels = rowPitch / texelSize;
 
         if (width + texelOffsetX <= rowPitchInTexels) {
-            // The region's rows fit inside the row pitch. In this case, extend the width of the PlacedFootprint and copy the buffer with an offset location
+            // The region's rows fit inside the row pitch. In this case, extend the width of the
+            // PlacedFootprint and copy the buffer with an offset location
             //  |<--------------- row pitch --------------->|
             //
             //  |-------------------------------------------|
@@ -133,7 +148,6 @@
         //  |+++++++++                                  |
         //  |-------------------------------------------|
 
-
         //  Copy 0:
         //  |-------------------------------------------|
         //  |                                           |
@@ -173,7 +187,6 @@
         copy.copies[0].bufferSize.height = height + texelOffsetY;
         copy.copies[0].bufferSize.depth = depth + texelOffsetZ;
 
-
         copy.copies[1].textureOffset.x = x + copy.copies[0].copySize.width;
         copy.copies[1].textureOffset.y = y;
         copy.copies[1].textureOffset.z = z;
@@ -190,10 +203,7 @@
         copy.copies[1].bufferSize.height = height + texelOffsetY + 1;
         copy.copies[1].bufferSize.depth = depth + texelOffsetZ;
 
-
         return copy;
-
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/TextureCopySplitter.h b/src/backend/d3d12/TextureCopySplitter.h
index 75c20c2..66a3fe1 100644
--- a/src/backend/d3d12/TextureCopySplitter.h
+++ b/src/backend/d3d12/TextureCopySplitter.h
@@ -19,14 +19,11 @@
 
 #include <array>
 
-namespace backend {
-namespace d3d12 {
-
+namespace backend { namespace d3d12 {
 
     struct TextureCopySplit {
-
         static constexpr unsigned int kMaxTextureCopyRegions = 2;
-        
+
         struct Extent {
             uint32_t width = 0;
             uint32_t height = 0;
@@ -52,9 +49,16 @@
         std::array<CopyInfo, kMaxTextureCopyRegions> copies;
     };
 
-    TextureCopySplit ComputeTextureCopySplit(uint32_t x, uint32_t y, uint32_t z, uint32_t width, uint32_t height, uint32_t depth, uint32_t texelSize, uint32_t offset, uint32_t rowPitch);
+    TextureCopySplit ComputeTextureCopySplit(uint32_t x,
+                                             uint32_t y,
+                                             uint32_t z,
+                                             uint32_t width,
+                                             uint32_t height,
+                                             uint32_t depth,
+                                             uint32_t texelSize,
+                                             uint32_t offset,
+                                             uint32_t rowPitch);
 
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_TEXTURECOPYSPLITTER_H_
+#endif  // BACKEND_D3D12_TEXTURECOPYSPLITTER_H_
diff --git a/src/backend/d3d12/TextureD3D12.cpp b/src/backend/d3d12/TextureD3D12.cpp
index ad701de..1bcfd7b 100644
--- a/src/backend/d3d12/TextureD3D12.cpp
+++ b/src/backend/d3d12/TextureD3D12.cpp
@@ -17,11 +17,11 @@
 #include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/ResourceAllocator.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     namespace {
-        D3D12_RESOURCE_STATES D3D12TextureUsage(nxt::TextureUsageBit usage, nxt::TextureFormat format) {
+        D3D12_RESOURCE_STATES D3D12TextureUsage(nxt::TextureUsageBit usage,
+                                                nxt::TextureFormat format) {
             D3D12_RESOURCE_STATES resourceState = D3D12_RESOURCE_STATE_COMMON;
 
             if (usage & nxt::TextureUsageBit::TransferSrc) {
@@ -31,7 +31,8 @@
                 resourceState |= D3D12_RESOURCE_STATE_COPY_DEST;
             }
             if (usage & nxt::TextureUsageBit::Sampled) {
-                resourceState |= (D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
+                resourceState |= (D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE |
+                                  D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
             }
             if (usage & nxt::TextureUsageBit::Storage) {
                 resourceState |= D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
@@ -47,7 +48,8 @@
             return resourceState;
         }
 
-        D3D12_RESOURCE_FLAGS D3D12ResourceFlags(nxt::TextureUsageBit usage, nxt::TextureFormat format) {
+        D3D12_RESOURCE_FLAGS D3D12ResourceFlags(nxt::TextureUsageBit usage,
+                                                nxt::TextureFormat format) {
             D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE;
 
             if (usage & nxt::TextureUsageBit::Storage) {
@@ -62,7 +64,7 @@
             }
 
             ASSERT(!(flags & D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL) ||
-                    flags == D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL);
+                   flags == D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL);
             return flags;
         }
 
@@ -75,7 +77,7 @@
             }
         }
 
-    }
+    }  // namespace
 
     DXGI_FORMAT D3D12TextureFormat(nxt::TextureFormat format) {
         switch (format) {
@@ -94,7 +96,6 @@
 
     Texture::Texture(TextureBuilder* builder)
         : TextureBase(builder), mDevice(ToBackend(builder->GetDevice())) {
-
         D3D12_RESOURCE_DESC resourceDescriptor;
         resourceDescriptor.Dimension = D3D12TextureDimension(GetDimension());
         resourceDescriptor.Alignment = 0;
@@ -108,14 +109,17 @@
         resourceDescriptor.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
         resourceDescriptor.Flags = D3D12ResourceFlags(GetAllowedUsage(), GetFormat());
 
-        mResource = mDevice->GetResourceAllocator()->Allocate(D3D12_HEAP_TYPE_DEFAULT, resourceDescriptor, D3D12TextureUsage(GetUsage(), GetFormat()));
+        mResource =
+            mDevice->GetResourceAllocator()->Allocate(D3D12_HEAP_TYPE_DEFAULT, resourceDescriptor,
+                                                      D3D12TextureUsage(GetUsage(), GetFormat()));
         mResourcePtr = mResource.Get();
     }
 
     // With this constructor, the lifetime of the ID3D12Resource is externally managed.
     Texture::Texture(TextureBuilder* builder, ID3D12Resource* nativeTexture)
-        : TextureBase(builder), mDevice(ToBackend(builder->GetDevice())),
-        mResourcePtr(nativeTexture) {
+        : TextureBase(builder),
+          mDevice(ToBackend(builder->GetDevice())),
+          mResourcePtr(nativeTexture) {
     }
 
     Texture::~Texture() {
@@ -133,7 +137,9 @@
         return mResourcePtr;
     }
 
-    bool Texture::GetResourceTransitionBarrier(nxt::TextureUsageBit currentUsage, nxt::TextureUsageBit targetUsage, D3D12_RESOURCE_BARRIER* barrier) {
+    bool Texture::GetResourceTransitionBarrier(nxt::TextureUsageBit currentUsage,
+                                               nxt::TextureUsageBit targetUsage,
+                                               D3D12_RESOURCE_BARRIER* barrier) {
         D3D12_RESOURCE_STATES stateBefore = D3D12TextureUsage(currentUsage, GetFormat());
         D3D12_RESOURCE_STATES stateAfter = D3D12TextureUsage(targetUsage, GetFormat());
 
@@ -151,16 +157,15 @@
         return true;
     }
 
-    void Texture::TransitionUsageImpl(nxt::TextureUsageBit currentUsage, nxt::TextureUsageBit targetUsage) {
+    void Texture::TransitionUsageImpl(nxt::TextureUsageBit currentUsage,
+                                      nxt::TextureUsageBit targetUsage) {
         D3D12_RESOURCE_BARRIER barrier;
         if (GetResourceTransitionBarrier(currentUsage, targetUsage, &barrier)) {
             mDevice->GetPendingCommandList()->ResourceBarrier(1, &barrier);
         }
     }
 
-    TextureView::TextureView(TextureViewBuilder* builder)
-        : TextureViewBase(builder) {
-
+    TextureView::TextureView(TextureViewBuilder* builder) : TextureViewBase(builder) {
         mSrvDesc.Format = D3D12TextureFormat(GetTexture()->GetFormat());
         mSrvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
         switch (GetTexture()->GetDimension()) {
@@ -196,5 +201,4 @@
         return dsvDesc;
     }
 
-}
-}
+}}  // namespace backend::d3d12
diff --git a/src/backend/d3d12/TextureD3D12.h b/src/backend/d3d12/TextureD3D12.h
index d9fcfd4..af36c1a 100644
--- a/src/backend/d3d12/TextureD3D12.h
+++ b/src/backend/d3d12/TextureD3D12.h
@@ -19,43 +19,44 @@
 
 #include "backend/d3d12/d3d12_platform.h"
 
-namespace backend {
-namespace d3d12 {
+namespace backend { namespace d3d12 {
 
     class Device;
 
     DXGI_FORMAT D3D12TextureFormat(nxt::TextureFormat format);
 
     class Texture : public TextureBase {
-        public:
-            Texture(TextureBuilder* builder);
-            Texture(TextureBuilder* builder, ID3D12Resource* nativeTexture);
-            ~Texture();
+      public:
+        Texture(TextureBuilder* builder);
+        Texture(TextureBuilder* builder, ID3D12Resource* nativeTexture);
+        ~Texture();
 
-            DXGI_FORMAT GetD3D12Format() const;
-            ID3D12Resource* GetD3D12Resource();
-            bool GetResourceTransitionBarrier(nxt::TextureUsageBit currentUsage, nxt::TextureUsageBit targetUsage, D3D12_RESOURCE_BARRIER* barrier);
+        DXGI_FORMAT GetD3D12Format() const;
+        ID3D12Resource* GetD3D12Resource();
+        bool GetResourceTransitionBarrier(nxt::TextureUsageBit currentUsage,
+                                          nxt::TextureUsageBit targetUsage,
+                                          D3D12_RESOURCE_BARRIER* barrier);
 
-            void TransitionUsageImpl(nxt::TextureUsageBit currentUsage, nxt::TextureUsageBit targetUsage) override;
+        void TransitionUsageImpl(nxt::TextureUsageBit currentUsage,
+                                 nxt::TextureUsageBit targetUsage) override;
 
-        private:
-            Device* mDevice;
-            ComPtr<ID3D12Resource> mResource = {};
-            ID3D12Resource* mResourcePtr = nullptr;
+      private:
+        Device* mDevice;
+        ComPtr<ID3D12Resource> mResource = {};
+        ID3D12Resource* mResourcePtr = nullptr;
     };
 
     class TextureView : public TextureViewBase {
-        public:
-            TextureView(TextureViewBuilder* builder);
+      public:
+        TextureView(TextureViewBuilder* builder);
 
-            const D3D12_SHADER_RESOURCE_VIEW_DESC& GetSRVDescriptor() const;
-            D3D12_RENDER_TARGET_VIEW_DESC  GetRTVDescriptor();
-            D3D12_DEPTH_STENCIL_VIEW_DESC  GetDSVDescriptor();
+        const D3D12_SHADER_RESOURCE_VIEW_DESC& GetSRVDescriptor() const;
+        D3D12_RENDER_TARGET_VIEW_DESC GetRTVDescriptor();
+        D3D12_DEPTH_STENCIL_VIEW_DESC GetDSVDescriptor();
 
-        private:
-            D3D12_SHADER_RESOURCE_VIEW_DESC mSrvDesc;
+      private:
+        D3D12_SHADER_RESOURCE_VIEW_DESC mSrvDesc;
     };
-}
-}
+}}  // namespace backend::d3d12
 
-#endif // BACKEND_D3D12_TEXTURED3D12_H_
+#endif  // BACKEND_D3D12_TEXTURED3D12_H_
diff --git a/src/backend/d3d12/d3d12_platform.h b/src/backend/d3d12/d3d12_platform.h
index c086373..b37270d 100644
--- a/src/backend/d3d12/d3d12_platform.h
+++ b/src/backend/d3d12/d3d12_platform.h
@@ -15,10 +15,10 @@
 #ifndef BACKEND_D3D12_D3D12PLATFORM_H_
 #define BACKEND_D3D12_D3D12PLATFORM_H_
 
-#include <wrl.h>
 #include <d3d12.h>
 #include <dxgi1_4.h>
+#include <wrl.h>
 
 using Microsoft::WRL::ComPtr;
 
-#endif // BACKEND_D3D12_D3D12PLATFORM_H_
+#endif  // BACKEND_D3D12_D3D12PLATFORM_H_