renderer_vulkan: Fix swapchain creation on Win32
This commit is contained in:
@ -144,11 +144,6 @@ void RendererVulkan::PrepareRendertarget() {
|
|||||||
int fb_id = i == 2 ? 1 : 0;
|
int fb_id = i == 2 ? 1 : 0;
|
||||||
const auto& framebuffer = GPU::g_regs.framebuffer_config[fb_id];
|
const auto& framebuffer = GPU::g_regs.framebuffer_config[fb_id];
|
||||||
|
|
||||||
// Create swapchain if needed
|
|
||||||
if (swapchain->NeedsRecreation()) {
|
|
||||||
swapchain->Create(framebuffer.width, framebuffer.height, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Main LCD (0): 0x1ED02204, Sub LCD (1): 0x1ED02A04
|
// Main LCD (0): 0x1ED02204, Sub LCD (1): 0x1ED02A04
|
||||||
u32 lcd_color_addr =
|
u32 lcd_color_addr =
|
||||||
(fb_id == 0) ? LCD_REG_INDEX(color_fill_top) : LCD_REG_INDEX(color_fill_bottom);
|
(fb_id == 0) ? LCD_REG_INDEX(color_fill_top) : LCD_REG_INDEX(color_fill_bottom);
|
||||||
@ -536,10 +531,14 @@ void RendererVulkan::SwapBuffers() {
|
|||||||
// Configure current framebuffer and recreate swapchain if necessary
|
// Configure current framebuffer and recreate swapchain if necessary
|
||||||
PrepareRendertarget();
|
PrepareRendertarget();
|
||||||
|
|
||||||
if (BeginPresent()) {
|
// Create swapchain if needed
|
||||||
const auto& layout = render_window.GetFramebufferLayout();
|
const auto& layout = render_window.GetFramebufferLayout();
|
||||||
DrawScreens(layout, false);
|
if (swapchain->NeedsRecreation()) {
|
||||||
|
swapchain->Create(layout.width, layout.height, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BeginPresent()) {
|
||||||
|
DrawScreens(layout, false);
|
||||||
EndPresent();
|
EndPresent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -600,7 +599,7 @@ VideoCore::ResultStatus RendererVulkan::Init() {
|
|||||||
auto surface = CreateSurface(instance, render_window);
|
auto surface = CreateSurface(instance, render_window);
|
||||||
g_vk_instace = std::make_unique<Instance>();
|
g_vk_instace = std::make_unique<Instance>();
|
||||||
g_vk_task_scheduler = std::make_unique<TaskScheduler>();
|
g_vk_task_scheduler = std::make_unique<TaskScheduler>();
|
||||||
g_vk_instace->Create(instance, physical_devices[2], surface, true);
|
g_vk_instace->Create(instance, physical_devices[0], surface, true);
|
||||||
g_vk_task_scheduler->Create();
|
g_vk_task_scheduler->Create();
|
||||||
|
|
||||||
//auto& layout = render_window.GetFramebufferLayout();
|
//auto& layout = render_window.GetFramebufferLayout();
|
||||||
|
Reference in New Issue
Block a user