vulkan_test2
diff src/main.c @ 17:f8bd29f124a8
foo
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 27 Jun 2018 01:57:55 +0300 |
parents | 196122a2b8c2 |
children |
line diff
1.1 --- a/src/main.c Tue Jun 26 08:42:12 2018 +0300 1.2 +++ b/src/main.c Wed Jun 27 01:57:55 2018 +0300 1.3 @@ -10,6 +10,8 @@ 1.4 1.5 static struct vku_pipeline pipeline; 1.6 static VkShaderModule vsdr, psdr; 1.7 +static VkSemaphore sem_draw_done; 1.8 +static VkFence fence_draw_done; 1.9 1.10 int main(void) 1.11 { 1.12 @@ -26,8 +28,6 @@ 1.13 wsys_reshape_callback(reshape); 1.14 wsys_keyboard_callback(keyboard); 1.15 1.16 - wsys_process_events(WSYS_NONBLOCK); 1.17 - 1.18 if(!(vsdr = vku_load_shader("sdr/vertex.spv")) || 1.19 !(psdr = vku_load_shader("sdr/pixel.spv"))) { 1.20 return 1; 1.21 @@ -37,14 +37,23 @@ 1.22 vku_pipeline_shader(&pipeline, vsdr, VK_SHADER_STAGE_VERTEX_BIT); 1.23 vku_pipeline_shader(&pipeline, psdr, VK_SHADER_STAGE_FRAGMENT_BIT); 1.24 vku_pipeline_viewport(&pipeline, 0, 0, 800, 600); 1.25 + vku_pipeline_scissor(&pipeline, 0, 0, 800, 600); 1.26 vku_pipeline_renderpass(&pipeline, vkrpass); 1.27 if(!vku_create_pipeline(&pipeline)) { 1.28 return 1; 1.29 } 1.30 1.31 + sem_draw_done = vku_create_semaphore(); 1.32 + fence_draw_done = vku_create_fence(); 1.33 1.34 while(wsys_process_events(WSYS_BLOCKING) != -1); 1.35 1.36 + vku_destroy_fence(fence_draw_done); 1.37 + vku_destroy_semaphore(sem_draw_done); 1.38 + vku_destroy_pipeline(&pipeline); 1.39 + vku_destroy_shader(vsdr); 1.40 + vku_destroy_shader(psdr); 1.41 + 1.42 wsys_destroy_window(); 1.43 vku_cleanup(); 1.44 return 0; 1.45 @@ -52,10 +61,10 @@ 1.46 1.47 static void display(void) 1.48 { 1.49 - vkgl_clear_color(1, 0, 0, 1); 1.50 + vku_begin_cmdbuf(vkcmdbuf, VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT); 1.51 + vkgl_clear_color(0.2, 0.2, 0.3, 1); 1.52 vkgl_clear(VKGL_COLOR_BUFFER_BIT); 1.53 1.54 - vku_begin_cmdbuf(vkcmdbuf, VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT); 1.55 vku_begin_renderpass(vkcmdbuf, vkrpass, swapchain_framebuf[next_swapchain_image], 1.56 VK_SUBPASS_CONTENTS_INLINE); 1.57 vkCmdBindPipeline(vkcmdbuf, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline.pipeline); 1.58 @@ -63,9 +72,10 @@ 1.59 vku_end_renderpass(vkcmdbuf); 1.60 vku_end_cmdbuf(vkcmdbuf); 1.61 1.62 - vku_submit_cmdbuf(vkq, vkcmdbuf, 0); 1.63 + vku_submit_cmdbuf(vkq, vkcmdbuf, swapchain_getimg_sem, sem_draw_done, fence_draw_done); 1.64 1.65 - wsys_swap_buffers(); 1.66 + wsys_swap_buffers(sem_draw_done); 1.67 + vku_wait_fence(fence_draw_done); 1.68 } 1.69 1.70 static void reshape(int x, int y)