X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fvulkan%2Frenderer-vk.cc;h=0f4074ec57934ae260f8b71b959b7b36c41fe684;hb=52e22c0e7bde79402d63c7e0453fb4ec6efc66cf;hp=cbaa950a7d91a5d73f7cc62804fae7ca5b220f0e;hpb=f6ceb163227d00d7f97df1fc2dfbdd419c56277e;p=demo diff --git a/src/vulkan/renderer-vk.cc b/src/vulkan/renderer-vk.cc index cbaa950..0f4074e 100644 --- a/src/vulkan/renderer-vk.cc +++ b/src/vulkan/renderer-vk.cc @@ -7,7 +7,7 @@ #include "vkutil.h" #include "vkutil-pipeline.h" -static VkuPipelineGenerator pipe_gen; +static void set_resources_layouts(VkuPipelineGenerator *pipe_gen, std::vector *res); RendererVK::RendererVK() { @@ -34,9 +34,11 @@ RendererVK::~RendererVK() bool RendererVK::create_resources() { - /* default pipeline: create binding points */ + /* 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; } @@ -47,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(); @@ -62,6 +65,9 @@ bool RendererVK::create_resources() return false; } default_resources.push_back(default_fs_res); + set_resources_layouts(&default_pipe_gen, &default_resources); + + /* sky pipeline resources */ sky_vs_ub = gfx_create_uniform_buffer(); if(!sky_vs_ub->create(sizeof sky_vs_uniforms)) { @@ -76,17 +82,13 @@ bool RendererVK::create_resources() return false; } sky_resources.push_back(sky_vs_res); + set_resources_layouts(&sky_pipe_gen, &sky_resources); return true; } bool RendererVK::create() { - if(!create_default_pipeline()) { - fprintf(stderr, "Failed to create default pipeline.\n"); - return false; - } - /* if(!create_sky_pipeline()) { fprintf(stderr, "Failed to create sky pipeline.\n"); return false; @@ -97,6 +99,29 @@ bool RendererVK::create() 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++) { + if((*res)[i].type == RES_DESC_SET) { + pipe_gen->set_resources_layout((*res)[i].layout); + } + } +}