backup before trying terrain change
[demo] / src / vulkan / renderer-vk.cc
index cbaa950..0f4074e 100644 (file)
@@ -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<ResourceVK> *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<default_resources.size(); i++) {
+       }
        return true;
 }
+
+static void set_resources_layouts(VkuPipelineGenerator *pipe_gen, std::vector<ResourceVK> *res)
+{
+       for(size_t i=0; i<res->size(); i++) {
+               if((*res)[i].type == RES_DESC_SET) {
+                       pipe_gen->set_resources_layout((*res)[i].layout);
+               }
+       }
+}