From d2652aedd25d1d045573eafbf4be1224f7f64a52 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sun, 11 Feb 2018 19:52:14 +0300 Subject: [PATCH] VK: add two options (workarounds) Force FIFO present mode option is workaround for recent MESA drivers Force primitive restart flag should also work on said drivers --- rpcs3/Emu/RSX/VK/VKHelpers.cpp | 2 +- rpcs3/Emu/RSX/VK/VKHelpers.h | 2 +- rpcs3/Emu/System.h | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/VK/VKHelpers.cpp b/rpcs3/Emu/RSX/VK/VKHelpers.cpp index ffeac4e73b..3cca60a1bb 100644 --- a/rpcs3/Emu/RSX/VK/VKHelpers.cpp +++ b/rpcs3/Emu/RSX/VK/VKHelpers.cpp @@ -299,7 +299,7 @@ namespace vk { if (gpu_name.find(test) != std::string::npos) { - g_drv_no_primitive_restart_flag = true; + g_drv_no_primitive_restart_flag = !g_cfg.video.vk.force_primitive_restart; break; } } diff --git a/rpcs3/Emu/RSX/VK/VKHelpers.h b/rpcs3/Emu/RSX/VK/VKHelpers.h index f69ff3decf..fd509133e4 100644 --- a/rpcs3/Emu/RSX/VK/VKHelpers.h +++ b/rpcs3/Emu/RSX/VK/VKHelpers.h @@ -907,7 +907,7 @@ namespace vk //List of preferred modes in decreasing desirability if (g_cfg.video.vsync) preferred_modes = { VK_PRESENT_MODE_MAILBOX_KHR }; - else + else if (!g_cfg.video.vk.force_fifo) preferred_modes = { VK_PRESENT_MODE_IMMEDIATE_KHR, VK_PRESENT_MODE_FIFO_RELAXED_KHR, VK_PRESENT_MODE_MAILBOX_KHR }; bool mode_found = false; diff --git a/rpcs3/Emu/System.h b/rpcs3/Emu/System.h index 3bd708a426..da00df8ae1 100644 --- a/rpcs3/Emu/System.h +++ b/rpcs3/Emu/System.h @@ -361,6 +361,8 @@ struct cfg_root : cfg::node node_vk(cfg::node* _this) : cfg::node(_this, "Vulkan") {} cfg::string adapter{this, "Adapter"}; + cfg::_bool force_fifo{this, "Force FIFO present mode"}; + cfg::_bool force_primitive_restart{this, "Force primitive restart flag"}; } vk{this};