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)