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 */
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);
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;
}
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;
return false;
}
- if(!create_framebuffers(fbs, iviews)) {
+ if(!create_framebuffers()) {
fprintf(stderr, "Failed to create the framebuffer.\n");
return false;
}
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,
return true;
}
-static bool create_framebuffers(VkFramebuffer *fb, VkImageView *views)
+static bool create_framebuffers()
{
/* framebuffer attachments */
VkImageView fb_att[2];
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;
}
void cleanup_vulkan()
{
- //TODO!!!
free_rendering_command_buffers(rbufs, 2);
if(win) {
glfwDestroyWindow(win);
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)