Skip to content
Snippets Groups Projects
Commit 58cc9203 authored by Artur Wasmut's avatar Artur Wasmut
Browse files

save pipeline config and check against pipeline's dimensions when dynamically...

save pipeline config and check against pipeline's dimensions when dynamically setting viewport and scissor.
parent 89bc0fea
No related branches found
No related tags found
1 merge request!43Resolve "Resizing-Event"
Pipeline #25428 passed
...@@ -183,6 +183,7 @@ namespace vkcv ...@@ -183,6 +183,7 @@ namespace vkcv
const vk::ImageView imageView = m_swapchainImageViews[m_currentSwapchainImageIndex]; const vk::ImageView imageView = m_swapchainImageViews[m_currentSwapchainImageIndex];
const vk::Pipeline pipeline = m_PipelineManager->getVkPipeline(pipelineHandle); const vk::Pipeline pipeline = m_PipelineManager->getVkPipeline(pipelineHandle);
const vk::PipelineLayout pipelineLayout = m_PipelineManager->getVkPipelineLayout(pipelineHandle); const vk::PipelineLayout pipelineLayout = m_PipelineManager->getVkPipelineLayout(pipelineHandle);
const vkcv::PipelineConfig pipelineConfig = m_PipelineManager->getPipelineConfig(pipelineHandle);
const vk::Rect2D renderArea(vk::Offset2D(0, 0), vk::Extent2D(width, height)); const vk::Rect2D renderArea(vk::Offset2D(0, 0), vk::Extent2D(width, height));
const vk::Buffer vulkanIndexBuffer = m_BufferManager->getBuffer(indexBuffer); const vk::Buffer vulkanIndexBuffer = m_BufferManager->getBuffer(indexBuffer);
...@@ -244,8 +245,12 @@ namespace vkcv ...@@ -244,8 +245,12 @@ namespace vkcv
cmdBuffer.beginRenderPass(beginInfo, subpassContents, {}); cmdBuffer.beginRenderPass(beginInfo, subpassContents, {});
cmdBuffer.bindPipeline(vk::PipelineBindPoint::eGraphics, pipeline, {}); cmdBuffer.bindPipeline(vk::PipelineBindPoint::eGraphics, pipeline, {});
cmdBuffer.setViewport(0, 1, &dynamicViewport);
cmdBuffer.setScissor(0, 1, &dynamicScissor); if(pipelineConfig.m_Height == UINT32_MAX && pipelineConfig.m_Width == UINT32_MAX)
{
cmdBuffer.setViewport(0, 1, &dynamicViewport);
cmdBuffer.setScissor(0, 1, &dynamicScissor);
}
for (uint32_t i = 0; i < vertexBufferBindings.size(); i++) { for (uint32_t i = 0; i < vertexBufferBindings.size(); i++) {
const auto &vertexBinding = vertexBufferBindings[i]; const auto &vertexBinding = vertexBufferBindings[i];
......
...@@ -5,7 +5,8 @@ namespace vkcv ...@@ -5,7 +5,8 @@ namespace vkcv
PipelineManager::PipelineManager(vk::Device device) noexcept : PipelineManager::PipelineManager(vk::Device device) noexcept :
m_Device{device}, m_Device{device},
m_Pipelines{} m_Pipelines{},
m_Configs{}
{} {}
PipelineManager::~PipelineManager() noexcept PipelineManager::~PipelineManager() noexcept
...@@ -258,6 +259,7 @@ namespace vkcv ...@@ -258,6 +259,7 @@ namespace vkcv
const uint64_t id = m_Pipelines.size(); const uint64_t id = m_Pipelines.size();
m_Pipelines.push_back({ vkPipeline, vkPipelineLayout }); m_Pipelines.push_back({ vkPipeline, vkPipelineLayout });
m_Configs.push_back(config);
return PipelineHandle(id, [&](uint64_t id) { destroyPipelineById(id); }); return PipelineHandle(id, [&](uint64_t id) { destroyPipelineById(id); });
} }
...@@ -304,5 +306,11 @@ namespace vkcv ...@@ -304,5 +306,11 @@ namespace vkcv
pipeline.m_layout = nullptr; pipeline.m_layout = nullptr;
} }
} }
const PipelineConfig &PipelineManager::getPipelineConfig(const PipelineHandle &handle) const
{
const uint64_t id = handle.getId();
return m_Configs.at(id);
}
} }
\ No newline at end of file
...@@ -18,6 +18,7 @@ namespace vkcv ...@@ -18,6 +18,7 @@ namespace vkcv
vk::Device m_Device; vk::Device m_Device;
std::vector<Pipeline> m_Pipelines; std::vector<Pipeline> m_Pipelines;
std::vector<PipelineConfig> m_Configs;
void destroyPipelineById(uint64_t id); void destroyPipelineById(uint64_t id);
...@@ -36,7 +37,11 @@ namespace vkcv ...@@ -36,7 +37,11 @@ namespace vkcv
[[nodiscard]] [[nodiscard]]
vk::Pipeline getVkPipeline(const PipelineHandle &handle) const; vk::Pipeline getVkPipeline(const PipelineHandle &handle) const;
[[nodiscard]] [[nodiscard]]
vk::PipelineLayout getVkPipelineLayout(const PipelineHandle &handle) const; vk::PipelineLayout getVkPipelineLayout(const PipelineHandle &handle) const;
[[nodiscard]]
const PipelineConfig &getPipelineConfig(const PipelineHandle &handle) const;
}; };
} }
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