diff --git a/evk/evkPipeline.c b/evk/evkPipeline.c index f1fa742..59001f7 100644 --- a/evk/evkPipeline.c +++ b/evk/evkPipeline.c @@ -37,7 +37,7 @@ void evkDestroyPipelineLayout(evkDevice device, evkPipelineLayout layout) evkPipeline evkCreateComputePipeline(evkDevice device, evkPipelineCreateInfo createInfo) { - + // return EV_INVALID(evkPipeline); } evkPipeline evkCreateGraphicsPipeline(evkDevice device, evkPipelineCreateInfo createInfo) @@ -239,3 +239,8 @@ void evkCmdBindPipeline(evkCommandBuffer* cmdbuf, evkPipeline* pipeline) cmdbuf->boundPipeline = pipeline; vkCmdBindPipeline(cmdbuf->vk, (VkPipelineBindPoint)pipeline->type, pipeline->vk); } + +void evkCmdImageBarrier(evkCommandBuffer* cmdbuf, VkImageMemoryBarrier barrier) +{ + vkCmdPipelineBarrier(cmdbuf->vk, 0, 0, 0, 0, NULL, 0, NULL, 1, &barrier); +} diff --git a/evk/evkPipeline.h b/evk/evkPipeline.h index e3d1d61..0293d21 100644 --- a/evk/evkPipeline.h +++ b/evk/evkPipeline.h @@ -10,3 +10,5 @@ evkPipeline evkCreatePipeline(evkDevice device, evkPipelineCreateInfo createInfo void evkDestroyPipeline(evkPipeline pipeline); void evkCmdBindPipeline(evkCommandBuffer* cmdbuf, evkPipeline* pipeline); + +void evkCmdImageBarrier(evkCommandBuffer* cmdbuf, VkImageMemoryBarrier barrier); diff --git a/meson.build b/meson.build index 9a10196..d72ee85 100644 --- a/meson.build +++ b/meson.build @@ -42,13 +42,11 @@ foreach w : disabled_warnings[cc.get_id()] evk_c_args += '-Wno-'+w endforeach -evk_incdir = [ +evk_incdir = include_directories([ '.', -] +]) evk_src = [ - 'main.c', - 'evk/evkInstance.c', 'evk/evkDevice.c', 'evk/evkAllocator.c', @@ -65,10 +63,11 @@ evk_src = [ 'evk/evkMemory.c', ] -executable( + +evk_lib = library( 'evk', evk_src, - include_directories: include_directories(evk_incdir), + include_directories: evk_incdir, dependencies: [ dependency('evol-headers'), @@ -82,3 +81,10 @@ executable( ], c_args: evk_c_args, ) + +evk_dep = declare_dependency(link_with: evk_lib, include_directories: evk_incdir) +meson.override_dependency('evk', evk_dep) + +# if build_samples +subdir('samples') +# endif diff --git a/main.c b/samples/basic_triangle/basic_triangle.c similarity index 95% rename from main.c rename to samples/basic_triangle/basic_triangle.c index 3c7d330..90f0106 100644 --- a/main.c +++ b/samples/basic_triangle/basic_triangle.c @@ -6,12 +6,12 @@ #define GLFW_INCLUDE_NONE #include -evstring PROJECT_NAME = evstr("evk"); +evstring PROJECT_NAME = evstr("basic_triangle"); int main(void) { - u32 width = 1024; - u32 height = 1024; + u32 width = 1280; + u32 height = 800; evkInstance instance = evkCreateInstance((evkInstanceCreateInfo){ .applicationInfo = EV_DEFAULT(evkApplicationInfo), @@ -74,7 +74,7 @@ int main(void) } glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); - GLFWwindow* window = glfwCreateWindow(1024,1024, "evk", NULL, NULL); + GLFWwindow* window = glfwCreateWindow(width, height, "evk", NULL, NULL); if(!window) { ev_log_error("Window Creation Failed."); @@ -246,6 +246,12 @@ int main(void) evkBeginPrimaryCommandBuffer(&cmdbuf); { + evkCmdImageBarrier(&cmdbuf, EV_DEFAULT(VkImageMemoryBarrier, + image = swapChain.images[swapChainImageIdx].vk, + newLayout = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR, + subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT + )); + VkDeviceSize offset = 0; vkCmdBindVertexBuffers(cmdbuf.vk, 0, 1, &vertBuf.vk, &offset); @@ -261,13 +267,11 @@ int main(void) vkCmdEndRenderingKHR(cmdbuf.vk); - VkImageMemoryBarrier imageMemoryBarrier = EV_DEFAULT(VkImageMemoryBarrier, + evkCmdImageBarrier(&cmdbuf, EV_DEFAULT(VkImageMemoryBarrier, image = swapChain.images[swapChainImageIdx].vk, newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT - ); - - vkCmdPipelineBarrier(cmdbuf.vk, 0, 0, 0, 0, NULL, 0, NULL, 1, &imageMemoryBarrier); + )); } evkEndCommandBuffer(&cmdbuf); diff --git a/samples/basic_triangle/meson.build b/samples/basic_triangle/meson.build new file mode 100644 index 0000000..2615e3c --- /dev/null +++ b/samples/basic_triangle/meson.build @@ -0,0 +1,6 @@ + +executable( + 'basic_triangle', + 'basic_triangle.c', + dependencies: [dependency('evk')], +) diff --git a/shaders/tri.frag b/samples/basic_triangle/shaders/basic_triangle.frag similarity index 100% rename from shaders/tri.frag rename to samples/basic_triangle/shaders/basic_triangle.frag diff --git a/shaders/tri.vert b/samples/basic_triangle/shaders/basic_triangle.vert similarity index 100% rename from shaders/tri.vert rename to samples/basic_triangle/shaders/basic_triangle.vert diff --git a/samples/meson.build b/samples/meson.build new file mode 100644 index 0000000..99fd94e --- /dev/null +++ b/samples/meson.build @@ -0,0 +1 @@ +subdir('basic_triangle')