some descriptor functions in vkutil - wip
[demo] / src / vulkan / vk.cc
index 9297e63..8ddea09 100644 (file)
@@ -39,9 +39,7 @@ static VkFramebuffer fbs[2];
 static uint32_t curr_img; // current sc image
 static VkSemaphore psema;
 
-
 /* static variables */
-static VkDeviceMemory gpu_mem; // to be replaced when I fix the allocator
 static Vec4 clear_color(1, 0.1, 0.1, 1.0);
 
 /* static functions */
@@ -56,10 +54,10 @@ static void begin_drawing();
 static void end_drawing();
 
 static bool create_swapchain(VkSwapchainKHR *sc);
-static bool begin_init_command_buffer(VkCommandBuffer *cb);
 static bool create_zbuffer();
 static bool create_renderpass();
-static bool create_framebuffers(VkFramebuffer *fb, VkImageView *views);
+static bool create_framebuffers();
+static bool begin_init_command_buffer(VkCommandBuffer *cb);
 static bool end_init_command_buffer(VkCommandBuffer *cb);
 static bool allocate_rendering_command_buffers(VkCommandBuffer *bufs);
 static void free_rendering_command_buffers(VkCommandBuffer *bufs, int count);
@@ -86,7 +84,7 @@ bool init_vulkan()
                return false;
        }
 
-       if(!glfwGetPhysicalDevicePresentationSupport(vkinst, vk_physical, vkqfamily)) {
+       if(!glfwGetPhysicalDevicePresentationSupport(vk_instance, vk_physical, vk_qfamily)) {
                fprintf(stderr, "Presentation support not found.\n");
                return false;
        }
@@ -97,7 +95,7 @@ bool init_vulkan()
                return false;
        }
 
-       VkResult res = glfwCreateWindowSurface(vkinst, win, 0, &vk_surface);
+       VkResult res = glfwCreateWindowSurface(vk_instance, win, 0, &vk_surface);
        if(res != VK_SUCCESS) {
                fprintf(stderr, "Failed to create KHR surface: %s\n", vku_get_vulkan_error_str(res));
                return false;
@@ -124,7 +122,7 @@ bool init_vulkan()
                return false;
        }
 
-       if(!create_framebuffers(fbs, iviews)) {
+       if(!create_framebuffers()) {
                fprintf(stderr, "Failed to create the framebuffer.\n");
                return false;
        }
@@ -348,12 +346,13 @@ static bool create_zbuffer()
        VkMemoryRequirements dmem_reqs;
        vkGetImageMemoryRequirements(vk_device, dimg, &dmem_reqs);
 
-       gpu_mem = vk_allocate(dmem_reqs.size);
-
-       if(!gpu_mem)
+       DevMemBlock block;
+       if(!vku_allocate(dmem_reqs.size, &block)) {
+               fprintf(stderr, "Failed to allocate zbuffer image.\n");
                return false;
+       }
 
-       vkBindImageMemory(vk_device, dimg, gpu_mem, 0);
+       vkBindImageMemory(vk_device, dimg, block.dev_mem, 0);
 
        if(!vk_image_set_layout(init_buf, dimg, VK_IMAGE_ASPECT_DEPTH_BIT,
                                VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
@@ -442,7 +441,7 @@ static bool create_renderpass()
        return true;
 }
 
-static bool create_framebuffers(VkFramebuffer *fb, VkImageView *views)
+static bool create_framebuffers()
 {
        /* framebuffer attachments */
        VkImageView fb_att[2];
@@ -459,8 +458,8 @@ static bool create_framebuffers(VkFramebuffer *fb, VkImageView *views)
        fbinf.layers = 1;
 
        for(int i=0; i<2; i++) {
-               fb_att[0] = views[i];
-               if(vkCreateFramebuffer(vk_device, &fbinf, 0, &fb[i]) != VK_SUCCESS) {
+               fb_att[0] = iviews[i];
+               if(vkCreateFramebuffer(vk_device, &fbinf, 0, &fbs[i]) != VK_SUCCESS) {
                        fprintf(stderr, "Failed to create framebuffer %i\n", i);
                        return false;
                }
@@ -599,7 +598,6 @@ static bool begin_rendering_command_buffers(VkCommandBuffer *bufs, int count)
 
 void cleanup_vulkan()
 {
-       //TODO!!!
        free_rendering_command_buffers(rbufs, 2);
        if(win) {
                glfwDestroyWindow(win);
@@ -618,17 +616,6 @@ static void error_callback(int error, const char *description)
 
 static void reshape(int width, int height)
 {
-//     VkSwapchainKHR sc;
-//     if(!(sc = vku_create_swapchain(vk_surface, width, height, 2, VK_PRESENT_MODE_FIFO_KHR,
-//                                    vk_swapchain))) {
-//             fprintf(stderr, "Failed to create %dx%d double-buffered swapchain\n", width, height);
-//             return;
-//     }
-//     vk_swapchain = sc;
-//
-//     delete [] vkswapchain_images;
-//     vkswapchain_images = vku_get_swapchain_images(sc, 0);
-//     vk_curr_swapchain_image = vku_get_next_image(vk_swapchain);
 }
 
 static void clear(float r, float g, float b)