early-access version 1583

main
pineappleEA 2021-04-11 11:58:22 +02:00
parent 6d4c14794b
commit cf7133d1e7
4 changed files with 11 additions and 6 deletions

View File

@ -1,7 +1,7 @@
yuzu emulator early access yuzu emulator early access
============= =============
This is the source code for early-access 1582. This is the source code for early-access 1583.
## Legal Notice ## Legal Notice

View File

@ -143,7 +143,10 @@ void RendererVulkan::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) {
scheduler.WaitWorker(); scheduler.WaitWorker();
swapchain.AcquireNextImage(); while (!swapchain.AcquireNextImage()) {
swapchain.Create(layout.width, layout.height, is_srgb);
blit_screen.Recreate();
}
const VkSemaphore render_semaphore = blit_screen.Draw(*framebuffer, use_accelerated); const VkSemaphore render_semaphore = blit_screen.Draw(*framebuffer, use_accelerated);
scheduler.Flush(render_semaphore); scheduler.Flush(render_semaphore);

View File

@ -82,11 +82,13 @@ void VKSwapchain::Create(u32 width, u32 height, bool srgb) {
resource_ticks.resize(image_count); resource_ticks.resize(image_count);
} }
void VKSwapchain::AcquireNextImage() { bool VKSwapchain::AcquireNextImage() {
device.GetLogical().AcquireNextImageKHR(*swapchain, std::numeric_limits<u64>::max(), const VkResult result =
*present_semaphores[frame_index], {}, &image_index); device.GetLogical().AcquireNextImageKHR(*swapchain, std::numeric_limits<u64>::max(),
*present_semaphores[frame_index], {}, &image_index);
scheduler.Wait(resource_ticks[image_index]); scheduler.Wait(resource_ticks[image_index]);
return result == VK_SUCCESS || result == VK_SUBOPTIMAL_KHR;
} }
bool VKSwapchain::Present(VkSemaphore render_semaphore) { bool VKSwapchain::Present(VkSemaphore render_semaphore) {

View File

@ -28,7 +28,7 @@ public:
void Create(u32 width, u32 height, bool srgb); void Create(u32 width, u32 height, bool srgb);
/// Acquires the next image in the swapchain, waits as needed. /// Acquires the next image in the swapchain, waits as needed.
void AcquireNextImage(); bool AcquireNextImage();
/// Presents the rendered image to the swapchain. Returns true when the swapchains had to be /// Presents the rendered image to the swapchain. Returns true when the swapchains had to be
/// recreated. Takes responsability for the ownership of fence. /// recreated. Takes responsability for the ownership of fence.