From 9d1f4a25380ae74ea5590987b9af5c47299ad104 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Wed, 9 May 2018 19:42:37 +0300 Subject: [PATCH] vk: Include RADV POLARIS and RADV VEGA in the primitive restart blacklist --- rpcs3/Emu/RSX/VK/VKHelpers.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/VK/VKHelpers.cpp b/rpcs3/Emu/RSX/VK/VKHelpers.cpp index 9925cab6bb..d557484e01 100644 --- a/rpcs3/Emu/RSX/VK/VKHelpers.cpp +++ b/rpcs3/Emu/RSX/VK/VKHelpers.cpp @@ -211,10 +211,18 @@ namespace vk //Radeon fails to properly handle degenerate primitives if primitive restart is enabled //One has to choose between using degenerate primitives or primitive restart to break up lists but not both //Polaris and newer will crash with ERROR_DEVICE_LOST - //Older GCN will work okay most of the time but also occasionally draws garbage without reason - if (gpu_name.find("Radeon") != std::string::npos) + //Older GCN will work okay most of the time but also occasionally draws garbage without reason (properietary driver only) + if (gpu_name.find("Radeon") != std::string::npos || //Proprietary driver + gpu_name.find("POLARIS") != std::string::npos || //RADV POLARIS + gpu_name.find("VEGA") != std::string::npos) //RADV VEGA { g_drv_no_primitive_restart_flag = !g_cfg.video.vk.force_primitive_restart; + } + + //Radeon proprietary driver does not properly handle fence reset and can segfault during vkResetFences + //Disable fence reset for proprietary driver and delete+initialize a new fence instead + if (gpu_name.find("Radeon") != std::string::npos) + { g_drv_disable_fence_reset = true; }