Skip to content

Conversation

@lubosz
Copy link

@lubosz lubosz commented Jul 19, 2025

Regains these 1000 FPS by implementing a proper fix for #55.

  • Create and use queue submit fences per swap chain buffer.
  • Increase the semaphore count for "image_available" and "render_finished" from 1 to swap chain size.
  • Introduce recycled_semaphores list to decouple image_available semaphore retrieval from image_index.
  • Use vkQueueWaitIdle only when vkAcquireNextImageKHR fails.
  • Pass VkSubmitInfo direclty to vkQueueSubmit, avoiding extra ffi array.

This synchronization is based on the hello triangle example from the Khronos Vulkan-Samples repo:
https://github.com/KhronosGroup/Vulkan-Samples/tree/main/samples/api/hello_triangle_1_3

This solution runs cleanly on VK_LAYER_KHRONOS_validation 1.4.313.0.

Regains these 1000 FPS by implementing a proper fix for realitix#55.

* Create and use queue submit fences per swap chain buffer.
* Increase the semaphore count for "image_available" and
  "render_finished" from 1 to swap chain size.
* Introduce `recycled_semaphores` list to decouple `image_available`
  semaphore retrieval from `image_index`.
* Use `vkQueueWaitIdle` only when `vkAcquireNextImageKHR` fails.
* Pass `VkSubmitInfo` direclty to `vkQueueSubmit`, avoiding extra ffi array.

This synchronization is based on the hello triangle example from the
Khronos Vulkan-Samples repo:
https://github.com/KhronosGroup/Vulkan-Samples/tree/main/samples/api/hello_triangle_1_3

This solution runs cleanly on VK_LAYER_KHRONOS_validation 1.4.313.0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant