From 52e22c0e7bde79402d63c7e0453fb4ec6efc66cf Mon Sep 17 00:00:00 2001 From: Eleni Maria Stea Date: Tue, 21 Aug 2018 12:08:55 +0300 Subject: [PATCH] backup before trying terrain change --- src/vulkan/renderer-vk.cc | 19 ++++++++++++++++++- src/vulkan/renderer-vk.h | 2 ++ src/vulkan/resources.h | 8 ++++++++ src/vulkan/texture-vk.h | 2 +- src/vulkan/uniforms-vk.cc | 5 +++++ src/vulkan/uniforms-vk.h | 2 ++ 6 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/vulkan/renderer-vk.cc b/src/vulkan/renderer-vk.cc index bb52e94..0f4074e 100644 --- a/src/vulkan/renderer-vk.cc +++ b/src/vulkan/renderer-vk.cc @@ -37,7 +37,8 @@ bool RendererVK::create_resources() /* default pipeline resources */ default_vs_ub = gfx_create_uniform_buffer(); - if(!default_vs_ub->create(sizeof default_vs_uniforms)) { + int data_size = sizeof default_vs_uniforms; + if(!default_vs_ub->create(data_size)) { fprintf(stderr, "Failed to create the default VS uniform buffer.\n"); return false; } @@ -48,6 +49,7 @@ bool RendererVK::create_resources() fprintf(stderr, "Failed to create the ds layout for the default vs uniform buffer.\n"); return false; } + default_vs_res.size = data_size; default_resources.push_back(default_vs_res); default_fs_ub = gfx_create_uniform_buffer(); @@ -100,6 +102,21 @@ bool RendererVK::create_default_pipeline() return true; } +bool RendererVK::create_desc_pool() +{ + int num_desc = default_resources.size() + sky_resources.size(); + VkDescriptorPoolCreateInfo dpinf; + memset(&dpinf, 0, sizeof dpinf); + + dpinf.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; + dpinf.maxSets = num_desc + 1; + dpinf.poolSizeCount = num_desc; + + for(size_t i=0; i *res) { for(size_t i=0; isize(); i++) { diff --git a/src/vulkan/renderer-vk.h b/src/vulkan/renderer-vk.h index f571670..3bd4fd4 100644 --- a/src/vulkan/renderer-vk.h +++ b/src/vulkan/renderer-vk.h @@ -13,12 +13,14 @@ private: VkDescriptorPool res_pool; VkuPipelineGenerator default_pipe_gen; + /* might need different vectors for ds, pc */ std::vector default_resources; VkuPipelineGenerator sky_pipe_gen; std::vector sky_resources; bool create_default_pipeline(); + bool create_desc_pool(); public: RendererVK(); ~RendererVK(); diff --git a/src/vulkan/resources.h b/src/vulkan/resources.h index 5515779..5096a78 100644 --- a/src/vulkan/resources.h +++ b/src/vulkan/resources.h @@ -6,19 +6,27 @@ enum ResourceType { RES_DESC_SET, RES_PUSH_CONST, + RES_SAMPLER }; class ResourceVK { +private: + bool allocate_ds(); + public: ResourceType type; VkDescriptorSetLayout layout; VkPushConstantRange range; + int size; ResourceVK(); ~ResourceVK(); bool create_ds_layout(unsigned int num, VkDescriptorType type, VkShaderStageFlags stage, VkSampler *sampler); + bool allocate(); + +// bool create_push_constant(); }; #endif //RESOURCES_H_ diff --git a/src/vulkan/texture-vk.h b/src/vulkan/texture-vk.h index 5b93917..6781995 100644 --- a/src/vulkan/texture-vk.h +++ b/src/vulkan/texture-vk.h @@ -15,4 +15,4 @@ public: virtual void unbind() override; }; -#endif // TEXTURE_VK_H_ \ No newline at end of file +#endif // TEXTURE_VK_H_ diff --git a/src/vulkan/uniforms-vk.cc b/src/vulkan/uniforms-vk.cc index 7e67a3a..6877505 100644 --- a/src/vulkan/uniforms-vk.cc +++ b/src/vulkan/uniforms-vk.cc @@ -48,3 +48,8 @@ bool UniformBufferVK::update(void *data) } return true; } + +int UniformBufferVK::get_size() +{ + return ubo->mem_size; +} diff --git a/src/vulkan/uniforms-vk.h b/src/vulkan/uniforms-vk.h index a7f18bc..82c4799 100644 --- a/src/vulkan/uniforms-vk.h +++ b/src/vulkan/uniforms-vk.h @@ -21,6 +21,8 @@ public: virtual void bind(int binding) const override; virtual bool update(void *data) override; + + int get_size(); }; #endif //UNIFORMS_VK_H_ -- 1.7.10.4