Files
Seele/src/Engine/Graphics/Descriptor.cpp
T

73 lines
2.3 KiB
C++
Raw Normal View History

2023-10-26 18:37:29 +02:00
#include "Descriptor.h"
using namespace Seele;
using namespace Seele::Gfx;
2024-04-13 23:51:38 +02:00
DescriptorLayout::DescriptorLayout(const std::string& name) : setIndex(0), name(name) {}
DescriptorLayout::DescriptorLayout(const DescriptorLayout& other) {
descriptorBindings.resize(other.descriptorBindings.size());
for (uint32 i = 0; i < descriptorBindings.size(); ++i) {
descriptorBindings[i] = other.descriptorBindings[i];
}
2023-11-15 00:06:00 +01:00
}
2024-04-13 23:51:38 +02:00
DescriptorLayout& DescriptorLayout::operator=(const DescriptorLayout& other) {
if (this != &other) {
descriptorBindings.resize(other.descriptorBindings.size());
for (uint32 i = 0; i < descriptorBindings.size(); ++i) {
descriptorBindings[i] = other.descriptorBindings[i];
}
}
return *this;
2023-11-15 00:06:00 +01:00
}
2024-04-13 23:51:38 +02:00
DescriptorLayout::~DescriptorLayout() {}
void DescriptorLayout::addDescriptorBinding(uint32 bindingIndex, SeDescriptorType type, uint32 arrayCount,
SeDescriptorBindingFlags bindingFlags, SeShaderStageFlags shaderStages) {
if (descriptorBindings.size() <= bindingIndex) {
descriptorBindings.resize(bindingIndex + 1);
}
descriptorBindings[bindingIndex] = DescriptorBinding{
.binding = bindingIndex,
.descriptorType = type,
.descriptorCount = arrayCount,
.bindingFlags = bindingFlags,
.shaderStages = shaderStages,
};
2023-11-15 00:06:00 +01:00
}
2024-04-13 23:51:38 +02:00
PDescriptorSet DescriptorLayout::allocateDescriptorSet() { return pool->allocateDescriptorSet(); }
void DescriptorLayout::reset() { pool->reset(); }
DescriptorPool::DescriptorPool() {}
DescriptorPool::~DescriptorPool() {}
DescriptorSet::DescriptorSet(PDescriptorLayout layout) : layout(layout) {}
DescriptorSet::~DescriptorSet() {}
PipelineLayout::PipelineLayout() {}
PipelineLayout::PipelineLayout(PPipelineLayout baseLayout) {
if (baseLayout != nullptr) {
descriptorSetLayouts = baseLayout->descriptorSetLayouts;
pushConstants = baseLayout->pushConstants;
}
2023-11-15 00:06:00 +01:00
}
2024-04-13 23:51:38 +02:00
PipelineLayout::~PipelineLayout() {}
void PipelineLayout::addDescriptorLayout(uint32 setIndex, PDescriptorLayout layout) {
if (descriptorSetLayouts.size() <= setIndex) {
descriptorSetLayouts.resize(setIndex + 1);
}
descriptorSetLayouts[setIndex] = layout;
layout->setIndex = setIndex;
2023-11-15 00:06:00 +01:00
}
2024-04-13 23:51:38 +02:00
void PipelineLayout::addPushConstants(const SePushConstantRange& pushConstant) { pushConstants.add(pushConstant); }