From 02d2aa40693657e1a2ace100de19163a496d4778 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Mon, 10 Dec 2018 23:04:46 -0800 Subject: [PATCH 1/2] Windows: Hide Vulkan/D3D11 if not available. We only were doing this in the settings screen before. Fixes #11657. --- Windows/MainWindowMenu.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index ce9baab828..057872be4f 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -14,6 +14,8 @@ #include "Common/Log.h" #include "Common/LogManager.h" #include "Common/ConsoleListener.h" +#include "Common/OSVersion.h" +#include "Common/Vulkan/VulkanLoader.h" #include "GPU/GLES/TextureScalerGLES.h" #include "GPU/GLES/TextureCacheGLES.h" #include "UI/OnScreenDisplay.h" @@ -1268,12 +1270,15 @@ namespace MainWindow { CheckMenuItem(menu, savestateSlot[i], MF_BYCOMMAND | ((i == g_Config.iCurrentStateSlot) ? MF_CHECKED : MF_UNCHECKED)); } + bool allowD3D11 = DoesVersionMatchWindows(6, 0, 0, 0, true); + bool allowVulkan = VulkanMayBeAvailable(); + switch (GetGPUBackend()) { case GPUBackend::DIRECT3D9: EnableMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_GRAYED); - EnableMenuItem(menu, ID_OPTIONS_DIRECT3D11, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_DIRECT3D11, allowD3D11 ? MF_ENABLED : MF_GRAYED); EnableMenuItem(menu, ID_OPTIONS_OPENGL, MF_ENABLED); - EnableMenuItem(menu, ID_OPTIONS_VULKAN, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_VULKAN, allowVulkan ? MF_ENABLED : MF_GRAYED); CheckMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_CHECKED); CheckMenuItem(menu, ID_OPTIONS_DIRECT3D11, MF_UNCHECKED); CheckMenuItem(menu, ID_OPTIONS_OPENGL, MF_UNCHECKED); @@ -1281,9 +1286,9 @@ namespace MainWindow { break; case GPUBackend::OPENGL: EnableMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_ENABLED); - EnableMenuItem(menu, ID_OPTIONS_DIRECT3D11, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_DIRECT3D11, allowD3D11 ? MF_ENABLED : MF_GRAYED); EnableMenuItem(menu, ID_OPTIONS_OPENGL, MF_GRAYED); - EnableMenuItem(menu, ID_OPTIONS_VULKAN, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_VULKAN, allowVulkan ? MF_ENABLED : MF_GRAYED); CheckMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_UNCHECKED); CheckMenuItem(menu, ID_OPTIONS_DIRECT3D11, MF_UNCHECKED); CheckMenuItem(menu, ID_OPTIONS_OPENGL, MF_CHECKED); @@ -1291,7 +1296,7 @@ namespace MainWindow { break; case GPUBackend::VULKAN: EnableMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_ENABLED); - EnableMenuItem(menu, ID_OPTIONS_DIRECT3D11, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_DIRECT3D11, allowD3D11 ? MF_ENABLED : MF_GRAYED); EnableMenuItem(menu, ID_OPTIONS_OPENGL, MF_ENABLED); EnableMenuItem(menu, ID_OPTIONS_VULKAN, MF_GRAYED); CheckMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_UNCHECKED); @@ -1303,7 +1308,7 @@ namespace MainWindow { EnableMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_ENABLED); EnableMenuItem(menu, ID_OPTIONS_DIRECT3D11, MF_GRAYED); EnableMenuItem(menu, ID_OPTIONS_OPENGL, MF_ENABLED); - EnableMenuItem(menu, ID_OPTIONS_VULKAN, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_VULKAN, allowVulkan ? MF_ENABLED : MF_GRAYED); CheckMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_UNCHECKED); CheckMenuItem(menu, ID_OPTIONS_DIRECT3D11, MF_CHECKED); CheckMenuItem(menu, ID_OPTIONS_OPENGL, MF_UNCHECKED); From bb7d9646f28bded21ad92398c9a9b5d6187a277a Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Mon, 10 Dec 2018 23:05:42 -0800 Subject: [PATCH 2/2] GE Debugger: Fix dump replay ticks accounting. Sometimes a list ends earlier than now, we don't need to eat cycles then. Fixes #11655. --- GPU/Debugger/Record.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/GPU/Debugger/Record.cpp b/GPU/Debugger/Record.cpp index 255612e3f6..0014d5eddf 100644 --- a/GPU/Debugger/Record.cpp +++ b/GPU/Debugger/Record.cpp @@ -872,7 +872,10 @@ void DumpExecute::SyncStall() { gpu->UpdateStall(execListID, execListPos); s64 listTicks = gpu->GetListTicks(execListID); if (listTicks != -1) { - currentMIPS->downcount -= listTicks - CoreTiming::GetTicks(); + s64 nowTicks = CoreTiming::GetTicks(); + if (listTicks > nowTicks) { + currentMIPS->downcount -= listTicks - nowTicks; + } } // Make sure downcount doesn't overflow.