Rename RenderPassInfo to RenderPassDescriptor
diff --git a/src/backend/CMakeLists.txt b/src/backend/CMakeLists.txt
index 5a0635d..1bb4190 100644
--- a/src/backend/CMakeLists.txt
+++ b/src/backend/CMakeLists.txt
@@ -249,8 +249,8 @@
         ${D3D12_DIR}/PipelineLayoutD3D12.h
         ${D3D12_DIR}/QueueD3D12.cpp
         ${D3D12_DIR}/QueueD3D12.h
-        ${D3D12_DIR}/RenderPassInfoD3D12.cpp
-        ${D3D12_DIR}/RenderPassInfoD3D12.h
+        ${D3D12_DIR}/RenderPassDescriptorD3D12.cpp
+        ${D3D12_DIR}/RenderPassDescriptorD3D12.h
         ${D3D12_DIR}/RenderPipelineD3D12.cpp
         ${D3D12_DIR}/RenderPipelineD3D12.h
         ${D3D12_DIR}/ResourceAllocator.cpp
@@ -318,8 +318,8 @@
         ${VULKAN_DIR}/PipelineLayoutVk.h
         ${VULKAN_DIR}/RenderPassCache.cpp
         ${VULKAN_DIR}/RenderPassCache.h
-        ${VULKAN_DIR}/RenderPassInfoVk.cpp
-        ${VULKAN_DIR}/RenderPassInfoVk.h
+        ${VULKAN_DIR}/RenderPassDescriptorVk.cpp
+        ${VULKAN_DIR}/RenderPassDescriptorVk.h
         ${VULKAN_DIR}/RenderPipelineVk.cpp
         ${VULKAN_DIR}/RenderPipelineVk.h
         ${VULKAN_DIR}/SamplerVk.cpp
@@ -379,8 +379,8 @@
     ${BACKEND_DIR}/PipelineLayout.h
     ${BACKEND_DIR}/Queue.cpp
     ${BACKEND_DIR}/Queue.h
-    ${BACKEND_DIR}/RenderPassInfo.cpp
-    ${BACKEND_DIR}/RenderPassInfo.h
+    ${BACKEND_DIR}/RenderPassDescriptor.cpp
+    ${BACKEND_DIR}/RenderPassDescriptor.h
     ${BACKEND_DIR}/RefCounted.cpp
     ${BACKEND_DIR}/RefCounted.h
     ${BACKEND_DIR}/Sampler.cpp
diff --git a/src/backend/CommandBuffer.cpp b/src/backend/CommandBuffer.cpp
index 747fa92..2ee9c1f 100644
--- a/src/backend/CommandBuffer.cpp
+++ b/src/backend/CommandBuffer.cpp
@@ -368,7 +368,7 @@
 
                 case Command::BeginRenderPass: {
                     BeginRenderPassCmd* cmd = mIterator.NextCommand<BeginRenderPassCmd>();
-                    RenderPassInfoBase* info = cmd->info.Get();
+                    RenderPassDescriptorBase* info = cmd->info.Get();
                     if (!mState->BeginRenderPass(info)) {
                         return false;
                     }
@@ -578,7 +578,7 @@
         mAllocator.Allocate<BeginComputePassCmd>(Command::BeginComputePass);
     }
 
-    void CommandBufferBuilder::BeginRenderPass(RenderPassInfoBase* info) {
+    void CommandBufferBuilder::BeginRenderPass(RenderPassDescriptorBase* info) {
         BeginRenderPassCmd* cmd = mAllocator.Allocate<BeginRenderPassCmd>(Command::BeginRenderPass);
         new (cmd) BeginRenderPassCmd;
         cmd->info = info;
diff --git a/src/backend/CommandBuffer.h b/src/backend/CommandBuffer.h
index 4375cd6..23f17e2 100644
--- a/src/backend/CommandBuffer.h
+++ b/src/backend/CommandBuffer.h
@@ -62,7 +62,7 @@
 
         // NXT API
         void BeginComputePass();
-        void BeginRenderPass(RenderPassInfoBase* info);
+        void BeginRenderPass(RenderPassDescriptorBase* info);
         void CopyBufferToBuffer(BufferBase* source,
                                 uint32_t sourceOffset,
                                 BufferBase* destination,
diff --git a/src/backend/CommandBufferStateTracker.cpp b/src/backend/CommandBufferStateTracker.cpp
index fe4822f..81971f9 100644
--- a/src/backend/CommandBufferStateTracker.cpp
+++ b/src/backend/CommandBufferStateTracker.cpp
@@ -21,7 +21,7 @@
 #include "backend/Forward.h"
 #include "backend/InputState.h"
 #include "backend/PipelineLayout.h"
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 #include "backend/RenderPipeline.h"
 #include "backend/Texture.h"
 #include "common/Assert.h"
@@ -166,7 +166,7 @@
         return true;
     }
 
-    bool CommandBufferStateTracker::BeginRenderPass(RenderPassInfoBase* info) {
+    bool CommandBufferStateTracker::BeginRenderPass(RenderPassDescriptorBase* info) {
         if (mAspects[VALIDATION_ASPECT_COMPUTE_PASS]) {
             mBuilder->HandleError("Cannot begin a render pass while a compute pass is active");
             return false;
diff --git a/src/backend/CommandBufferStateTracker.h b/src/backend/CommandBufferStateTracker.h
index c2af36f..85d2901 100644
--- a/src/backend/CommandBufferStateTracker.h
+++ b/src/backend/CommandBufferStateTracker.h
@@ -42,7 +42,7 @@
         // State-modifying methods
         bool BeginComputePass();
         bool EndComputePass();
-        bool BeginRenderPass(RenderPassInfoBase* info);
+        bool BeginRenderPass(RenderPassDescriptorBase* info);
         bool EndRenderPass();
         bool SetComputePipeline(ComputePipelineBase* pipeline);
         bool SetRenderPipeline(RenderPipelineBase* pipeline);
@@ -106,7 +106,7 @@
         std::map<BufferBase*, nxt::BufferUsageBit> mMostRecentBufferUsages;
         std::map<TextureBase*, nxt::TextureUsageBit> mMostRecentTextureUsages;
 
-        RenderPassInfoBase* mCurrentRenderPass = nullptr;
+        RenderPassDescriptorBase* mCurrentRenderPass = nullptr;
     };
 }  // namespace backend
 
diff --git a/src/backend/Commands.h b/src/backend/Commands.h
index e90397c..2d70a1a 100644
--- a/src/backend/Commands.h
+++ b/src/backend/Commands.h
@@ -15,7 +15,7 @@
 #ifndef BACKEND_COMMANDS_H_
 #define BACKEND_COMMANDS_H_
 
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 #include "backend/Texture.h"
 
 #include "nxt/nxtcpp.h"
@@ -53,7 +53,7 @@
     struct BeginComputePassCmd {};
 
     struct BeginRenderPassCmd {
-        Ref<RenderPassInfoBase> info;
+        Ref<RenderPassDescriptorBase> info;
     };
 
     struct BufferCopyLocation {
diff --git a/src/backend/Device.cpp b/src/backend/Device.cpp
index 8a02c56..9576d94 100644
--- a/src/backend/Device.cpp
+++ b/src/backend/Device.cpp
@@ -24,7 +24,7 @@
 #include "backend/InputState.h"
 #include "backend/PipelineLayout.h"
 #include "backend/Queue.h"
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 #include "backend/RenderPipeline.h"
 #include "backend/Sampler.h"
 #include "backend/ShaderModule.h"
@@ -124,8 +124,8 @@
     QueueBuilder* DeviceBase::CreateQueueBuilder() {
         return new QueueBuilder(this);
     }
-    RenderPassInfoBuilder* DeviceBase::CreateRenderPassInfoBuilder() {
-        return new RenderPassInfoBuilder(this);
+    RenderPassDescriptorBuilder* DeviceBase::CreateRenderPassDescriptorBuilder() {
+        return new RenderPassDescriptorBuilder(this);
     }
     RenderPipelineBuilder* DeviceBase::CreateRenderPipelineBuilder() {
         return new RenderPipelineBuilder(this);
diff --git a/src/backend/Device.h b/src/backend/Device.h
index df23d22..b076c2e 100644
--- a/src/backend/Device.h
+++ b/src/backend/Device.h
@@ -46,7 +46,8 @@
         virtual InputStateBase* CreateInputState(InputStateBuilder* builder) = 0;
         virtual PipelineLayoutBase* CreatePipelineLayout(PipelineLayoutBuilder* builder) = 0;
         virtual QueueBase* CreateQueue(QueueBuilder* builder) = 0;
-        virtual RenderPassInfoBase* CreateRenderPassInfo(RenderPassInfoBuilder* builder) = 0;
+        virtual RenderPassDescriptorBase* CreateRenderPassDescriptor(
+            RenderPassDescriptorBuilder* builder) = 0;
         virtual RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) = 0;
         virtual SamplerBase* CreateSampler(SamplerBuilder* builder) = 0;
         virtual ShaderModuleBase* CreateShaderModule(ShaderModuleBuilder* builder) = 0;
@@ -85,7 +86,7 @@
         InputStateBuilder* CreateInputStateBuilder();
         PipelineLayoutBuilder* CreatePipelineLayoutBuilder();
         QueueBuilder* CreateQueueBuilder();
-        RenderPassInfoBuilder* CreateRenderPassInfoBuilder();
+        RenderPassDescriptorBuilder* CreateRenderPassDescriptorBuilder();
         RenderPipelineBuilder* CreateRenderPipelineBuilder();
         SamplerBuilder* CreateSamplerBuilder();
         ShaderModuleBuilder* CreateShaderModuleBuilder();
diff --git a/src/backend/Forward.h b/src/backend/Forward.h
index 418dd68..1cab93f 100644
--- a/src/backend/Forward.h
+++ b/src/backend/Forward.h
@@ -41,8 +41,8 @@
     class PipelineLayoutBuilder;
     class QueueBase;
     class QueueBuilder;
-    class RenderPassInfoBase;
-    class RenderPassInfoBuilder;
+    class RenderPassDescriptorBase;
+    class RenderPassDescriptorBuilder;
     class RenderPipelineBase;
     class RenderPipelineBuilder;
     class SamplerBase;
diff --git a/src/backend/RenderPassInfo.cpp b/src/backend/RenderPassDescriptor.cpp
similarity index 68%
rename from src/backend/RenderPassInfo.cpp
rename to src/backend/RenderPassDescriptor.cpp
index 1bf0903..bfd55d2 100644
--- a/src/backend/RenderPassInfo.cpp
+++ b/src/backend/RenderPassDescriptor.cpp
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 
 #include "backend/Device.h"
 #include "backend/Texture.h"
@@ -21,9 +21,9 @@
 
 namespace backend {
 
-    // RenderPassInfo
+    // RenderPassDescriptor
 
-    RenderPassInfoBase::RenderPassInfoBase(RenderPassInfoBuilder* builder)
+    RenderPassDescriptorBase::RenderPassDescriptorBase(RenderPassDescriptorBuilder* builder)
         : mColorAttachmentsSet(builder->mColorAttachmentsSet),
           mColorAttachments(builder->mColorAttachments),
           mDepthStencilAttachmentSet(builder->mDepthStencilAttachmentSet),
@@ -32,15 +32,15 @@
           mHeight(builder->mHeight) {
     }
 
-    std::bitset<kMaxColorAttachments> RenderPassInfoBase::GetColorAttachmentMask() const {
+    std::bitset<kMaxColorAttachments> RenderPassDescriptorBase::GetColorAttachmentMask() const {
         return mColorAttachmentsSet;
     }
 
-    bool RenderPassInfoBase::HasDepthStencilAttachment() const {
+    bool RenderPassDescriptorBase::HasDepthStencilAttachment() const {
         return mDepthStencilAttachmentSet;
     }
 
-    const RenderPassColorAttachmentInfo& RenderPassInfoBase::GetColorAttachment(
+    const RenderPassColorAttachmentInfo& RenderPassDescriptorBase::GetColorAttachment(
         uint32_t attachment) const {
         ASSERT(attachment < kMaxColorAttachments);
         ASSERT(mColorAttachmentsSet[attachment]);
@@ -48,40 +48,41 @@
         return mColorAttachments[attachment];
     }
 
-    RenderPassColorAttachmentInfo& RenderPassInfoBase::GetColorAttachment(uint32_t attachment) {
+    RenderPassColorAttachmentInfo& RenderPassDescriptorBase::GetColorAttachment(
+        uint32_t attachment) {
         ASSERT(attachment < kMaxColorAttachments);
         ASSERT(mColorAttachmentsSet[attachment]);
 
         return mColorAttachments[attachment];
     }
 
-    const RenderPassDepthStencilAttachmentInfo& RenderPassInfoBase::GetDepthStencilAttachment()
-        const {
+    const RenderPassDepthStencilAttachmentInfo&
+    RenderPassDescriptorBase::GetDepthStencilAttachment() const {
         ASSERT(mDepthStencilAttachmentSet);
 
         return mDepthStencilAttachment;
     }
 
-    RenderPassDepthStencilAttachmentInfo& RenderPassInfoBase::GetDepthStencilAttachment() {
+    RenderPassDepthStencilAttachmentInfo& RenderPassDescriptorBase::GetDepthStencilAttachment() {
         ASSERT(mDepthStencilAttachmentSet);
 
         return mDepthStencilAttachment;
     }
 
-    uint32_t RenderPassInfoBase::GetWidth() const {
+    uint32_t RenderPassDescriptorBase::GetWidth() const {
         return mWidth;
     }
 
-    uint32_t RenderPassInfoBase::GetHeight() const {
+    uint32_t RenderPassDescriptorBase::GetHeight() const {
         return mHeight;
     }
 
-    // RenderPassInfoBuilder
+    // RenderPassDescriptorBuilder
 
-    RenderPassInfoBuilder::RenderPassInfoBuilder(DeviceBase* device) : Builder(device) {
+    RenderPassDescriptorBuilder::RenderPassDescriptorBuilder(DeviceBase* device) : Builder(device) {
     }
 
-    RenderPassInfoBase* RenderPassInfoBuilder::GetResultImpl() {
+    RenderPassDescriptorBase* RenderPassDescriptorBuilder::GetResultImpl() {
         auto CheckOrSetSize = [this](const TextureViewBase* attachment) -> bool {
             if (this->mWidth == 0) {
                 ASSERT(this->mHeight == 0);
@@ -120,12 +121,12 @@
             return nullptr;
         }
 
-        return mDevice->CreateRenderPassInfo(this);
+        return mDevice->CreateRenderPassDescriptor(this);
     }
 
-    void RenderPassInfoBuilder::SetColorAttachment(uint32_t attachment,
-                                                   TextureViewBase* textureView,
-                                                   nxt::LoadOp loadOp) {
+    void RenderPassDescriptorBuilder::SetColorAttachment(uint32_t attachment,
+                                                         TextureViewBase* textureView,
+                                                         nxt::LoadOp loadOp) {
         if (attachment >= kMaxColorAttachments) {
             HandleError("Setting color attachment out of bounds");
             return;
@@ -141,11 +142,11 @@
         mColorAttachments[attachment].view = textureView;
     }
 
-    void RenderPassInfoBuilder::SetColorAttachmentClearColor(uint32_t attachment,
-                                                             float clearR,
-                                                             float clearG,
-                                                             float clearB,
-                                                             float clearA) {
+    void RenderPassDescriptorBuilder::SetColorAttachmentClearColor(uint32_t attachment,
+                                                                   float clearR,
+                                                                   float clearG,
+                                                                   float clearB,
+                                                                   float clearA) {
         if (attachment >= kMaxColorAttachments) {
             HandleError("Setting color attachment out of bounds");
             return;
@@ -157,9 +158,9 @@
         mColorAttachments[attachment].clearColor[3] = clearA;
     }
 
-    void RenderPassInfoBuilder::SetDepthStencilAttachment(TextureViewBase* textureView,
-                                                          nxt::LoadOp depthLoadOp,
-                                                          nxt::LoadOp stencilLoadOp) {
+    void RenderPassDescriptorBuilder::SetDepthStencilAttachment(TextureViewBase* textureView,
+                                                                nxt::LoadOp depthLoadOp,
+                                                                nxt::LoadOp stencilLoadOp) {
         if (!TextureFormatHasDepthOrStencil(textureView->GetTexture()->GetFormat())) {
             HandleError("Using color texture as depth stencil attachment");
             return;
@@ -171,8 +172,8 @@
         mDepthStencilAttachment.view = textureView;
     }
 
-    void RenderPassInfoBuilder::SetDepthStencilAttachmentClearValue(float clearDepth,
-                                                                    uint32_t clearStencil) {
+    void RenderPassDescriptorBuilder::SetDepthStencilAttachmentClearValue(float clearDepth,
+                                                                          uint32_t clearStencil) {
         mDepthStencilAttachment.clearDepth = clearDepth;
         mDepthStencilAttachment.clearStencil = clearStencil;
     }
diff --git a/src/backend/RenderPassInfo.h b/src/backend/RenderPassDescriptor.h
similarity index 84%
rename from src/backend/RenderPassInfo.h
rename to src/backend/RenderPassDescriptor.h
index 09962d4..956138a 100644
--- a/src/backend/RenderPassInfo.h
+++ b/src/backend/RenderPassDescriptor.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef BACKEND_RENDERPASSINFO_H_
-#define BACKEND_RENDERPASSINFO_H_
+#ifndef BACKEND_RENDERPASSDESCRIPTOR_H_
+#define BACKEND_RENDERPASSDESCRIPTOR_H_
 
 #include "backend/Builder.h"
 #include "backend/Forward.h"
@@ -42,12 +42,12 @@
         Ref<TextureViewBase> view;
     };
 
-    // RenderPassInfo contains the list of attachments for a renderpass along with data such as the
-    // load operation and the clear values for the attachments.
+    // RenderPassDescriptor contains the list of attachments for a renderpass along with data such
+    // as the load operation and the clear values for the attachments.
 
-    class RenderPassInfoBase : public RefCounted {
+    class RenderPassDescriptorBase : public RefCounted {
       public:
-        RenderPassInfoBase(RenderPassInfoBuilder* builder);
+        RenderPassDescriptorBase(RenderPassDescriptorBuilder* builder);
 
         std::bitset<kMaxColorAttachments> GetColorAttachmentMask() const;
         bool HasDepthStencilAttachment() const;
@@ -72,12 +72,12 @@
         uint32_t mHeight;
     };
 
-    class RenderPassInfoBuilder : public Builder<RenderPassInfoBase> {
+    class RenderPassDescriptorBuilder : public Builder<RenderPassDescriptorBase> {
       public:
-        RenderPassInfoBuilder(DeviceBase* device);
+        RenderPassDescriptorBuilder(DeviceBase* device);
 
         // NXT API
-        RenderPassInfoBase* GetResultImpl() override;
+        RenderPassDescriptorBase* GetResultImpl() override;
         void SetColorAttachment(uint32_t attachment,
                                 TextureViewBase* textureView,
                                 nxt::LoadOp loadOp);
@@ -92,7 +92,7 @@
         void SetDepthStencilAttachmentClearValue(float clearDepth, uint32_t clearStencil);
 
       private:
-        friend class RenderPassInfoBase;
+        friend class RenderPassDescriptorBase;
 
         std::bitset<kMaxColorAttachments> mColorAttachmentsSet;
         std::array<RenderPassColorAttachmentInfo, kMaxColorAttachments> mColorAttachments;
diff --git a/src/backend/RenderPipeline.cpp b/src/backend/RenderPipeline.cpp
index a3aeba5..2392d5a 100644
--- a/src/backend/RenderPipeline.cpp
+++ b/src/backend/RenderPipeline.cpp
@@ -18,7 +18,7 @@
 #include "backend/DepthStencilState.h"
 #include "backend/Device.h"
 #include "backend/InputState.h"
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 #include "backend/Texture.h"
 #include "common/BitSetIterator.h"
 
@@ -102,7 +102,7 @@
         return mDepthStencilFormat;
     }
 
-    bool RenderPipelineBase::IsCompatibleWith(const RenderPassInfoBase* renderPass) const {
+    bool RenderPipelineBase::IsCompatibleWith(const RenderPassDescriptorBase* renderPass) const {
         // TODO(cwallez@chromium.org): This is called on every SetPipeline command. Optimize it for
         // example by caching some "attachment compatibility" object that would make the
         // compatibility check a single pointer comparison.
diff --git a/src/backend/RenderPipeline.h b/src/backend/RenderPipeline.h
index ad08d18..fe77f7f 100644
--- a/src/backend/RenderPipeline.h
+++ b/src/backend/RenderPipeline.h
@@ -44,7 +44,7 @@
 
         // A pipeline can be used in a render pass if its attachment info matches the actual
         // attachments in the render pass. This returns whether it is the case.
-        bool IsCompatibleWith(const RenderPassInfoBase* renderPass) const;
+        bool IsCompatibleWith(const RenderPassDescriptorBase* renderPass) const;
 
       private:
         Ref<DepthStencilStateBase> mDepthStencilState;
diff --git a/src/backend/ToBackend.h b/src/backend/ToBackend.h
index 2478e53..62288b1 100644
--- a/src/backend/ToBackend.h
+++ b/src/backend/ToBackend.h
@@ -84,8 +84,8 @@
     };
 
     template <typename BackendTraits>
-    struct ToBackendTraits<RenderPassInfoBase, BackendTraits> {
-        using BackendType = typename BackendTraits::RenderPassInfoType;
+    struct ToBackendTraits<RenderPassDescriptorBase, BackendTraits> {
+        using BackendType = typename BackendTraits::RenderPassDescriptorType;
     };
 
     template <typename BackendTraits>
diff --git a/src/backend/d3d12/CommandBufferD3D12.cpp b/src/backend/d3d12/CommandBufferD3D12.cpp
index c106537..5df4209 100644
--- a/src/backend/d3d12/CommandBufferD3D12.cpp
+++ b/src/backend/d3d12/CommandBufferD3D12.cpp
@@ -23,7 +23,7 @@
 #include "backend/d3d12/DescriptorHeapAllocator.h"
 #include "backend/d3d12/InputStateD3D12.h"
 #include "backend/d3d12/PipelineLayoutD3D12.h"
-#include "backend/d3d12/RenderPassInfoD3D12.h"
+#include "backend/d3d12/RenderPassDescriptorD3D12.h"
 #include "backend/d3d12/RenderPipelineD3D12.h"
 #include "backend/d3d12/ResourceAllocator.h"
 #include "backend/d3d12/SamplerD3D12.h"
@@ -265,9 +265,9 @@
                 case Command::BeginRenderPass: {
                     BeginRenderPassCmd* beginRenderPassCmd =
                         mCommands.NextCommand<BeginRenderPassCmd>();
-                    RenderPassInfo* info = ToBackend(beginRenderPassCmd->info.Get());
+                    RenderPassDescriptor* info = ToBackend(beginRenderPassCmd->info.Get());
 
-                    RenderPassInfo::OMSetRenderTargetArgs args =
+                    RenderPassDescriptor::OMSetRenderTargetArgs args =
                         info->GetSubpassOMSetRenderTargetArgs();
                     if (args.dsv.ptr) {
                         commandList->OMSetRenderTargets(args.numRTVs, args.RTVs.data(), FALSE,
diff --git a/src/backend/d3d12/D3D12Backend.cpp b/src/backend/d3d12/D3D12Backend.cpp
index eea2af5..97a6ea1 100644
--- a/src/backend/d3d12/D3D12Backend.cpp
+++ b/src/backend/d3d12/D3D12Backend.cpp
@@ -27,7 +27,7 @@
 #include "backend/d3d12/NativeSwapChainImplD3D12.h"
 #include "backend/d3d12/PipelineLayoutD3D12.h"
 #include "backend/d3d12/QueueD3D12.h"
-#include "backend/d3d12/RenderPassInfoD3D12.h"
+#include "backend/d3d12/RenderPassDescriptorD3D12.h"
 #include "backend/d3d12/RenderPipelineD3D12.h"
 #include "backend/d3d12/ResourceAllocator.h"
 #include "backend/d3d12/ResourceUploader.h"
@@ -291,8 +291,9 @@
     QueueBase* Device::CreateQueue(QueueBuilder* builder) {
         return new Queue(this, builder);
     }
-    RenderPassInfoBase* Device::CreateRenderPassInfo(RenderPassInfoBuilder* builder) {
-        return new RenderPassInfo(this, builder);
+    RenderPassDescriptorBase* Device::CreateRenderPassDescriptor(
+        RenderPassDescriptorBuilder* builder) {
+        return new RenderPassDescriptor(this, builder);
     }
     RenderPipelineBase* Device::CreateRenderPipeline(RenderPipelineBuilder* builder) {
         return new RenderPipeline(builder);
diff --git a/src/backend/d3d12/D3D12Backend.h b/src/backend/d3d12/D3D12Backend.h
index fd13777..4d5514f 100644
--- a/src/backend/d3d12/D3D12Backend.h
+++ b/src/backend/d3d12/D3D12Backend.h
@@ -37,7 +37,7 @@
     class InputState;
     class PipelineLayout;
     class Queue;
-    class RenderPassInfo;
+    class RenderPassDescriptor;
     class RenderPipeline;
     class Sampler;
     class ShaderModule;
@@ -64,7 +64,7 @@
         using InputStateType = InputState;
         using PipelineLayoutType = PipelineLayout;
         using QueueType = Queue;
-        using RenderPassInfoType = RenderPassInfo;
+        using RenderPassDescriptorType = RenderPassDescriptor;
         using RenderPipelineType = RenderPipeline;
         using SamplerType = Sampler;
         using ShaderModuleType = ShaderModule;
@@ -97,7 +97,8 @@
         InputStateBase* CreateInputState(InputStateBuilder* builder) override;
         PipelineLayoutBase* CreatePipelineLayout(PipelineLayoutBuilder* builder) override;
         QueueBase* CreateQueue(QueueBuilder* builder) override;
-        RenderPassInfoBase* CreateRenderPassInfo(RenderPassInfoBuilder* builder) override;
+        RenderPassDescriptorBase* CreateRenderPassDescriptor(
+            RenderPassDescriptorBuilder* builder) override;
         RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) override;
         SamplerBase* CreateSampler(SamplerBuilder* builder) override;
         ShaderModuleBase* CreateShaderModule(ShaderModuleBuilder* builder) override;
diff --git a/src/backend/d3d12/GeneratedCodeIncludes.h b/src/backend/d3d12/GeneratedCodeIncludes.h
index d54873a..c02e291 100644
--- a/src/backend/d3d12/GeneratedCodeIncludes.h
+++ b/src/backend/d3d12/GeneratedCodeIncludes.h
@@ -23,7 +23,7 @@
 #include "backend/d3d12/InputStateD3D12.h"
 #include "backend/d3d12/PipelineLayoutD3D12.h"
 #include "backend/d3d12/QueueD3D12.h"
-#include "backend/d3d12/RenderPassInfoD3D12.h"
+#include "backend/d3d12/RenderPassDescriptorD3D12.h"
 #include "backend/d3d12/RenderPipelineD3D12.h"
 #include "backend/d3d12/SamplerD3D12.h"
 #include "backend/d3d12/ShaderModuleD3D12.h"
diff --git a/src/backend/d3d12/RenderPassInfoD3D12.cpp b/src/backend/d3d12/RenderPassDescriptorD3D12.cpp
similarity index 85%
rename from src/backend/d3d12/RenderPassInfoD3D12.cpp
rename to src/backend/d3d12/RenderPassDescriptorD3D12.cpp
index c4a9b8e..6481b36 100644
--- a/src/backend/d3d12/RenderPassInfoD3D12.cpp
+++ b/src/backend/d3d12/RenderPassDescriptorD3D12.cpp
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "backend/d3d12/RenderPassInfoD3D12.h"
+#include "backend/d3d12/RenderPassDescriptorD3D12.h"
 
 #include "backend/d3d12/D3D12Backend.h"
 #include "backend/d3d12/TextureD3D12.h"
@@ -20,8 +20,8 @@
 
 namespace backend { namespace d3d12 {
 
-    RenderPassInfo::RenderPassInfo(Device* device, RenderPassInfoBuilder* builder)
-        : RenderPassInfoBase(builder), mDevice(device) {
+    RenderPassDescriptor::RenderPassDescriptor(Device* device, RenderPassDescriptorBuilder* builder)
+        : RenderPassDescriptorBase(builder), mDevice(device) {
         // Get and fill an RTV heap with the color attachments
         uint32_t colorAttachmentCount = static_cast<uint32_t>(GetColorAttachmentMask().count());
         if (colorAttachmentCount != 0) {
@@ -53,7 +53,8 @@
         }
     }
 
-    RenderPassInfo::OMSetRenderTargetArgs RenderPassInfo::GetSubpassOMSetRenderTargetArgs() {
+    RenderPassDescriptor::OMSetRenderTargetArgs
+    RenderPassDescriptor::GetSubpassOMSetRenderTargetArgs() {
         OMSetRenderTargetArgs args = {};
 
         size_t rtvIndex = 0;
@@ -70,11 +71,11 @@
         return args;
     }
 
-    D3D12_CPU_DESCRIPTOR_HANDLE RenderPassInfo::GetRTVDescriptor(uint32_t attachmentSlot) {
+    D3D12_CPU_DESCRIPTOR_HANDLE RenderPassDescriptor::GetRTVDescriptor(uint32_t attachmentSlot) {
         return mRtvHeap.GetCPUHandle(attachmentSlot);
     }
 
-    D3D12_CPU_DESCRIPTOR_HANDLE RenderPassInfo::GetDSVDescriptor() {
+    D3D12_CPU_DESCRIPTOR_HANDLE RenderPassDescriptor::GetDSVDescriptor() {
         return mDsvHeap.GetCPUHandle(0);
     }
 
diff --git a/src/backend/d3d12/RenderPassInfoD3D12.h b/src/backend/d3d12/RenderPassDescriptorD3D12.h
similarity index 80%
rename from src/backend/d3d12/RenderPassInfoD3D12.h
rename to src/backend/d3d12/RenderPassDescriptorD3D12.h
index fcd7011..46313ea 100644
--- a/src/backend/d3d12/RenderPassInfoD3D12.h
+++ b/src/backend/d3d12/RenderPassDescriptorD3D12.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef BACKEND_D3D12_RENDERPASSINFOD3D12_H_
-#define BACKEND_D3D12_RENDERPASSINFOD3D12_H_
+#ifndef BACKEND_D3D12_RENDERPASSDESCRIPTORD3D12_H_
+#define BACKEND_D3D12_RENDERPASSDESCRIPTORD3D12_H_
 
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 
 #include "backend/d3d12/DescriptorHeapAllocator.h"
 #include "backend/d3d12/d3d12_platform.h"
@@ -28,7 +28,7 @@
 
     class Device;
 
-    class RenderPassInfo : public RenderPassInfoBase {
+    class RenderPassDescriptor : public RenderPassDescriptorBase {
       public:
         struct OMSetRenderTargetArgs {
             unsigned int numRTVs = 0;
@@ -36,7 +36,7 @@
             D3D12_CPU_DESCRIPTOR_HANDLE dsv = {};
         };
 
-        RenderPassInfo(Device* device, RenderPassInfoBuilder* builder);
+        RenderPassDescriptor(Device* device, RenderPassDescriptorBuilder* builder);
         OMSetRenderTargetArgs GetSubpassOMSetRenderTargetArgs();
         D3D12_CPU_DESCRIPTOR_HANDLE GetRTVDescriptor(uint32_t attachmentSlot);
         D3D12_CPU_DESCRIPTOR_HANDLE GetDSVDescriptor();
@@ -49,4 +49,4 @@
 
 }}  // namespace backend::d3d12
 
-#endif  // BACKEND_D3D12_RENDERPASSINFOD3D12_H_
+#endif  // BACKEND_D3D12_RENDERPASSDESCRIPTORD3D12_H_
diff --git a/src/backend/metal/CommandBufferMTL.mm b/src/backend/metal/CommandBufferMTL.mm
index e26efbd..e4a6ac0 100644
--- a/src/backend/metal/CommandBufferMTL.mm
+++ b/src/backend/metal/CommandBufferMTL.mm
@@ -64,7 +64,7 @@
                 compute = nil;  // This will be autoreleased.
             }
 
-            void BeginRenderPass(id<MTLCommandBuffer> commandBuffer, RenderPassInfo* info) {
+            void BeginRenderPass(id<MTLCommandBuffer> commandBuffer, RenderPassDescriptor* info) {
                 if (render != nil) {
                     [render endEncoding];
                     render = nil;  // This will be autoreleased.
@@ -172,7 +172,7 @@
                     BeginRenderPassCmd* beginRenderPassCmd =
                         mCommands.NextCommand<BeginRenderPassCmd>();
 
-                    RenderPassInfo* info = ToBackend(beginRenderPassCmd->info.Get());
+                    RenderPassDescriptor* info = ToBackend(beginRenderPassCmd->info.Get());
 
                     encoders.EnsureNoBlitEncoder();
                     encoders.BeginRenderPass(commandBuffer, info);
diff --git a/src/backend/metal/MetalBackend.h b/src/backend/metal/MetalBackend.h
index 2b0e330..a61cc77 100644
--- a/src/backend/metal/MetalBackend.h
+++ b/src/backend/metal/MetalBackend.h
@@ -21,7 +21,7 @@
 #include "backend/BindGroupLayout.h"
 #include "backend/Device.h"
 #include "backend/Queue.h"
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 #include "backend/ToBackend.h"
 #include "common/Serial.h"
 
@@ -44,7 +44,7 @@
     class InputState;
     class PipelineLayout;
     class Queue;
-    class RenderPassInfo;
+    class RenderPassDescriptor;
     class RenderPipeline;
     class Sampler;
     class ShaderModule;
@@ -65,7 +65,7 @@
         using InputStateType = InputState;
         using PipelineLayoutType = PipelineLayout;
         using QueueType = Queue;
-        using RenderPassInfoType = RenderPassInfo;
+        using RenderPassDescriptorType = RenderPassDescriptor;
         using RenderPipelineType = RenderPipeline;
         using SamplerType = Sampler;
         using ShaderModuleType = ShaderModule;
@@ -98,7 +98,8 @@
         InputStateBase* CreateInputState(InputStateBuilder* builder) override;
         PipelineLayoutBase* CreatePipelineLayout(PipelineLayoutBuilder* builder) override;
         QueueBase* CreateQueue(QueueBuilder* builder) override;
-        RenderPassInfoBase* CreateRenderPassInfo(RenderPassInfoBuilder* builder) override;
+        RenderPassDescriptorBase* CreateRenderPassDescriptor(
+            RenderPassDescriptorBuilder* builder) override;
         RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) override;
         SamplerBase* CreateSampler(SamplerBuilder* builder) override;
         ShaderModuleBase* CreateShaderModule(ShaderModuleBuilder* builder) override;
@@ -154,10 +155,10 @@
         id<MTLCommandQueue> mCommandQueue = nil;
     };
 
-    class RenderPassInfo : public RenderPassInfoBase {
+    class RenderPassDescriptor : public RenderPassDescriptorBase {
       public:
-        RenderPassInfo(RenderPassInfoBuilder* builder);
-        ~RenderPassInfo();
+        RenderPassDescriptor(RenderPassDescriptorBuilder* builder);
+        ~RenderPassDescriptor();
     };
 
 }}  // namespace backend::metal
diff --git a/src/backend/metal/MetalBackend.mm b/src/backend/metal/MetalBackend.mm
index 40d5ce9..0c9bf49 100644
--- a/src/backend/metal/MetalBackend.mm
+++ b/src/backend/metal/MetalBackend.mm
@@ -110,8 +110,9 @@
     QueueBase* Device::CreateQueue(QueueBuilder* builder) {
         return new Queue(builder);
     }
-    RenderPassInfoBase* Device::CreateRenderPassInfo(RenderPassInfoBuilder* builder) {
-        return new RenderPassInfo(builder);
+    RenderPassDescriptorBase* Device::CreateRenderPassDescriptor(
+        RenderPassDescriptorBuilder* builder) {
+        return new RenderPassDescriptor(builder);
     }
     RenderPipelineBase* Device::CreateRenderPipeline(RenderPipelineBuilder* builder) {
         return new RenderPipeline(builder);
@@ -229,10 +230,11 @@
 
     // RenderPass
 
-    RenderPassInfo::RenderPassInfo(RenderPassInfoBuilder* builder) : RenderPassInfoBase(builder) {
+    RenderPassDescriptor::RenderPassDescriptor(RenderPassDescriptorBuilder* builder)
+        : RenderPassDescriptorBase(builder) {
     }
 
-    RenderPassInfo::~RenderPassInfo() {
+    RenderPassDescriptor::~RenderPassDescriptor() {
     }
 
 }}  // namespace backend::metal
diff --git a/src/backend/null/NullBackend.cpp b/src/backend/null/NullBackend.cpp
index beefc9e..55ea703 100644
--- a/src/backend/null/NullBackend.cpp
+++ b/src/backend/null/NullBackend.cpp
@@ -69,8 +69,9 @@
     QueueBase* Device::CreateQueue(QueueBuilder* builder) {
         return new Queue(builder);
     }
-    RenderPassInfoBase* Device::CreateRenderPassInfo(RenderPassInfoBuilder* builder) {
-        return new RenderPassInfo(builder);
+    RenderPassDescriptorBase* Device::CreateRenderPassDescriptor(
+        RenderPassDescriptorBuilder* builder) {
+        return new RenderPassDescriptor(builder);
     }
     RenderPipelineBase* Device::CreateRenderPipeline(RenderPipelineBuilder* builder) {
         return new RenderPipeline(builder);
diff --git a/src/backend/null/NullBackend.h b/src/backend/null/NullBackend.h
index 217bb12..28366e0 100644
--- a/src/backend/null/NullBackend.h
+++ b/src/backend/null/NullBackend.h
@@ -28,7 +28,7 @@
 #include "backend/InputState.h"
 #include "backend/PipelineLayout.h"
 #include "backend/Queue.h"
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 #include "backend/RenderPipeline.h"
 #include "backend/Sampler.h"
 #include "backend/ShaderModule.h"
@@ -50,7 +50,7 @@
     using InputState = InputStateBase;
     using PipelineLayout = PipelineLayoutBase;
     class Queue;
-    using RenderPassInfo = RenderPassInfoBase;
+    using RenderPassDescriptor = RenderPassDescriptorBase;
     using RenderPipeline = RenderPipelineBase;
     using Sampler = SamplerBase;
     using ShaderModule = ShaderModuleBase;
@@ -71,7 +71,7 @@
         using InputStateType = InputState;
         using PipelineLayoutType = PipelineLayout;
         using QueueType = Queue;
-        using RenderPassInfoType = RenderPassInfo;
+        using RenderPassDescriptorType = RenderPassDescriptor;
         using RenderPipelineType = RenderPipeline;
         using SamplerType = Sampler;
         using ShaderModuleType = ShaderModule;
@@ -106,7 +106,8 @@
         InputStateBase* CreateInputState(InputStateBuilder* builder) override;
         PipelineLayoutBase* CreatePipelineLayout(PipelineLayoutBuilder* builder) override;
         QueueBase* CreateQueue(QueueBuilder* builder) override;
-        RenderPassInfoBase* CreateRenderPassInfo(RenderPassInfoBuilder* builder) override;
+        RenderPassDescriptorBase* CreateRenderPassDescriptor(
+            RenderPassDescriptorBuilder* builder) override;
         RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) override;
         SamplerBase* CreateSampler(SamplerBuilder* builder) override;
         ShaderModuleBase* CreateShaderModule(ShaderModuleBuilder* builder) override;
diff --git a/src/backend/opengl/CommandBufferGL.cpp b/src/backend/opengl/CommandBufferGL.cpp
index 4859c26..5343f40 100644
--- a/src/backend/opengl/CommandBufferGL.cpp
+++ b/src/backend/opengl/CommandBufferGL.cpp
@@ -265,7 +265,7 @@
 
                 case Command::BeginRenderPass: {
                     auto* cmd = mCommands.NextCommand<BeginRenderPassCmd>();
-                    RenderPassInfo* info = ToBackend(cmd->info.Get());
+                    RenderPassDescriptor* info = ToBackend(cmd->info.Get());
 
                     pushConstants.OnBeginPass();
                     inputBuffers.OnBeginPass();
diff --git a/src/backend/opengl/OpenGLBackend.cpp b/src/backend/opengl/OpenGLBackend.cpp
index c0456c4..f4a2ae4 100644
--- a/src/backend/opengl/OpenGLBackend.cpp
+++ b/src/backend/opengl/OpenGLBackend.cpp
@@ -79,8 +79,9 @@
     QueueBase* Device::CreateQueue(QueueBuilder* builder) {
         return new Queue(builder);
     }
-    RenderPassInfoBase* Device::CreateRenderPassInfo(RenderPassInfoBuilder* builder) {
-        return new RenderPassInfo(builder);
+    RenderPassDescriptorBase* Device::CreateRenderPassDescriptor(
+        RenderPassDescriptorBuilder* builder) {
+        return new RenderPassDescriptor(builder);
     }
     RenderPipelineBase* Device::CreateRenderPipeline(RenderPipelineBuilder* builder) {
         return new RenderPipeline(builder);
@@ -126,9 +127,10 @@
         }
     }
 
-    // RenderPassInfo
+    // RenderPassDescriptor
 
-    RenderPassInfo::RenderPassInfo(RenderPassInfoBuilder* builder) : RenderPassInfoBase(builder) {
+    RenderPassDescriptor::RenderPassDescriptor(RenderPassDescriptorBuilder* builder)
+        : RenderPassDescriptorBase(builder) {
     }
 
 }}  // namespace backend::opengl
diff --git a/src/backend/opengl/OpenGLBackend.h b/src/backend/opengl/OpenGLBackend.h
index 2c2299e..f62d03b 100644
--- a/src/backend/opengl/OpenGLBackend.h
+++ b/src/backend/opengl/OpenGLBackend.h
@@ -25,7 +25,7 @@
 #include "backend/Device.h"
 #include "backend/InputState.h"
 #include "backend/Queue.h"
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 #include "backend/ToBackend.h"
 
 #include "glad/glad.h"
@@ -45,7 +45,7 @@
     class PersistentPipelineState;
     class PipelineLayout;
     class Queue;
-    class RenderPassInfo;
+    class RenderPassDescriptor;
     class RenderPipeline;
     class Sampler;
     class ShaderModule;
@@ -66,7 +66,7 @@
         using InputStateType = InputState;
         using PipelineLayoutType = PipelineLayout;
         using QueueType = Queue;
-        using RenderPassInfoType = RenderPassInfo;
+        using RenderPassDescriptorType = RenderPassDescriptor;
         using RenderPipelineType = RenderPipeline;
         using SamplerType = Sampler;
         using ShaderModuleType = ShaderModule;
@@ -94,7 +94,8 @@
         InputStateBase* CreateInputState(InputStateBuilder* builder) override;
         PipelineLayoutBase* CreatePipelineLayout(PipelineLayoutBuilder* builder) override;
         QueueBase* CreateQueue(QueueBuilder* builder) override;
-        RenderPassInfoBase* CreateRenderPassInfo(RenderPassInfoBuilder* builder) override;
+        RenderPassDescriptorBase* CreateRenderPassDescriptor(
+            RenderPassDescriptorBuilder* builder) override;
         RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) override;
         SamplerBase* CreateSampler(SamplerBuilder* builder) override;
         ShaderModuleBase* CreateShaderModule(ShaderModuleBuilder* builder) override;
@@ -123,9 +124,9 @@
         void Submit(uint32_t numCommands, CommandBuffer* const* commands);
     };
 
-    class RenderPassInfo : public RenderPassInfoBase {
+    class RenderPassDescriptor : public RenderPassDescriptorBase {
       public:
-        RenderPassInfo(RenderPassInfoBuilder* builder);
+        RenderPassDescriptor(RenderPassDescriptorBuilder* builder);
     };
 
 }}  // namespace backend::opengl
diff --git a/src/backend/vulkan/CommandBufferVk.cpp b/src/backend/vulkan/CommandBufferVk.cpp
index b85012f..f465827 100644
--- a/src/backend/vulkan/CommandBufferVk.cpp
+++ b/src/backend/vulkan/CommandBufferVk.cpp
@@ -19,7 +19,7 @@
 #include "backend/vulkan/BufferVk.h"
 #include "backend/vulkan/ComputePipelineVk.h"
 #include "backend/vulkan/PipelineLayoutVk.h"
-#include "backend/vulkan/RenderPassInfoVk.h"
+#include "backend/vulkan/RenderPassDescriptorVk.h"
 #include "backend/vulkan/RenderPipelineVk.h"
 #include "backend/vulkan/TextureVk.h"
 #include "backend/vulkan/VulkanBackend.h"
@@ -183,7 +183,7 @@
 
                 case Command::BeginRenderPass: {
                     BeginRenderPassCmd* cmd = mCommands.NextCommand<BeginRenderPassCmd>();
-                    RenderPassInfo* info = ToBackend(cmd->info.Get());
+                    RenderPassDescriptor* info = ToBackend(cmd->info.Get());
 
                     // NXT has an implicit transition to color attachment on render passes.
                     // Transition the attachments now before we start the render pass.
diff --git a/src/backend/vulkan/GeneratedCodeIncludes.h b/src/backend/vulkan/GeneratedCodeIncludes.h
index 18e96e7..7af9d70 100644
--- a/src/backend/vulkan/GeneratedCodeIncludes.h
+++ b/src/backend/vulkan/GeneratedCodeIncludes.h
@@ -21,7 +21,7 @@
 #include "backend/vulkan/DepthStencilStateVk.h"
 #include "backend/vulkan/InputStateVk.h"
 #include "backend/vulkan/PipelineLayoutVk.h"
-#include "backend/vulkan/RenderPassInfoVk.h"
+#include "backend/vulkan/RenderPassDescriptorVk.h"
 #include "backend/vulkan/RenderPipelineVk.h"
 #include "backend/vulkan/SamplerVk.h"
 #include "backend/vulkan/ShaderModuleVk.h"
diff --git a/src/backend/vulkan/RenderPassInfoVk.cpp b/src/backend/vulkan/RenderPassDescriptorVk.cpp
similarity index 93%
rename from src/backend/vulkan/RenderPassInfoVk.cpp
rename to src/backend/vulkan/RenderPassDescriptorVk.cpp
index 4f046f5..02d4337 100644
--- a/src/backend/vulkan/RenderPassInfoVk.cpp
+++ b/src/backend/vulkan/RenderPassDescriptorVk.cpp
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "backend/vulkan/RenderPassInfoVk.h"
+#include "backend/vulkan/RenderPassDescriptorVk.h"
 
 #include "backend/vulkan/FencedDeleter.h"
 #include "backend/vulkan/RenderPassCache.h"
@@ -22,11 +22,11 @@
 
 namespace backend { namespace vulkan {
 
-    RenderPassInfo::RenderPassInfo(RenderPassInfoBuilder* builder)
-        : RenderPassInfoBase(builder), mDevice(ToBackend(builder->GetDevice())) {
+    RenderPassDescriptor::RenderPassDescriptor(RenderPassDescriptorBuilder* builder)
+        : RenderPassDescriptorBase(builder), mDevice(ToBackend(builder->GetDevice())) {
     }
 
-    void RenderPassInfo::RecordBeginRenderPass(VkCommandBuffer commands) {
+    void RenderPassDescriptor::RecordBeginRenderPass(VkCommandBuffer commands) {
         // Query a VkRenderPass from the cache
         VkRenderPass renderPass = VK_NULL_HANDLE;
         {
diff --git a/src/backend/vulkan/RenderPassInfoVk.h b/src/backend/vulkan/RenderPassDescriptorVk.h
similarity index 74%
rename from src/backend/vulkan/RenderPassInfoVk.h
rename to src/backend/vulkan/RenderPassDescriptorVk.h
index dcbba41..4955b16 100644
--- a/src/backend/vulkan/RenderPassInfoVk.h
+++ b/src/backend/vulkan/RenderPassDescriptorVk.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef BACKEND_VULKAN_RENDERPASSINFOVK_H_
-#define BACKEND_VULKAN_RENDERPASSINFOVK_H_
+#ifndef BACKEND_VULKAN_RENDERPASSDESCRIPTORVK_H_
+#define BACKEND_VULKAN_RENDERPASSDESCRIPTORVK_H_
 
-#include "backend/RenderPassInfo.h"
+#include "backend/RenderPassDescriptor.h"
 
 #include "common/vulkan_platform.h"
 
@@ -23,9 +23,9 @@
 
     class Device;
 
-    class RenderPassInfo : public RenderPassInfoBase {
+    class RenderPassDescriptor : public RenderPassDescriptorBase {
       public:
-        RenderPassInfo(RenderPassInfoBuilder* builder);
+        RenderPassDescriptor(RenderPassDescriptorBuilder* builder);
 
         // Compute all the arguments for, and record the vkCmdBeginRenderPass command.
         void RecordBeginRenderPass(VkCommandBuffer commands);
@@ -36,4 +36,4 @@
 
 }}  // namespace backend::vulkan
 
-#endif  // BACKEND_VULKAN_RENDERPASSINFOVK_H_
+#endif  // BACKEND_VULKAN_RENDERPASSDESCRIPTORVK_H_
diff --git a/src/backend/vulkan/RenderPipelineVk.cpp b/src/backend/vulkan/RenderPipelineVk.cpp
index 03548a0..37add1e 100644
--- a/src/backend/vulkan/RenderPipelineVk.cpp
+++ b/src/backend/vulkan/RenderPipelineVk.cpp
@@ -20,7 +20,7 @@
 #include "backend/vulkan/InputStateVk.h"
 #include "backend/vulkan/PipelineLayoutVk.h"
 #include "backend/vulkan/RenderPassCache.h"
-#include "backend/vulkan/RenderPassInfoVk.h"
+#include "backend/vulkan/RenderPassDescriptorVk.h"
 #include "backend/vulkan/ShaderModuleVk.h"
 #include "backend/vulkan/VulkanBackend.h"
 
diff --git a/src/backend/vulkan/VulkanBackend.cpp b/src/backend/vulkan/VulkanBackend.cpp
index e661f7b..49f0d87 100644
--- a/src/backend/vulkan/VulkanBackend.cpp
+++ b/src/backend/vulkan/VulkanBackend.cpp
@@ -28,7 +28,7 @@
 #include "backend/vulkan/NativeSwapChainImplVk.h"
 #include "backend/vulkan/PipelineLayoutVk.h"
 #include "backend/vulkan/RenderPassCache.h"
-#include "backend/vulkan/RenderPassInfoVk.h"
+#include "backend/vulkan/RenderPassDescriptorVk.h"
 #include "backend/vulkan/RenderPipelineVk.h"
 #include "backend/vulkan/SamplerVk.h"
 #include "backend/vulkan/ShaderModuleVk.h"
@@ -246,8 +246,9 @@
     QueueBase* Device::CreateQueue(QueueBuilder* builder) {
         return new Queue(builder);
     }
-    RenderPassInfoBase* Device::CreateRenderPassInfo(RenderPassInfoBuilder* builder) {
-        return new RenderPassInfo(builder);
+    RenderPassDescriptorBase* Device::CreateRenderPassDescriptor(
+        RenderPassDescriptorBuilder* builder) {
+        return new RenderPassDescriptor(builder);
     }
     RenderPipelineBase* Device::CreateRenderPipeline(RenderPipelineBuilder* builder) {
         return new RenderPipeline(builder);
diff --git a/src/backend/vulkan/VulkanBackend.h b/src/backend/vulkan/VulkanBackend.h
index a6844bf..c0daf1a 100644
--- a/src/backend/vulkan/VulkanBackend.h
+++ b/src/backend/vulkan/VulkanBackend.h
@@ -42,7 +42,7 @@
     class InputState;
     class PipelineLayout;
     class Queue;
-    class RenderPassInfo;
+    class RenderPassDescriptor;
     class RenderPipeline;
     class Sampler;
     class ShaderModule;
@@ -69,7 +69,7 @@
         using InputStateType = InputState;
         using PipelineLayoutType = PipelineLayout;
         using QueueType = Queue;
-        using RenderPassInfoType = RenderPassInfo;
+        using RenderPassDescriptorType = RenderPassDescriptor;
         using RenderPipelineType = RenderPipeline;
         using SamplerType = Sampler;
         using ShaderModuleType = ShaderModule;
@@ -122,7 +122,8 @@
         InputStateBase* CreateInputState(InputStateBuilder* builder) override;
         PipelineLayoutBase* CreatePipelineLayout(PipelineLayoutBuilder* builder) override;
         QueueBase* CreateQueue(QueueBuilder* builder) override;
-        RenderPassInfoBase* CreateRenderPassInfo(RenderPassInfoBuilder* builder) override;
+        RenderPassDescriptorBase* CreateRenderPassDescriptor(
+            RenderPassDescriptorBuilder* builder) override;
         RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) override;
         SamplerBase* CreateSampler(SamplerBuilder* builder) override;
         ShaderModuleBase* CreateShaderModule(ShaderModuleBuilder* builder) override;
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index ea448e7..19ddae6 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -50,7 +50,7 @@
     ${VALIDATION_TESTS_DIR}/DynamicStateCommandValidationTests.cpp
     ${VALIDATION_TESTS_DIR}/InputStateValidationTests.cpp
     ${VALIDATION_TESTS_DIR}/PushConstantsValidationTests.cpp
-    ${VALIDATION_TESTS_DIR}/RenderPassInfoValidationTests.cpp
+    ${VALIDATION_TESTS_DIR}/RenderPassDescriptorValidationTests.cpp
     ${VALIDATION_TESTS_DIR}/RenderPipelineValidationTests.cpp
     ${VALIDATION_TESTS_DIR}/UsageValidationTests.cpp
     ${VALIDATION_TESTS_DIR}/VertexBufferValidationTests.cpp
diff --git a/src/tests/end2end/BlendStateTests.cpp b/src/tests/end2end/BlendStateTests.cpp
index 12ef510..1a7be71 100644
--- a/src/tests/end2end/BlendStateTests.cpp
+++ b/src/tests/end2end/BlendStateTests.cpp
@@ -707,7 +707,7 @@
         renderTargetViews[i] = renderTargets[i].CreateTextureViewBuilder().GetResult();
     }
 
-    nxt::RenderPassInfo renderpass = device.CreateRenderPassInfoBuilder()
+    nxt::RenderPassDescriptor renderpass = device.CreateRenderPassDescriptorBuilder()
         .SetColorAttachment(0, renderTargetViews[0], nxt::LoadOp::Clear)
         .SetColorAttachment(1, renderTargetViews[1], nxt::LoadOp::Clear)
         .SetColorAttachment(2, renderTargetViews[2], nxt::LoadOp::Clear)
diff --git a/src/tests/end2end/DepthStencilStateTests.cpp b/src/tests/end2end/DepthStencilStateTests.cpp
index e7b798f..f236aed 100644
--- a/src/tests/end2end/DepthStencilStateTests.cpp
+++ b/src/tests/end2end/DepthStencilStateTests.cpp
@@ -46,7 +46,7 @@
 
             depthTextureView = depthTexture.CreateTextureViewBuilder().GetResult();
 
-            renderpass = device.CreateRenderPassInfoBuilder()
+            renderpass = device.CreateRenderPassDescriptorBuilder()
                 .SetColorAttachment(0, renderTargetView, nxt::LoadOp::Clear)
                 .SetDepthStencilAttachment(depthTextureView, nxt::LoadOp::Clear, nxt::LoadOp::Clear)
                 .GetResult();
@@ -247,7 +247,7 @@
             DoTest(testParams, expected, expected);
         }
 
-        nxt::RenderPassInfo renderpass;
+        nxt::RenderPassDescriptor renderpass;
         nxt::Texture renderTarget;
         nxt::Texture depthTexture;
         nxt::TextureView renderTargetView;
diff --git a/src/tests/end2end/RenderPassLoadOpTests.cpp b/src/tests/end2end/RenderPassLoadOpTests.cpp
index cf07f7c..59c9ae5 100644
--- a/src/tests/end2end/RenderPassLoadOpTests.cpp
+++ b/src/tests/end2end/RenderPassLoadOpTests.cpp
@@ -111,7 +111,7 @@
 
     // Part 1: clear once, check to make sure it's cleared
 
-    auto renderPassClearZero = device.CreateRenderPassInfoBuilder()
+    auto renderPassClearZero = device.CreateRenderPassDescriptorBuilder()
         .SetColorAttachment(0, renderTargetView, nxt::LoadOp::Clear)
         .SetColorAttachmentClearColor(0, 0.0f, 0.0f, 0.0f, 0.0f)
         .GetResult();
@@ -123,7 +123,7 @@
         .EndRenderPass()
         .GetResult();
 
-    auto renderPassClearGreen = device.CreateRenderPassInfoBuilder()
+    auto renderPassClearGreen = device.CreateRenderPassDescriptorBuilder()
         .SetColorAttachment(0, renderTargetView, nxt::LoadOp::Clear)
         .SetColorAttachmentClearColor(0, 0.0f, 1.0f, 0.0f, 1.0f)
         .GetResult();
@@ -143,7 +143,7 @@
 
     // Part 2: draw a blue quad into the right half of the render target, and check result
 
-    auto renderPassLoad = device.CreateRenderPassInfoBuilder()
+    auto renderPassLoad = device.CreateRenderPassDescriptorBuilder()
         .SetColorAttachment(0, renderTargetView, nxt::LoadOp::Load)
         .GetResult();
 
diff --git a/src/tests/unittests/validation/RenderPassInfoValidationTests.cpp b/src/tests/unittests/validation/RenderPassDescriptorValidationTests.cpp
similarity index 80%
rename from src/tests/unittests/validation/RenderPassInfoValidationTests.cpp
rename to src/tests/unittests/validation/RenderPassDescriptorValidationTests.cpp
index 9138fd9..11314f9 100644
--- a/src/tests/unittests/validation/RenderPassInfoValidationTests.cpp
+++ b/src/tests/unittests/validation/RenderPassDescriptorValidationTests.cpp
@@ -18,7 +18,7 @@
 
 namespace {
 
-class RenderPassInfoValidationTest : public ValidationTest {
+class RenderPassDescriptorValidationTest : public ValidationTest {
 };
 
 nxt::TextureView Create2DAttachment(nxt::Device& device, uint32_t width, uint32_t height, nxt::TextureFormat format) {
@@ -36,42 +36,42 @@
 }
 
 // A render pass with no attachments isn't valid
-TEST_F(RenderPassInfoValidationTest, Empty) {
-    AssertWillBeError(device.CreateRenderPassInfoBuilder())
+TEST_F(RenderPassDescriptorValidationTest, Empty) {
+    AssertWillBeError(device.CreateRenderPassDescriptorBuilder())
         .GetResult();
 }
 
 // A render pass with only one color or one depth attachment is ok
-TEST_F(RenderPassInfoValidationTest, OneAttachment) {
+TEST_F(RenderPassDescriptorValidationTest, OneAttachment) {
     // One color attachment
     {
         nxt::TextureView color = Create2DAttachment(device, 1, 1, nxt::TextureFormat::R8G8B8A8Unorm);
-        AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+        AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, color, nxt::LoadOp::Clear)
             .GetResult();
     }
     // One depth-stencil attachment
     {
         nxt::TextureView depthStencil = Create2DAttachment(device, 1, 1, nxt::TextureFormat::D32FloatS8Uint);
-        AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+        AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
             .SetDepthStencilAttachment(depthStencil, nxt::LoadOp::Clear, nxt::LoadOp::Clear)
             .GetResult();
     }
 }
 
 // Test OOB color attachment indices are handled
-TEST_F(RenderPassInfoValidationTest, ColorAttachmentOutOfBounds) {
+TEST_F(RenderPassDescriptorValidationTest, ColorAttachmentOutOfBounds) {
     // For setting the color attachment, control case
     {
         nxt::TextureView color = Create2DAttachment(device, 1, 1, nxt::TextureFormat::R8G8B8A8Unorm);
-        AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+        AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(kMaxColorAttachments - 1, color, nxt::LoadOp::Clear)
             .GetResult();
     }
     // For setting the color attachment, OOB
     {
         nxt::TextureView color = Create2DAttachment(device, 1, 1, nxt::TextureFormat::R8G8B8A8Unorm);
-        AssertWillBeError(device.CreateRenderPassInfoBuilder())
+        AssertWillBeError(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(kMaxColorAttachments, color, nxt::LoadOp::Clear)
             .GetResult();
     }
@@ -79,14 +79,14 @@
     nxt::TextureView color = Create2DAttachment(device, 1, 1, nxt::TextureFormat::R8G8B8A8Unorm);
     // For setting the clear color, control case
     {
-        AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+        AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, color, nxt::LoadOp::Clear)
             .SetColorAttachmentClearColor(kMaxColorAttachments - 1, 0.0f, 0.0f, 0.0f, 0.0f)
             .GetResult();
     }
     // For setting the clear color, OOB
     {
-        AssertWillBeError(device.CreateRenderPassInfoBuilder())
+        AssertWillBeError(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, color, nxt::LoadOp::Clear)
             .SetColorAttachmentClearColor(kMaxColorAttachments, 0.0f, 0.0f, 0.0f, 0.0f)
             .GetResult();
@@ -94,12 +94,12 @@
 }
 
 // Test setting a clear value without an attachment and vice-versa is ok.
-TEST_F(RenderPassInfoValidationTest, ClearAndAttachmentMismatchIsOk) {
+TEST_F(RenderPassDescriptorValidationTest, ClearAndAttachmentMismatchIsOk) {
     nxt::TextureView color = Create2DAttachment(device, 1, 1, nxt::TextureFormat::R8G8B8A8Unorm);
 
     // For cleared attachment 0 doesn't get a color, clear color for 1 is unused
     {
-        AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+        AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, color, nxt::LoadOp::Clear)
             .SetColorAttachmentClearColor(1, 0.0f, 0.0f, 0.0f, 0.0f)
             .GetResult();
@@ -107,13 +107,13 @@
     // Clear depth stencil doesn't get values
     {
         nxt::TextureView depthStencil = Create2DAttachment(device, 1, 1, nxt::TextureFormat::D32FloatS8Uint);
-        AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+        AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
             .SetDepthStencilAttachment(depthStencil, nxt::LoadOp::Clear, nxt::LoadOp::Clear)
             .GetResult();
     }
     // Clear values for depth-stencil when it isn't used
     {
-        AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+        AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, color, nxt::LoadOp::Clear)
             .SetDepthStencilAttachmentClearValue(0.0f, 0)
             .GetResult();
@@ -121,7 +121,7 @@
 }
 
 // Attachments must have the same size
-TEST_F(RenderPassInfoValidationTest, SizeMustMatch) {
+TEST_F(RenderPassDescriptorValidationTest, SizeMustMatch) {
     nxt::TextureView color1x1A = Create2DAttachment(device, 1, 1, nxt::TextureFormat::R8G8B8A8Unorm);
     nxt::TextureView color1x1B = Create2DAttachment(device, 1, 1, nxt::TextureFormat::R8G8B8A8Unorm);
     nxt::TextureView color2x2 = Create2DAttachment(device, 2, 2, nxt::TextureFormat::R8G8B8A8Unorm);
@@ -130,7 +130,7 @@
 
     // Control case: all the same size (1x1)
     {
-        AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+        AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, color1x1A, nxt::LoadOp::Clear)
             .SetColorAttachment(1, color1x1B, nxt::LoadOp::Clear)
             .SetDepthStencilAttachment(depthStencil1x1, nxt::LoadOp::Clear, nxt::LoadOp::Clear)
@@ -139,7 +139,7 @@
 
     // One of the color attachments has a different size
     {
-        AssertWillBeError(device.CreateRenderPassInfoBuilder())
+        AssertWillBeError(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, color1x1A, nxt::LoadOp::Clear)
             .SetColorAttachment(1, color2x2, nxt::LoadOp::Clear)
             .SetDepthStencilAttachment(depthStencil1x1, nxt::LoadOp::Clear, nxt::LoadOp::Clear)
@@ -148,7 +148,7 @@
 
     // The depth stencil attachment has a different size
     {
-        AssertWillBeError(device.CreateRenderPassInfoBuilder())
+        AssertWillBeError(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, color1x1A, nxt::LoadOp::Clear)
             .SetColorAttachment(1, color1x1B, nxt::LoadOp::Clear)
             .SetDepthStencilAttachment(depthStencil2x2, nxt::LoadOp::Clear, nxt::LoadOp::Clear)
@@ -157,20 +157,20 @@
 }
 
 // Attachments formats must match whether they are used for color or depth-stencil
-TEST_F(RenderPassInfoValidationTest, FormatMismatch) {
+TEST_F(RenderPassDescriptorValidationTest, FormatMismatch) {
     nxt::TextureView color = Create2DAttachment(device, 1, 1, nxt::TextureFormat::R8G8B8A8Unorm);
     nxt::TextureView depthStencil = Create2DAttachment(device, 1, 1, nxt::TextureFormat::D32FloatS8Uint);
 
     // Using depth-stencil for color
     {
-        AssertWillBeError(device.CreateRenderPassInfoBuilder())
+        AssertWillBeError(device.CreateRenderPassDescriptorBuilder())
             .SetColorAttachment(0, depthStencil, nxt::LoadOp::Clear)
             .GetResult();
     }
 
     // Using color for depth-stencil
     {
-        AssertWillBeError(device.CreateRenderPassInfoBuilder())
+        AssertWillBeError(device.CreateRenderPassDescriptorBuilder())
             .SetDepthStencilAttachment(color, nxt::LoadOp::Clear, nxt::LoadOp::Clear)
             .GetResult();
     }
diff --git a/src/tests/unittests/validation/RenderPipelineValidationTests.cpp b/src/tests/unittests/validation/RenderPipelineValidationTests.cpp
index 4a88345..5c14e09 100644
--- a/src/tests/unittests/validation/RenderPipelineValidationTests.cpp
+++ b/src/tests/unittests/validation/RenderPipelineValidationTests.cpp
@@ -54,7 +54,7 @@
             return builder;
         }
 
-        nxt::RenderPassInfo renderpass;
+        nxt::RenderPassDescriptor renderpass;
         nxt::ShaderModule vsModule;
         nxt::ShaderModule fsModule;
         nxt::InputState inputState;
diff --git a/src/tests/unittests/validation/ValidationTest.cpp b/src/tests/unittests/validation/ValidationTest.cpp
index 3c2a6501..07dab31 100644
--- a/src/tests/unittests/validation/ValidationTest.cpp
+++ b/src/tests/unittests/validation/ValidationTest.cpp
@@ -69,7 +69,7 @@
     return mError;
 }
 
-nxt::RenderPassInfo ValidationTest::CreateSimpleRenderPass() {
+nxt::RenderPassDescriptor ValidationTest::CreateSimpleRenderPass() {
         auto colorBuffer = device.CreateTextureBuilder()
             .SetDimension(nxt::TextureDimension::e2D)
             .SetExtent(640, 480, 1)
@@ -81,7 +81,7 @@
         auto colorView = colorBuffer.CreateTextureViewBuilder()
             .GetResult();
 
-        return device.CreateRenderPassInfoBuilder()
+        return device.CreateRenderPassDescriptorBuilder()
             .SetColorAttachment(0, colorView, nxt::LoadOp::Clear)
             .GetResult();
 }
@@ -130,7 +130,7 @@
 
     nxt::TextureView view = AssertWillBeSuccess(dummy.attachment.CreateTextureViewBuilder()).GetResult();
 
-    dummy.renderPass = AssertWillBeSuccess(device.CreateRenderPassInfoBuilder())
+    dummy.renderPass = AssertWillBeSuccess(device.CreateRenderPassDescriptorBuilder())
         .SetColorAttachment(0, view, nxt::LoadOp::Clear)
         .GetResult();
 
diff --git a/src/tests/unittests/validation/ValidationTest.h b/src/tests/unittests/validation/ValidationTest.h
index 708d4d2..2984350 100644
--- a/src/tests/unittests/validation/ValidationTest.h
+++ b/src/tests/unittests/validation/ValidationTest.h
@@ -48,12 +48,12 @@
         void StartExpectDeviceError();
         bool EndExpectDeviceError();
 
-        nxt::RenderPassInfo CreateSimpleRenderPass();
+        nxt::RenderPassDescriptor CreateSimpleRenderPass();
 
         // Helper functions to create objects to test validation.
 
         struct DummyRenderPass {
-            nxt::RenderPassInfo renderPass;
+            nxt::RenderPassDescriptor renderPass;
             nxt::Texture attachment;
             nxt::TextureFormat attachmentFormat;
             uint32_t width;
diff --git a/src/tests/unittests/validation/VertexBufferValidationTests.cpp b/src/tests/unittests/validation/VertexBufferValidationTests.cpp
index 90fdd21..2547834 100644
--- a/src/tests/unittests/validation/VertexBufferValidationTests.cpp
+++ b/src/tests/unittests/validation/VertexBufferValidationTests.cpp
@@ -86,7 +86,7 @@
                 .GetResult();
         }
 
-        nxt::RenderPassInfo renderpass;
+        nxt::RenderPassDescriptor renderpass;
         nxt::ShaderModule fsModule;
 };
 
diff --git a/src/utils/NXTHelpers.cpp b/src/utils/NXTHelpers.cpp
index c195163..7edcc9a 100644
--- a/src/utils/NXTHelpers.cpp
+++ b/src/utils/NXTHelpers.cpp
@@ -130,7 +130,7 @@
                            .GetResult();
 
         nxt::TextureView colorView = result.color.CreateTextureViewBuilder().GetResult();
-        result.renderPassInfo = device.CreateRenderPassInfoBuilder()
+        result.renderPassInfo = device.CreateRenderPassDescriptorBuilder()
                                     .SetColorAttachment(0, colorView, nxt::LoadOp::Clear)
                                     .GetResult();
 
diff --git a/src/utils/NXTHelpers.h b/src/utils/NXTHelpers.h
index 351804a..e2a9bc7 100644
--- a/src/utils/NXTHelpers.h
+++ b/src/utils/NXTHelpers.h
@@ -42,7 +42,7 @@
         uint32_t height;
         nxt::Texture color;
         nxt::TextureFormat colorFormat;
-        nxt::RenderPassInfo renderPassInfo;
+        nxt::RenderPassDescriptor renderPassInfo;
     };
     BasicRenderPass CreateBasicRenderPass(const nxt::Device& device,
                                           uint32_t width,