diff --git a/doc/Tutorial.md b/doc/Tutorial.md index 4c4442866017408ef2ab609a6d046a9349f476f2..fc071fa4c59908a66c1399df9b8cb8eb364bf268 100644 --- a/doc/Tutorial.md +++ b/doc/Tutorial.md @@ -224,11 +224,11 @@ frame.add_run([&]() { if (window.resize_request()) return window.handle_resize(); - auto frame_index = renderer.begin_frame(); - if (!frame_index) + optional_index current_frame = renderer.begin_frame(); + if (!current_frame.has_value()) return run_continue; - return renderer.end_frame({ cmd_bufs[*frame_index] }); + return renderer.end_frame({ cmd_bufs[*current_frame] }); }); frame.add_run_end([&]() { diff --git a/liblava/frame/renderer.cpp b/liblava/frame/renderer.cpp index 03725d8f236a6eddee9cc3a772b18345f08855d3..e269e40852c741fb777e66af92d51ba2197484ba 100644 --- a/liblava/frame/renderer.cpp +++ b/liblava/frame/renderer.cpp @@ -73,7 +73,7 @@ namespace lava { queued_frames = 0; } - std::optional<index> renderer::begin_frame() { + optional_index renderer::begin_frame() { if (!active) return {}; @@ -98,15 +98,15 @@ namespace lava { auto current_semaphore = image_acquired_semaphores[current_sync]; - auto result = device->vkAcquireNextImageKHR(target->get(), UINT64_MAX, current_semaphore, 0, &frame_index); + auto result = device->vkAcquireNextImageKHR(target->get(), UINT64_MAX, current_semaphore, 0, ¤t_frame); if (result.value == VK_ERROR_OUT_OF_DATE_KHR) { target->request_reload(); return {}; } // because frames might not come in sequential order current frame might still be locked - if ((fences_in_use[frame_index] != 0) && (fences_in_use[frame_index] != fences[current_sync])) { - auto result = device->vkWaitForFences(1, &fences_in_use[frame_index], VK_TRUE, UINT64_MAX); + if ((fences_in_use[current_frame] != 0) && (fences_in_use[current_frame] != fences[current_sync])) { + auto result = device->vkWaitForFences(1, &fences_in_use[current_frame], VK_TRUE, UINT64_MAX); if (result.value == VK_ERROR_OUT_OF_DATE_KHR) { target->request_reload(); @@ -117,7 +117,7 @@ namespace lava { return {}; } - fences_in_use[frame_index] = fences[current_sync]; + fences_in_use[current_frame] = fences[current_sync]; if (!result) return {}; @@ -154,7 +154,7 @@ namespace lava { return false; std::array<VkSwapchainKHR, 1> const swapchains = { target->get() }; - std::array<ui32, 1> const indices = { frame_index }; + std::array<ui32, 1> const indices = { current_frame }; VkPresentInfoKHR const present_info{ .sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, diff --git a/liblava/frame/renderer.hpp b/liblava/frame/renderer.hpp index e6a2b834a74754f88630747a09b59473a9781f7f..146202c3b6fee59d93f23646f74658241672e6fe 100644 --- a/liblava/frame/renderer.hpp +++ b/liblava/frame/renderer.hpp @@ -9,11 +9,13 @@ namespace lava { + using optional_index = std::optional<index>; + struct renderer : id_obj { bool create(swapchain* target); void destroy(); - std::optional<index> begin_frame(); + optional_index begin_frame(); bool end_frame(VkCommandBuffers const& cmd_buffers); bool frame(VkCommandBuffers const& cmd_buffers) { @@ -24,7 +26,7 @@ namespace lava { } index get_frame() const { - return frame_index; + return current_frame; } device_ptr get_device() { @@ -42,7 +44,7 @@ namespace lava { swapchain* target = nullptr; - index frame_index = 0; + index current_frame = 0; ui32 queued_frames = 2; ui32 current_sync = 0; diff --git a/tests/tests.cpp b/tests/tests.cpp index 919de0e1f56e2c078fc53f81076f0173f05d8247..a29050d4333d8231b7bbd1ed8397beb0c9343bfa 100644 --- a/tests/tests.cpp +++ b/tests/tests.cpp @@ -167,11 +167,11 @@ LAVA_TEST(4, "clear color") { if (window.resize_request()) return window.handle_resize(); - auto frame_index = renderer.begin_frame(); - if (!frame_index) + optional_index current_frame = renderer.begin_frame(); + if (!current_frame.has_value()) return run_continue; - return renderer.end_frame({ cmd_bufs[*frame_index] }); + return renderer.end_frame({ cmd_bufs[*current_frame] }); }); frame.add_run_end([&]() { @@ -255,11 +255,11 @@ LAVA_TEST(5, "color block") { if (window.resize_request()) return window.handle_resize(); - auto frame_index = renderer.begin_frame(); - if (!frame_index) + optional_index current_frame = renderer.begin_frame(); + if (!current_frame.has_value()) return run_continue; - if (!block.process(*frame_index)) + if (!block.process(*current_frame)) return run_abort; return renderer.end_frame(block.get_buffers()); @@ -338,11 +338,11 @@ LAVA_TEST(6, "forward shading") { frame.set_wait_for_events(false); } - auto frame_index = renderer.begin_frame(); - if (!frame_index) + optional_index current_frame = renderer.begin_frame(); + if (!current_frame.has_value()) return run_continue; - if (!block.process(*frame_index)) + if (!block.process(*current_frame)) return run_abort; return renderer.end_frame(block.get_buffers());