diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index b2cd04a898..a78d3b784f 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -701,6 +701,12 @@ namespace MainWindow { PostMessage(MainWindow::GetHWND(), WM_CLOSE, 0, 0); break; + case ID_OPTIONS_VULKAN: + g_Config.iGPUBackend = GPU_BACKEND_VULKAN; + g_Config.bRestartRequired = true; + PostMessage(MainWindow::GetHWND(), WM_CLOSE, 0, 0); + break; + case ID_OPTIONS_NONBUFFEREDRENDERING: setRenderingMode(FB_NON_BUFFERED_MODE); break; case ID_OPTIONS_BUFFEREDRENDERING: setRenderingMode(FB_BUFFERED_MODE); break; case ID_OPTIONS_READFBOTOMEMORYCPU: setRenderingMode(FB_READFBOMEMORY_CPU); break; @@ -1144,14 +1150,31 @@ namespace MainWindow { CheckMenuItem(menu, savestateSlot[i], MF_BYCOMMAND | ((i == g_Config.iCurrentStateSlot) ? MF_CHECKED : MF_UNCHECKED)); } - if (g_Config.iGPUBackend == GPU_BACKEND_DIRECT3D9) { + switch (g_Config.iGPUBackend) { + case GPU_BACKEND_DIRECT3D9: EnableMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_GRAYED); - CheckMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_CHECKED); EnableMenuItem(menu, ID_OPTIONS_OPENGL, MF_ENABLED); - } else { - EnableMenuItem(menu, ID_OPTIONS_OPENGL, MF_GRAYED); - CheckMenuItem(menu, ID_OPTIONS_OPENGL, MF_CHECKED); + EnableMenuItem(menu, ID_OPTIONS_VULKAN, MF_ENABLED); + CheckMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_CHECKED); + CheckMenuItem(menu, ID_OPTIONS_OPENGL, MF_UNCHECKED); + CheckMenuItem(menu, ID_OPTIONS_VULKAN, MF_UNCHECKED); + break; + case GPU_BACKEND_OPENGL: EnableMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_OPENGL, MF_GRAYED); + EnableMenuItem(menu, ID_OPTIONS_VULKAN, MF_ENABLED); + CheckMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_UNCHECKED); + CheckMenuItem(menu, ID_OPTIONS_OPENGL, MF_CHECKED); + CheckMenuItem(menu, ID_OPTIONS_VULKAN, MF_UNCHECKED); + break; + case GPU_BACKEND_VULKAN: + EnableMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_OPENGL, MF_ENABLED); + EnableMenuItem(menu, ID_OPTIONS_VULKAN, MF_GRAYED); + CheckMenuItem(menu, ID_OPTIONS_DIRECT3D9, MF_UNCHECKED); + CheckMenuItem(menu, ID_OPTIONS_OPENGL, MF_UNCHECKED); + CheckMenuItem(menu, ID_OPTIONS_VULKAN, MF_CHECKED); + break; } UpdateDynamicMenuCheckmarks(menu); diff --git a/Windows/ppsspp.rc b/Windows/ppsspp.rc index 9f2f7040b3..01baf572a8 100644 --- a/Windows/ppsspp.rc +++ b/Windows/ppsspp.rc @@ -481,6 +481,7 @@ BEGIN BEGIN MENUITEM "Direct3D9" ID_OPTIONS_DIRECT3D9 MENUITEM "OpenGL" ID_OPTIONS_OPENGL + MENUITEM "Vulkan" ID_OPTIONS_VULKAN END POPUP "Rendering Mode" diff --git a/Windows/resource.h b/Windows/resource.h index 675dcd39bd..bdb6137da2 100644 --- a/Windows/resource.h +++ b/Windows/resource.h @@ -323,6 +323,7 @@ #define ID_EMULATION_ROTATION_H_R 40158 #define ID_EMULATION_ROTATION_V_R 40159 #define ID_OPTIONS_DISPLAY_LAYOUT 40160 +#define ID_OPTIONS_VULKAN 40161 // Dummy option to let the buffered rendering hotkey cycle through all the options. #define ID_OPTIONS_BUFFEREDRENDERINGDUMMY 40500