refactor(rhi): let pipeline layouts own set metadata
This commit is contained in:
@@ -47,6 +47,8 @@ private:
|
||||
uint32_t m_shaderResourceTableRootIndex = UINT32_MAX;
|
||||
uint32_t m_unorderedAccessTableRootIndex = UINT32_MAX;
|
||||
uint32_t m_samplerTableRootIndex = UINT32_MAX;
|
||||
std::vector<DescriptorSetLayoutDesc> m_setLayouts;
|
||||
std::vector<std::vector<DescriptorSetLayoutBinding>> m_setLayoutBindings;
|
||||
std::vector<D3D12_ROOT_PARAMETER> m_rootParameters;
|
||||
std::vector<D3D12_DESCRIPTOR_RANGE> m_descriptorRanges;
|
||||
};
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "../RHIPipelineLayout.h"
|
||||
|
||||
namespace XCEngine {
|
||||
@@ -18,6 +20,8 @@ public:
|
||||
|
||||
private:
|
||||
RHIPipelineLayoutDesc m_desc = {};
|
||||
std::vector<DescriptorSetLayoutDesc> m_setLayouts;
|
||||
std::vector<std::vector<DescriptorSetLayoutBinding>> m_setLayoutBindings;
|
||||
bool m_initialized = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -365,7 +365,21 @@ struct RHIRenderPassDesc {
|
||||
bool hasDepthStencil = false;
|
||||
};
|
||||
|
||||
struct DescriptorSetLayoutBinding {
|
||||
uint32_t binding = 0;
|
||||
uint32_t type = 0;
|
||||
uint32_t count = 0;
|
||||
uint32_t visibility = 0;
|
||||
};
|
||||
|
||||
struct DescriptorSetLayoutDesc {
|
||||
DescriptorSetLayoutBinding* bindings = nullptr;
|
||||
uint32_t bindingCount = 0;
|
||||
};
|
||||
|
||||
struct RHIPipelineLayoutDesc {
|
||||
DescriptorSetLayoutDesc* setLayouts = nullptr;
|
||||
uint32_t setLayoutCount = 0;
|
||||
uint32_t constantBufferCount = 0;
|
||||
uint32_t textureCount = 0;
|
||||
uint32_t samplerCount = 0;
|
||||
@@ -383,18 +397,6 @@ struct ResourceViewDesc {
|
||||
uint32_t structureByteStride = 0;
|
||||
};
|
||||
|
||||
struct DescriptorSetLayoutBinding {
|
||||
uint32_t binding = 0;
|
||||
uint32_t type = 0;
|
||||
uint32_t count = 0;
|
||||
uint32_t visibility = 0;
|
||||
};
|
||||
|
||||
struct DescriptorSetLayoutDesc {
|
||||
DescriptorSetLayoutBinding* bindings = nullptr;
|
||||
uint32_t bindingCount = 0;
|
||||
};
|
||||
|
||||
struct DescriptorPoolDesc {
|
||||
void* device = nullptr;
|
||||
DescriptorHeapType type = DescriptorHeapType::CBV_SRV_UAV;
|
||||
|
||||
Reference in New Issue
Block a user