summaryrefslogtreecommitdiff
path: root/engine/xe_render_system.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engine/xe_render_system.cpp')
-rw-r--r--engine/xe_render_system.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/engine/xe_render_system.cpp b/engine/xe_render_system.cpp
index 1ceff78..770bfd5 100644
--- a/engine/xe_render_system.cpp
+++ b/engine/xe_render_system.cpp
@@ -15,11 +15,11 @@ RenderSystem::RenderSystem(
uint32_t vertexSize
) : xeDevice{xeEngine.xeDevice},
xeRenderer{xeEngine.xeRenderer},
- xeDescriptorPool{xeEngine.xeDescriptorPool},
pushCunstantDataSize{pushCunstantDataSize},
uniformBindings{uniformBindings},
imageBindings{imageBindings},
imageArrayBindings{imageArrayBindings} {
+ createDescriptorPool();
createDescriptorSetLayout();
createUniformBuffers();
createDescriptorSets();
@@ -31,6 +31,18 @@ RenderSystem::~RenderSystem() {
vkDestroyPipelineLayout(xeDevice.device(), pipelineLayout, nullptr);
};
+void RenderSystem::createDescriptorPool() {
+ DescriptorPool::Builder builder{xeDevice};
+ builder.setMaxSets(SwapChain::MAX_FRAMES_IN_FLIGHT);
+ builder.addPoolSize(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, uniformBindings.size() * SwapChain::MAX_FRAMES_IN_FLIGHT);
+ uint32_t images = imageBindings.size();
+ for ( const auto &[binding, size]: imageArrayBindings) {
+ images += size.size();
+ }
+ builder.addPoolSize(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, images * SwapChain::MAX_FRAMES_IN_FLIGHT);
+ xeDescriptorPool = builder.build();
+}
+
void RenderSystem::createDescriptorSetLayout() {
DescriptorSetLayout::Builder builder{xeDevice};