Skip to content
Snippets Groups Projects
Commit ad066d60 authored by Mark Oliver Mints's avatar Mark Oliver Mints
Browse files

[#71] Refactor: move get and destroy functions

parent 612a08c9
No related branches found
No related tags found
1 merge request!83Resolve "Refactor Pipeline Config and Manager"
Pipeline #26542 passed
......@@ -17,6 +17,63 @@ namespace vkcv
}
}
vk::Pipeline PipelineManager::getVkPipeline(const PipelineHandle &handle) const
{
const uint64_t id = handle.getId();
if (id >= m_Pipelines.size()) {
return nullptr;
}
auto& pipeline = m_Pipelines[id];
return pipeline.m_handle;
}
vk::PipelineLayout PipelineManager::getVkPipelineLayout(const PipelineHandle &handle) const
{
const uint64_t id = handle.getId();
if (id >= m_Pipelines.size()) {
return nullptr;
}
auto& pipeline = m_Pipelines[id];
return pipeline.m_layout;
}
const PipelineConfig& PipelineManager::getPipelineConfig(const PipelineHandle &handle) const
{
const uint64_t id = handle.getId();
if (id >= m_Pipelines.size()) {
static PipelineConfig dummyConfig;
vkcv_log(LogLevel::ERROR, "Invalid handle");
return dummyConfig;
}
return m_Pipelines[id].m_config;
}
void PipelineManager::destroyPipelineById(uint64_t id) {
if (id >= m_Pipelines.size()) {
return;
}
auto& pipeline = m_Pipelines[id];
if (pipeline.m_handle) {
m_Device.destroy(pipeline.m_handle);
pipeline.m_handle = nullptr;
}
if (pipeline.m_layout) {
m_Device.destroy(pipeline.m_layout);
pipeline.m_layout = nullptr;
}
}
// TODO: Move to Header
// currently assuming default 32 bit formats, no lower precision or normalized variants supported
vk::Format vertexFormatToVulkanFormat(const VertexAttachmentFormat format) {
......@@ -360,63 +417,6 @@ namespace vkcv
return PipelineHandle(id, [&](uint64_t id) { destroyPipelineById(id); });
}
vk::Pipeline PipelineManager::getVkPipeline(const PipelineHandle &handle) const
{
const uint64_t id = handle.getId();
if (id >= m_Pipelines.size()) {
return nullptr;
}
auto& pipeline = m_Pipelines[id];
return pipeline.m_handle;
}
vk::PipelineLayout PipelineManager::getVkPipelineLayout(const PipelineHandle &handle) const
{
const uint64_t id = handle.getId();
if (id >= m_Pipelines.size()) {
return nullptr;
}
auto& pipeline = m_Pipelines[id];
return pipeline.m_layout;
}
void PipelineManager::destroyPipelineById(uint64_t id) {
if (id >= m_Pipelines.size()) {
return;
}
auto& pipeline = m_Pipelines[id];
if (pipeline.m_handle) {
m_Device.destroy(pipeline.m_handle);
pipeline.m_handle = nullptr;
}
if (pipeline.m_layout) {
m_Device.destroy(pipeline.m_layout);
pipeline.m_layout = nullptr;
}
}
const PipelineConfig& PipelineManager::getPipelineConfig(const PipelineHandle &handle) const
{
const uint64_t id = handle.getId();
if (id >= m_Pipelines.size()) {
static PipelineConfig dummyConfig;
vkcv_log(LogLevel::ERROR, "Invalid handle");
return dummyConfig;
}
return m_Pipelines[id].m_config;
}
PipelineHandle PipelineManager::createComputePipeline(
const ShaderProgram &shaderProgram,
const std::vector<vk::DescriptorSetLayout> &descriptorSetLayouts) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment