Merge pull request #2124 from brooksytech/dev

Add Dolphin-SA support to RK3588
This commit is contained in:
Brooksytech 2023-09-26 22:20:45 -07:00 committed by GitHub
commit 4994b0325c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 426 additions and 152 deletions

View file

@ -70,7 +70,7 @@ This document describes all available systems emulators and cores available for
|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)<br>**retroarch:** gbsp<br>**retroarch:** vbam<br>**retroarch:** vba_next<br>**retroarch:** beetle_gba<br>|
|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>|
|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>|
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**retroarch:** dolphin (default)<br>|
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)<br>**retroarch:** dolphin<br>|
|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** beetle_supafaust<br>|
|Nintendo|N64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)<br>**retroarch:** mupen64plus<br>**retroarch:** parallel_n64<br>**mupen64plus:** mupen64plus-sa<br>|
|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)<br>**retroarch:** fceumm<br>**retroarch:** quicknes<br>**retroarch:** mesen<br>|
@ -81,7 +81,7 @@ This document describes all available systems emulators and cores available for
|Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** snes9x2010<br>**retroarch:** snes9x2002<br>**retroarch:** snes9x2005_plus<br>**retroarch:** beetle_supafaust<br>**retroarch:** bsnes<br>**retroarch:** bsnes_mercury_performance<br>**retroarch:** bsnes_hd_beta<br>|
|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** snes9x2010<br>**retroarch:** snes9x2002<br>**retroarch:** snes9x2005_plus<br>**retroarch:** beetle_supafaust<br>**retroarch:** bsnes<br>**retroarch:** bsnes_mercury_performance<br>**retroarch:** bsnes_hd_beta<br>|
|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)<br>|
|Nintendo|Wii (wii)|2006|`wii`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad|**retroarch:** dolphin (default)<br>|
|Nintendo|Wii (wii)|2006|`wii`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad|**dolphin:** dolphin-sa-wii (default)<br>**retroarch:** dolphin<br>|
|Panasonic|3DO (3do)|1993|`3do`|.iso .bin .chd .cue|**retroarch:** opera (default)<br>|
|Philips|VideoPac (videopac)|1978|`videopac`|.bin .zip .7z|**retroarch:** o2em (default)<br>|
|Sammy|Atomiswave (atomiswave)|2003|`atomiswave`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021<br>**retroarch:** flycast32 (default)<br>**retroarch:** flycast<br>**flycast:** flycast-sa<br>|

View file

@ -122,7 +122,7 @@ EmulationSpeed = 1.00000000
FrameSkip = 0x00000003
Overclock = 4.00000000
OverclockEnable = False
GFXBackend = OGL
GFXBackend = Vulkan
GPUDeterminismMode = auto
PerfMapDir =
[Movie]

View file

@ -0,0 +1,29 @@
[GCPad1]
Device = evdev/0/Microsoft X-Box 360 pad
Buttons/A = Button 0
Buttons/B = Button 2
Buttons/Start = Button 6
Buttons/X = Button 1
Buttons/Y = Button 3
Buttons/Z = Button 5
Buttons/Hotkey = Button 7
C-Stick/Dead Zone = 25.000000000000000
C-Stick/Down = Axis 4+
C-Stick/Left = Axis 3-
C-Stick/Modifier = Control_L
C-Stick/Modifier/Range = 50.000000000000000
C-Stick/Right = Axis 3+
C-Stick/Up = Axis 4-
D-Pad/Down = Axis 7+
D-Pad/Left = Axis 6-
D-Pad/Right = Axis 6+
D-Pad/Up = Axis 7-
Main Stick/Dead Zone = 25.000000000000000
Main Stick/Down = Axis 1+
Main Stick/Left = Axis 0-
Main Stick/Modifier = Shift_L
Main Stick/Modifier/Range = 50.000000000000000
Main Stick/Right = Axis 0+
Main Stick/Up = Axis 1-
Triggers/L = Axis 2+
Triggers/R = Axis 5+

View file

@ -2,7 +2,9 @@
VSync = False
Adapter = 0
[Settings]
PreferGLES = True
AspectRatio = 0
InternalResolution = 2
Crop = False
wideScreenHack = False
UseXFB = False
@ -37,10 +39,14 @@ SWDumpTevStages = False
SWDumpTevTexFetches = False
SWDrawStart = 0
SWDrawEnd = 100000
ShaderCompilationMode = 0
WaitForShadersBeforeStarting = True
BackendMultithreading = True
EnableGPUTextureDecoding = True
[Enhancements]
ForceFiltering = False
ForceTextureFiltering = False
MaxAnisotropy = 0
PostProcessingShader =
PostProcessingShader =
[Stereoscopy]
StereoMode = 0
StereoDepth = 20
@ -53,3 +59,4 @@ ForceProgressive = True
EFBToTextureEnable = True
EFBScaledCopy = False
EFBEmulateFormatChanges = False
SkipDuplicateXFBs = True

View file

@ -0,0 +1,20 @@
[Wiimote1]
Device = evdev/0/Microsoft X-Box 360 pad
Buttons/A = Button 0
Buttons/B = Button 1
Buttons/1 = Button 2
Buttons/2 = Button 3
Buttons/- = Button 6
Buttons/+ = Button 7
Buttons/Home = Button 8
Shake/X = Button 4
Shake/Y = Button 4
Shake/Z = Button 4
D-Pad/Up = Axis 6-
D-Pad/Down = Axis 6+
D-Pad/Left = Axis 7-
D-Pad/Right = Axis 7+
IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`

View file

@ -24,3 +24,7 @@ Nunchuk/Stick/Right = Axis 0+
Nunchuk/Shake/X = Axis 2+
Nunchuk/Shake/Y = Axis 2+
Nunchuk/Shake/Z = Axis 2+
IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`

View file

@ -14,3 +14,7 @@ D-Pad/Up = Axis 7-
D-Pad/Down = Axis 7+
D-Pad/Left = Axis 6-
D-Pad/Right = Axis 6+
IR/Up = `Axis 4-`
IR/Down = `Axis 4+`
IR/Left = `Axis 3-`
IR/Right = `Axis 3+`

View file

@ -59,7 +59,7 @@ PKG_CMAKE_OPTS_TARGET+=" -DENABLE_HEADLESS=ON \
-DENABLE_QT=OFF \
-DENCODE_FRAMEDUMPS=OFF \
-DENABLE_CLI_TOOL=OFF \
-DENABLE_X11=OFF"
-DENABLE_X11=ON"
makeinstall_target() {
@ -80,6 +80,9 @@ post_install() {
RK356*)
DOLPHIN_PLATFORM="drm"
;;
RK3588)
DOLPHIN_PLATFORM="x11"
;;
*)
DOLPHIN_PLATFORM="wayland"
;;

View file

@ -1,6 +1,6 @@
diff -rupN dolphin.orig/CMake/FindWaylandProtocols.cmake dolphin/CMake/FindWaylandProtocols.cmake
--- dolphin.orig/CMake/FindWaylandProtocols.cmake 1970-01-01 00:00:00.000000000 +0000
+++ dolphin/CMake/FindWaylandProtocols.cmake 2023-06-05 18:48:45.007819529 +0000
+++ dolphin/CMake/FindWaylandProtocols.cmake 2023-09-26 18:02:22.836042087 +0000
@@ -0,0 +1,28 @@
+# from https://github.com/glfw/glfw/blob/master/CMake/modules/FindWaylandProtocols.cmake
+
@ -32,7 +32,7 @@ diff -rupN dolphin.orig/CMake/FindWaylandProtocols.cmake dolphin/CMake/FindWayla
+set(WAYLAND_PROTOCOLS_VERSION ${WaylandProtocols_VERSION})
diff -rupN dolphin.orig/CMake/FindXKBCommon.cmake dolphin/CMake/FindXKBCommon.cmake
--- dolphin.orig/CMake/FindXKBCommon.cmake 1970-01-01 00:00:00.000000000 +0000
+++ dolphin/CMake/FindXKBCommon.cmake 2023-06-05 18:48:45.007819529 +0000
+++ dolphin/CMake/FindXKBCommon.cmake 2023-09-26 18:02:22.836042087 +0000
@@ -0,0 +1,33 @@
+# - Try to find XKBCommon
+# Once done, this will define
@ -68,9 +68,9 @@ diff -rupN dolphin.orig/CMake/FindXKBCommon.cmake dolphin/CMake/FindXKBCommon.cm
+
+mark_as_advanced(XKBCOMMON_LIBRARY XKBCOMMON_INCLUDE_DIR)
diff -rupN dolphin.orig/CMakeLists.txt dolphin/CMakeLists.txt
--- dolphin.orig/CMakeLists.txt 2023-06-01 19:24:09.874000574 +0000
+++ dolphin/CMakeLists.txt 2023-06-05 18:48:45.007819529 +0000
@@ -43,6 +43,7 @@ set(DOLPHIN_DEFAULT_UPDATE_TRACK "" CACH
--- dolphin.orig/CMakeLists.txt 2023-09-26 17:58:02.593990718 +0000
+++ dolphin/CMakeLists.txt 2023-09-26 18:02:22.836042087 +0000
@@ -47,6 +47,7 @@ set(DOLPHIN_DEFAULT_UPDATE_TRACK "" CACH
if(UNIX AND NOT APPLE AND NOT ANDROID)
option(ENABLE_X11 "Enables X11 Support" ON)
@ -78,7 +78,7 @@ diff -rupN dolphin.orig/CMakeLists.txt dolphin/CMakeLists.txt
endif()
if(NOT WIN32 AND NOT APPLE AND NOT HAIKU)
option(ENABLE_EGL "Enables EGL OpenGL Interface" ON)
@@ -549,6 +550,17 @@ if(ENABLE_X11)
@@ -543,6 +544,17 @@ if(ENABLE_X11)
endif()
endif()
@ -97,9 +97,9 @@ diff -rupN dolphin.orig/CMakeLists.txt dolphin/CMakeLists.txt
find_package(EGL)
if(EGL_FOUND)
diff -rupN dolphin.orig/Source/Core/Common/CMakeLists.txt dolphin/Source/Core/Common/CMakeLists.txt
--- dolphin.orig/Source/Core/Common/CMakeLists.txt 2023-06-01 19:24:09.918002004 +0000
+++ dolphin/Source/Core/Common/CMakeLists.txt 2023-06-05 18:48:45.487834884 +0000
@@ -255,11 +255,20 @@ if(ENABLE_EGL AND EGL_FOUND)
--- dolphin.orig/Source/Core/Common/CMakeLists.txt 2023-09-26 17:58:02.801995519 +0000
+++ dolphin/Source/Core/Common/CMakeLists.txt 2023-09-26 18:02:22.836042087 +0000
@@ -253,11 +253,20 @@ if(ENABLE_EGL AND EGL_FOUND)
GL/GLInterface/EGLAndroid.cpp
GL/GLInterface/EGLAndroid.h
)
@ -126,8 +126,8 @@ diff -rupN dolphin.orig/Source/Core/Common/CMakeLists.txt dolphin/Source/Core/Co
target_include_directories(common PRIVATE ${EGL_INCLUDE_DIRS})
target_link_libraries(common PUBLIC ${EGL_LIBRARIES})
diff -rupN dolphin.orig/Source/Core/Common/GL/GLContext.cpp dolphin/Source/Core/Common/GL/GLContext.cpp
--- dolphin.orig/Source/Core/Common/GL/GLContext.cpp 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLContext.cpp 2023-06-05 18:48:45.499835268 +0000
--- dolphin.orig/Source/Core/Common/GL/GLContext.cpp 2023-09-26 17:58:02.801995519 +0000
+++ dolphin/Source/Core/Common/GL/GLContext.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -25,6 +25,9 @@
#if defined(ANDROID)
#include "Common/GL/GLInterface/EGLAndroid.h"
@ -164,8 +164,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLContext.cpp dolphin/Source/Core/
if (wsi.type == WindowSystemType::Headless || wsi.type == WindowSystemType::FBDev)
context = std::make_unique<GLContextEGL>();
diff -rupN dolphin.orig/Source/Core/Common/GL/GLContext.h dolphin/Source/Core/Common/GL/GLContext.h
--- dolphin.orig/Source/Core/Common/GL/GLContext.h 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLContext.h 2023-06-05 18:48:45.503835396 +0000
--- dolphin.orig/Source/Core/Common/GL/GLContext.h 2023-09-26 17:58:02.801995519 +0000
+++ dolphin/Source/Core/Common/GL/GLContext.h 2023-09-26 18:02:22.836042087 +0000
@@ -36,8 +36,8 @@ public:
virtual bool MakeCurrent();
virtual bool ClearCurrent();
@ -178,8 +178,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLContext.h dolphin/Source/Core/Co
virtual void Swap();
virtual void SwapInterval(int interval);
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.h dolphin/Source/Core/Common/GL/GLInterface/AGL.h
--- dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.h 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/AGL.h 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.h 2023-09-26 17:58:02.801995519 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/AGL.h 2023-09-26 18:02:22.836042087 +0000
@@ -27,6 +27,8 @@ public:
bool MakeCurrent() override;
@ -190,8 +190,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.h dolphin/Source/C
void Update() override;
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.mm dolphin/Source/Core/Common/GL/GLInterface/AGL.mm
--- dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.mm 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/AGL.mm 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.mm 2023-09-26 17:58:02.801995519 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/AGL.mm 2023-09-26 18:02:22.836042087 +0000
@@ -144,7 +144,7 @@ bool GLContextAGL::ClearCurrent()
return true;
}
@ -202,8 +202,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.mm dolphin/Source/
if (!m_view)
return;
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.cpp dolphin/Source/Core/Common/GL/GLInterface/EGL.cpp
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.cpp 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGL.cpp 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.cpp 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGL.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -292,8 +292,8 @@ bool GLContextEGL::CreateWindowSurface()
{
if (!IsHeadless())
@ -267,8 +267,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.cpp dolphin/Source
+ m_backbuffer_height = static_cast<u32>(surface_height);
+}
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.h dolphin/Source/Core/Common/GL/GLInterface/EGL.h
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.h 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGL.h 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.h 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGL.h 2023-09-26 18:02:22.836042087 +0000
@@ -22,7 +22,8 @@ public:
bool MakeCurrent() override;
bool ClearCurrent() override;
@ -294,7 +294,7 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.h dolphin/Source/C
std::vector<int> m_attribs;
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.cpp dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.cpp
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.cpp 1970-01-01 00:00:00.000000000 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.cpp 2023-06-05 18:48:45.507835524 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -0,0 +1,36 @@
+// Copyright 2019 Dolphin Emulator Project
+// Licensed under GPLv2+
@ -334,7 +334,7 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.cpp dolphin
+}
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.h dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.h
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.h 1970-01-01 00:00:00.000000000 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.h 2023-06-05 18:48:45.507835524 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.h 2023-09-26 18:02:22.836042087 +0000
@@ -0,0 +1,19 @@
+// Copyright 2019 Dolphin Emulator Project
+// Licensed under GPLv2+
@ -356,8 +356,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.h dolphin/S
+ EGLNativeWindowType GetEGLNativeWindow(EGLConfig config) override;
+};
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.cpp dolphin/Source/Core/Common/GL/GLInterface/EGLX11.cpp
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.cpp 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLX11.cpp 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.cpp 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLX11.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -11,7 +11,7 @@ GLContextEGLX11::~GLContextEGLX11()
m_render_window.reset();
}
@ -368,8 +368,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.cpp dolphin/Sou
m_render_window->UpdateDimensions();
m_backbuffer_width = m_render_window->GetWidth();
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.h dolphin/Source/Core/Common/GL/GLInterface/EGLX11.h
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.h 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLX11.h 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.h 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLX11.h 2023-09-26 18:02:22.836042087 +0000
@@ -13,7 +13,7 @@ class GLContextEGLX11 final : public GLC
public:
~GLContextEGLX11() override;
@ -380,8 +380,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.h dolphin/Sourc
protected:
EGLDisplay OpenEGLDisplay() override;
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.cpp dolphin/Source/Core/Common/GL/GLInterface/GLX.cpp
--- dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.cpp 2023-06-01 19:24:09.918002004 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/GLX.cpp 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.cpp 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/GLX.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -310,7 +310,7 @@ bool GLContextGLX::ClearCurrent()
return glXMakeCurrent(m_display, None, nullptr);
}
@ -392,8 +392,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.cpp dolphin/Source
m_render_window->UpdateDimensions();
m_backbuffer_width = m_render_window->GetWidth();
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.h dolphin/Source/Core/Common/GL/GLInterface/GLX.h
--- dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.h 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/GLX.h 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.h 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/GLX.h 2023-09-26 18:02:22.836042087 +0000
@@ -24,7 +24,7 @@ public:
bool MakeCurrent() override;
bool ClearCurrent() override;
@ -404,8 +404,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.h dolphin/Source/C
void SwapInterval(int Interval) override;
void Swap() override;
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.cpp dolphin/Source/Core/Common/GL/GLInterface/WGL.cpp
--- dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.cpp 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/WGL.cpp 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.cpp 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/WGL.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -480,7 +480,7 @@ bool GLContextWGL::ClearCurrent()
}
@ -416,8 +416,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.cpp dolphin/Source
RECT rcWindow;
GetClientRect(m_window_handle, &rcWindow);
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.h dolphin/Source/Core/Common/GL/GLInterface/WGL.h
--- dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.h 2023-06-01 19:23:58.513631223 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/WGL.h 2023-06-05 18:48:45.507835524 +0000
--- dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.h 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/GL/GLInterface/WGL.h 2023-09-26 18:02:22.836042087 +0000
@@ -19,7 +19,7 @@ public:
bool MakeCurrent() override;
bool ClearCurrent() override;
@ -428,8 +428,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.h dolphin/Source/C
void Swap() override;
void SwapInterval(int interval) override;
diff -rupN dolphin.orig/Source/Core/Common/WindowSystemInfo.h dolphin/Source/Core/Common/WindowSystemInfo.h
--- dolphin.orig/Source/Core/Common/WindowSystemInfo.h 2023-06-01 19:23:58.517631353 +0000
+++ dolphin/Source/Core/Common/WindowSystemInfo.h 2023-06-05 18:48:45.499835268 +0000
--- dolphin.orig/Source/Core/Common/WindowSystemInfo.h 2023-09-26 17:58:02.805995611 +0000
+++ dolphin/Source/Core/Common/WindowSystemInfo.h 2023-09-26 18:02:22.836042087 +0000
@@ -40,7 +40,11 @@ struct WindowSystemInfo
// This is kept seperate as input may require a different handle to rendering, and
// during video backend startup the surface pointer may change (MoltenVK).
@ -444,9 +444,9 @@ diff -rupN dolphin.orig/Source/Core/Common/WindowSystemInfo.h dolphin/Source/Cor
float render_surface_scale = 1.0f;
};
diff -rupN dolphin.orig/Source/Core/Core/Core.cpp dolphin/Source/Core/Core/Core.cpp
--- dolphin.orig/Source/Core/Core/Core.cpp 2023-06-01 19:24:09.922002134 +0000
+++ dolphin/Source/Core/Core/Core.cpp 2023-06-05 18:48:45.511835652 +0000
@@ -478,6 +478,8 @@ static void EmuThread(std::unique_ptr<Bo
--- dolphin.orig/Source/Core/Core/Core.cpp 2023-09-26 17:58:02.809995703 +0000
+++ dolphin/Source/Core/Core/Core.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -474,6 +474,8 @@ static void EmuThread(std::unique_ptr<Bo
// is relative to the render window, instead of the main window.
ASSERT(g_controller_interface.IsInit());
g_controller_interface.ChangeWindow(wsi.render_window);
@ -456,8 +456,8 @@ diff -rupN dolphin.orig/Source/Core/Core/Core.cpp dolphin/Source/Core/Core/Core.
Pad::LoadConfig();
Pad::LoadGBAConfig();
diff -rupN dolphin.orig/Source/Core/Core/HW/GCPadEmu.cpp dolphin/Source/Core/Core/HW/GCPadEmu.cpp
--- dolphin.orig/Source/Core/Core/HW/GCPadEmu.cpp 2023-06-01 19:24:09.926002264 +0000
+++ dolphin/Source/Core/Core/HW/GCPadEmu.cpp 2023-06-05 18:48:45.531836292 +0000
--- dolphin.orig/Source/Core/Core/HW/GCPadEmu.cpp 2023-09-26 17:58:02.817995888 +0000
+++ dolphin/Source/Core/Core/HW/GCPadEmu.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -24,6 +24,7 @@ static const u16 button_bitmasks[] = {
PAD_BUTTON_X,
PAD_BUTTON_Y,
@ -477,8 +477,8 @@ diff -rupN dolphin.orig/Source/Core/Core/HW/GCPadEmu.cpp dolphin/Source/Core/Cor
groups.emplace_back(m_main_stick = new ControllerEmu::OctagonAnalogStick(
MAIN_STICK_GROUP, _trans("Control Stick"), MAIN_STICK_GATE_RADIUS));
diff -rupN dolphin.orig/Source/Core/Core/HW/GCPadEmu.h dolphin/Source/Core/Core/HW/GCPadEmu.h
--- dolphin.orig/Source/Core/Core/HW/GCPadEmu.h 2023-06-01 19:23:58.529631743 +0000
+++ dolphin/Source/Core/Core/HW/GCPadEmu.h 2023-06-05 18:48:45.531836292 +0000
--- dolphin.orig/Source/Core/Core/HW/GCPadEmu.h 2023-09-26 17:58:02.817995888 +0000
+++ dolphin/Source/Core/Core/HW/GCPadEmu.h 2023-09-26 18:02:22.836042087 +0000
@@ -65,6 +65,7 @@ public:
static constexpr const char* X_BUTTON = "X";
static constexpr const char* Y_BUTTON = "Y";
@ -488,9 +488,9 @@ diff -rupN dolphin.orig/Source/Core/Core/HW/GCPadEmu.h dolphin/Source/Core/Core/
// i18n: The left trigger button (labeled L on real controllers)
diff -rupN dolphin.orig/Source/Core/DolphinLib.props dolphin/Source/Core/DolphinLib.props
--- dolphin.orig/Source/Core/DolphinLib.props 2023-06-01 19:24:09.942002785 +0000
+++ dolphin/Source/Core/DolphinLib.props 2023-06-05 18:48:45.483834756 +0000
@@ -1219,6 +1219,7 @@
--- dolphin.orig/Source/Core/DolphinLib.props 2023-09-26 17:58:02.829996165 +0000
+++ dolphin/Source/Core/DolphinLib.props 2023-09-26 18:02:22.836042087 +0000
@@ -1207,6 +1207,7 @@
<ClCompile Include="VideoBackends\Vulkan\VKPerfQuery.cpp" />
<ClCompile Include="VideoBackends\Vulkan\VKPipeline.cpp" />
<ClCompile Include="VideoBackends\Vulkan\VKRenderer.cpp" />
@ -499,8 +499,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinLib.props dolphin/Source/Core/Dolphin
<ClCompile Include="VideoBackends\Vulkan\VKStreamBuffer.cpp" />
<ClCompile Include="VideoBackends\Vulkan\VKSwapChain.cpp" />
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/CMakeLists.txt dolphin/Source/Core/DolphinNoGUI/CMakeLists.txt
--- dolphin.orig/Source/Core/DolphinNoGUI/CMakeLists.txt 2023-06-01 19:24:09.942002785 +0000
+++ dolphin/Source/Core/DolphinNoGUI/CMakeLists.txt 2023-06-05 18:48:45.571837571 +0000
--- dolphin.orig/Source/Core/DolphinNoGUI/CMakeLists.txt 2023-09-26 17:58:02.833996257 +0000
+++ dolphin/Source/Core/DolphinNoGUI/CMakeLists.txt 2023-09-26 18:02:22.836042087 +0000
@@ -17,6 +17,22 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux"
target_sources(dolphin-nogui PRIVATE PlatformFBDev.cpp)
endif()
@ -525,8 +525,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/CMakeLists.txt dolphin/Source/C
target_link_libraries(dolphin-nogui
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/MainNoGUI.cpp dolphin/Source/Core/DolphinNoGUI/MainNoGUI.cpp
--- dolphin.orig/Source/Core/DolphinNoGUI/MainNoGUI.cpp 2023-06-01 19:24:09.942002785 +0000
+++ dolphin/Source/Core/DolphinNoGUI/MainNoGUI.cpp 2023-06-05 18:48:45.571837571 +0000
--- dolphin.orig/Source/Core/DolphinNoGUI/MainNoGUI.cpp 2023-09-26 17:58:02.833996257 +0000
+++ dolphin/Source/Core/DolphinNoGUI/MainNoGUI.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -155,6 +155,11 @@ static std::unique_ptr<Platform> GetPlat
{
std::string platform_name = static_cast<const char*>(options.get("platform"));
@ -551,8 +551,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/MainNoGUI.cpp dolphin/Source/Co
optparse::Values& options = CommandLineParse::ParseArguments(parser.get(), argc, argv);
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/Platform.h dolphin/Source/Core/DolphinNoGUI/Platform.h
--- dolphin.orig/Source/Core/DolphinNoGUI/Platform.h 2023-06-01 19:23:58.553632524 +0000
+++ dolphin/Source/Core/DolphinNoGUI/Platform.h 2023-06-05 18:48:45.571837571 +0000
--- dolphin.orig/Source/Core/DolphinNoGUI/Platform.h 2023-09-26 17:58:02.833996257 +0000
+++ dolphin/Source/Core/DolphinNoGUI/Platform.h 2023-09-26 18:02:22.836042087 +0000
@@ -35,6 +35,10 @@ public:
static std::unique_ptr<Platform> CreateX11Platform();
#endif
@ -566,8 +566,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/Platform.h dolphin/Source/Core/
#endif
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp dolphin/Source/Core/DolphinNoGUI/PlatformWayland.cpp
--- dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp 1970-01-01 00:00:00.000000000 +0000
+++ dolphin/Source/Core/DolphinNoGUI/PlatformWayland.cpp 2023-06-07 14:37:14.927874203 +0000
@@ -0,0 +1,371 @@
+++ dolphin/Source/Core/DolphinNoGUI/PlatformWayland.cpp 2023-09-26 18:27:27.334792936 +0000
@@ -0,0 +1,364 @@
+// Copyright 2018 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
@ -791,13 +791,6 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp dolphin/Sou
+ xdg_toplevel_set_title(m_xdg_toplevel, string.c_str());
+}
+
+auto ShowEmulationSpeed = []() {
+ const float emulation_speed = Config::Get(Config::MAIN_EMULATION_SPEED);
+ OSD::AddMessage(emulation_speed <= 0 ?
+ "Emulation Speed: Unlimited" :
+ fmt::format("Emulation Speed: {}%", std::lround(emulation_speed * 100.f)));
+};
+
+void PlatformWayland::MainLoop()
+{
+ while (IsRunning())
@ -899,13 +892,13 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp dolphin/Sou
+ auto speed = Config::Get(Config::MAIN_EMULATION_SPEED) + 1.0;
+ speed = (speed >= 0.95 && speed <= 1.05) ? 1.0 : speed;
+ Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
+ ShowEmulationSpeed();
+ OSD::AddMessage("Fast Forward: ON");
+ fforward = 1;
+ } else {
+ auto speed = Config::Get(Config::MAIN_EMULATION_SPEED) - 1.0;
+ speed = (speed <= 0 || (speed >= 0.95 && speed <= 1.05)) ? 1.0 : speed;
+ Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
+ ShowEmulationSpeed();
+ OSD::AddMessage("Fast Forward: OFF");
+ fforward = 0;
+ }
+ hotkey = 0;
@ -940,8 +933,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp dolphin/Sou
+ return std::make_unique<PlatformWayland>();
+}
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformX11.cpp dolphin/Source/Core/DolphinNoGUI/PlatformX11.cpp
--- dolphin.orig/Source/Core/DolphinNoGUI/PlatformX11.cpp 2023-06-01 19:24:09.942002785 +0000
+++ dolphin/Source/Core/DolphinNoGUI/PlatformX11.cpp 2023-06-05 18:48:45.571837571 +0000
--- dolphin.orig/Source/Core/DolphinNoGUI/PlatformX11.cpp 2023-09-26 17:58:02.833996257 +0000
+++ dolphin/Source/Core/DolphinNoGUI/PlatformX11.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -57,8 +57,8 @@ private:
#endif
int m_window_x = Config::Get(Config::MAIN_RENDER_WINDOW_XPOS);
@ -987,8 +980,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformX11.cpp dolphin/Source/
break;
}
diff -rupN dolphin.orig/Source/Core/InputCommon/GCPadStatus.h dolphin/Source/Core/InputCommon/GCPadStatus.h
--- dolphin.orig/Source/Core/InputCommon/GCPadStatus.h 2023-06-01 19:23:58.569633044 +0000
+++ dolphin/Source/Core/InputCommon/GCPadStatus.h 2023-06-05 18:48:45.595838339 +0000
--- dolphin.orig/Source/Core/InputCommon/GCPadStatus.h 2023-09-26 17:58:02.845996536 +0000
+++ dolphin/Source/Core/InputCommon/GCPadStatus.h 2023-09-26 18:02:22.836042087 +0000
@@ -26,6 +26,7 @@ enum PadButton
PAD_BUTTON_X = 0x0400,
PAD_BUTTON_Y = 0x0800,
@ -998,9 +991,101 @@ diff -rupN dolphin.orig/Source/Core/InputCommon/GCPadStatus.h dolphin/Source/Cor
struct GCPadStatus
diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp dolphin/Source/Core/VideoBackends/OGL/OGLRender.cpp
--- dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp 2023-06-01 19:24:09.954003175 +0000
+++ dolphin/Source/Core/VideoBackends/OGL/OGLRender.cpp 2023-06-05 18:48:45.615838979 +0000
@@ -1079,7 +1079,7 @@ void Renderer::CheckForSurfaceChange()
--- dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/OGL/OGLRender.cpp 2023-09-26 21:41:39.568275473 +0000
@@ -471,11 +471,7 @@ Renderer::Renderer(std::unique_ptr<GLCon
g_ogl_config.bSupportsDebug =
GLExtensions::Supports("GL_KHR_debug") || GLExtensions::Supports("GL_ARB_debug_output");
g_ogl_config.bSupportsTextureStorage = GLExtensions::Supports("GL_ARB_texture_storage");
- g_ogl_config.bSupports3DTextureStorageMultisample =
- GLExtensions::Supports("GL_ARB_texture_storage_multisample") ||
- GLExtensions::Supports("GL_OES_texture_storage_multisample_2d_array");
- g_ogl_config.bSupports2DTextureStorageMultisample =
- GLExtensions::Supports("GL_ARB_texture_storage_multisample");
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageNone;
g_ogl_config.bSupportsImageLoadStore = GLExtensions::Supports("GL_ARB_shader_image_load_store");
g_ogl_config.bSupportsConservativeDepth = GLExtensions::Supports("GL_ARB_conservative_depth");
g_ogl_config.bSupportsAniso = GLExtensions::Supports("GL_EXT_texture_filter_anisotropic");
@@ -506,9 +502,10 @@ Renderer::Renderer(std::unique_ptr<GLCon
if (m_main_gl_context->IsGLES())
{
- g_ogl_config.SupportedESPointSize = GLExtensions::Supports("GL_OES_geometry_point_size") ? 1 :
- GLExtensions::Supports("GL_EXT_geometry_point_size") ? 2 :
- 0;
+ g_ogl_config.SupportedESPointSize =
+ GLExtensions::Supports("GL_OES_geometry_point_size") ? EsPointSizeType::PointSizeOes :
+ GLExtensions::Supports("GL_EXT_geometry_point_size") ? EsPointSizeType::PointSizeExt :
+ EsPointSizeType::PointSizeNone;
g_ogl_config.SupportedESTextureBuffer =
GLExtensions::Supports("VERSION_GLES_3_2") ? EsTexbufType::TexbufCore :
GLExtensions::Supports("GL_OES_texture_buffer") ? EsTexbufType::TexbufOes :
@@ -548,21 +545,16 @@ Renderer::Renderer(std::unique_ptr<GLCon
g_Config.backend_info.bSupportsGeometryShaders = g_ogl_config.bSupportsAEP;
g_Config.backend_info.bSupportsComputeShaders = true;
g_Config.backend_info.bSupportsGSInstancing =
- g_Config.backend_info.bSupportsGeometryShaders && g_ogl_config.SupportedESPointSize > 0;
+ g_Config.backend_info.bSupportsGeometryShaders &&
+ g_ogl_config.SupportedESPointSize != EsPointSizeType::PointSizeNone;
g_Config.backend_info.bSupportsSSAA = g_ogl_config.bSupportsAEP;
g_Config.backend_info.bSupportsFragmentStoresAndAtomics = true;
g_ogl_config.bSupportsMSAA = true;
g_ogl_config.bSupportsTextureStorage = true;
- g_ogl_config.bSupports2DTextureStorageMultisample = true;
+ if (GLExtensions::Supports("GL_OES_texture_storage_multisample_2d_array"))
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageOes;
g_Config.backend_info.bSupportsBitfield = true;
g_Config.backend_info.bSupportsDynamicSamplerIndexing = g_ogl_config.bSupportsAEP;
- if (g_ActiveConfig.stereo_mode != StereoMode::Off && g_ActiveConfig.iMultisamples > 1 &&
- !g_ogl_config.bSupports3DTextureStorageMultisample)
- {
- // GLES 3.1 can't support stereo rendering and MSAA
- OSD::AddMessage("MSAA Stereo rendering isn't supported by your GPU.", 10000);
- Config::SetCurrent(Config::GFX_MSAA, UINT32_C(1));
- }
}
else
{
@@ -572,7 +564,8 @@ Renderer::Renderer(std::unique_ptr<GLCon
g_ogl_config.bSupportsImageLoadStore = true;
g_Config.backend_info.bSupportsGeometryShaders = true;
g_Config.backend_info.bSupportsComputeShaders = true;
- g_Config.backend_info.bSupportsGSInstancing = g_ogl_config.SupportedESPointSize > 0;
+ g_Config.backend_info.bSupportsGSInstancing =
+ g_ogl_config.SupportedESPointSize != EsPointSizeType::PointSizeNone;
g_Config.backend_info.bSupportsPaletteConversion = true;
g_Config.backend_info.bSupportsSSAA = true;
g_Config.backend_info.bSupportsFragmentStoresAndAtomics = true;
@@ -581,8 +574,7 @@ Renderer::Renderer(std::unique_ptr<GLCon
g_ogl_config.bSupportsDebug = true;
g_ogl_config.bSupportsMSAA = true;
g_ogl_config.bSupportsTextureStorage = true;
- g_ogl_config.bSupports2DTextureStorageMultisample = true;
- g_ogl_config.bSupports3DTextureStorageMultisample = true;
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageCore;
g_Config.backend_info.bSupportsBitfield = true;
g_Config.backend_info.bSupportsDynamicSamplerIndexing = true;
g_Config.backend_info.bSupportsSettingObjectNames = true;
@@ -590,6 +582,9 @@ Renderer::Renderer(std::unique_ptr<GLCon
}
else
{
+ if (GLExtensions::Supports("GL_ARB_texture_storage_multisample"))
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageCore;
+
if (GLExtensions::Version() < 300)
{
PanicAlertFmtT("GPU: OGL ERROR: Need at least GLSL 1.30\n"
@@ -628,7 +623,7 @@ Renderer::Renderer(std::unique_ptr<GLCon
{
// TODO: We should really parse the GL_SHADING_LANGUAGE_VERSION token.
g_ogl_config.eSupportedGLSLVersion = Glsl430;
- g_ogl_config.bSupportsTextureStorage = true;
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageCore;
g_ogl_config.bSupportsImageLoadStore = true;
g_Config.backend_info.bSupportsSSAA = true;
g_Config.backend_info.bSupportsSettingObjectNames = true;
@@ -1079,7 +1074,7 @@ void Renderer::CheckForSurfaceChange()
if (!m_surface_changed.TestAndClear())
return;
@ -1009,7 +1094,7 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp dolphin/Sour
m_new_surface_handle = nullptr;
// With a surface change, the window likely has new dimensions.
@@ -1093,7 +1093,7 @@ void Renderer::CheckForSurfaceResize()
@@ -1093,7 +1088,7 @@ void Renderer::CheckForSurfaceResize()
if (!m_surface_resized.TestAndClear())
return;
@ -1018,9 +1103,139 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp dolphin/Sour
m_backbuffer_width = m_main_gl_context->GetBackBufferWidth();
m_backbuffer_height = m_main_gl_context->GetBackBufferHeight();
m_system_framebuffer->UpdateDimensions(m_backbuffer_width, m_backbuffer_height);
diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.h dolphin/Source/Core/VideoBackends/OGL/OGLRender.h
--- dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/OGL/OGLRender.h 2023-09-26 21:32:17.039048706 +0000
@@ -31,6 +31,14 @@ enum GlslVersion
GlslEs310, // GLES 3.1
GlslEs320, // GLES 3.2
};
+
+enum class EsPointSizeType
+{
+ PointSizeNone,
+ PointSizeOes,
+ PointSizeExt,
+};
+
enum class EsTexbufType
{
TexbufNone,
@@ -46,6 +54,13 @@ enum class EsFbFetchType
FbFetchArm,
};
+enum class MultisampleTexStorageType
+{
+ TexStorageNone,
+ TexStorageCore,
+ TexStorageOes,
+};
+
// ogl-only config, so not in VideoConfig.h
struct VideoConfig
{
@@ -60,11 +75,10 @@ struct VideoConfig
bool bSupportsAEP;
bool bSupportsDebug;
bool bSupportsCopySubImage;
- u8 SupportedESPointSize;
+ EsPointSizeType SupportedESPointSize;
EsTexbufType SupportedESTextureBuffer;
bool bSupportsTextureStorage;
- bool bSupports2DTextureStorageMultisample;
- bool bSupports3DTextureStorageMultisample;
+ MultisampleTexStorageType SupportedMultisampleTexStorage;
bool bSupportsConservativeDepth;
bool bSupportsImageLoadStore;
bool bSupportsAniso;
diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLTexture.cpp dolphin/Source/Core/VideoBackends/OGL/OGLTexture.cpp
--- dolphin.orig/Source/Core/VideoBackends/OGL/OGLTexture.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/OGL/OGLTexture.cpp 2023-09-26 21:34:37.398249032 +0000
@@ -128,12 +128,18 @@ OGLTexture::OGLTexture(const TextureConf
GLenum gl_internal_format = GetGLInternalFormatForTextureFormat(m_config.format, true);
if (tex_config.IsMultisampled())
{
- if (g_ogl_config.bSupportsTextureStorage)
+ ASSERT(g_ogl_config.bSupportsMSAA);
+ if (g_ogl_config.SupportedMultisampleTexStorage != MultisampleTexStorageType::TexStorageNone)
+ {
glTexStorage3DMultisample(target, tex_config.samples, gl_internal_format, m_config.width,
m_config.height, m_config.layers, GL_FALSE);
+ }
else
+ {
+ ASSERT(!g_ogl_config.bIsES);
glTexImage3DMultisample(target, tex_config.samples, gl_internal_format, m_config.width,
m_config.height, m_config.layers, GL_FALSE);
+ }
}
else if (g_ogl_config.bSupportsTextureStorage)
{
diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp dolphin/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
--- dolphin.orig/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp 2023-09-26 21:37:11.705777665 +0000
@@ -661,12 +661,13 @@ void ProgramShaderCache::CreateHeader()
std::string SupportedESTextureBuffer;
switch (g_ogl_config.SupportedESPointSize)
{
- case 1:
+ case EsPointSizeType::PointSizeOes:
SupportedESPointSize = "#extension GL_OES_geometry_point_size : enable";
break;
- case 2:
+ case EsPointSizeType::PointSizeExt:
SupportedESPointSize = "#extension GL_EXT_geometry_point_size : enable";
break;
+ case EsPointSizeType::PointSizeNone:
default:
SupportedESPointSize = "";
break;
@@ -718,6 +719,13 @@ void ProgramShaderCache::CreateHeader()
break;
}
+ // The sampler2DMSArray keyword is reserved in GLSL ES 3.0 and 3.1, but is available in 3.2 and
+ // with GL_OES_texture_storage_multisample_2d_array for 3.1.
+ // See https://bugs.dolphin-emu.org/issues/13198.
+ const bool use_multisample_2d_array_precision =
+ v >= GlslEs320 ||
+ g_ogl_config.SupportedMultisampleTexStorage != MultisampleTexStorageType::TexStorageNone;
+
std::string shader_shuffle_string;
if (g_ogl_config.bSupportsShaderThreadShuffleNV)
{
@@ -762,6 +770,7 @@ void ProgramShaderCache::CreateHeader()
"{}\n" // shader thread shuffle
"{}\n" // derivative control
"{}\n" // query levels
+ "{}\n" // OES multisample texture storage
// Precision defines for GLSL ES
"{}\n"
@@ -847,12 +856,18 @@ void ProgramShaderCache::CreateHeader()
g_ActiveConfig.backend_info.bSupportsTextureQueryLevels ?
"#extension GL_ARB_texture_query_levels : enable" :
"",
+ // Note: GL_ARB_texture_storage_multisample doesn't have an #extension, as it doesn't
+ // need to change GLSL, but on GLES 3.1 sampler2DMSArray is a reserved keyword unless
+ // the extension is enabled. Thus, we don't need to check TexStorageCore/have an ARB version.
+ g_ogl_config.SupportedMultisampleTexStorage == MultisampleTexStorageType::TexStorageOes ?
+ "#extension GL_OES_texture_storage_multisample_2d_array : enable" :
+ "",
is_glsles ? "precision highp float;" : "", is_glsles ? "precision highp int;" : "",
is_glsles ? "precision highp sampler2DArray;" : "",
(is_glsles && g_ActiveConfig.backend_info.bSupportsPaletteConversion) ?
"precision highp usamplerBuffer;" :
"",
- v > GlslEs300 ? "precision highp sampler2DMSArray;" : "",
+ use_multisample_2d_array_precision ? "precision highp sampler2DMSArray;" : "",
v >= GlslEs310 ? "precision highp image2DArray;" : "");
}
diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.cpp dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.cpp
--- dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.cpp 2023-06-01 19:23:58.577633304 +0000
+++ dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -32,6 +32,16 @@ bool SWOGLWindow::IsHeadless() const
return m_gl_context->IsHeadless();
}
@ -1058,8 +1273,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.cpp dolph
GLsizei glWidth = (GLsizei)m_gl_context->GetBackBufferWidth();
GLsizei glHeight = (GLsizei)m_gl_context->GetBackBufferHeight();
diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.h dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.h
--- dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.h 2023-06-01 19:23:58.577633304 +0000
+++ dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.h 2023-09-26 18:02:22.836042087 +0000
@@ -20,6 +20,10 @@ public:
GLContext* GetContext() const { return m_gl_context.get(); }
bool IsHeadless() const;
@ -1072,8 +1287,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.h dolphin
void ShowImage(const AbstractTexture* image, const MathUtil::Rectangle<int>& xfb_region);
diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.cpp dolphin/Source/Core/VideoBackends/Software/SWRenderer.cpp
--- dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.cpp 2023-06-01 19:24:09.954003175 +0000
+++ dolphin/Source/Core/VideoBackends/Software/SWRenderer.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Software/SWRenderer.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -60,17 +60,17 @@ SWRenderer::CreateFramebuffer(AbstractTe
static_cast<SWTexture*>(depth_attachment));
}
@ -1128,8 +1343,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.cpp dolphi
{
u32 value = 0;
diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.h dolphin/Source/Core/VideoBackends/Software/SWRenderer.h
--- dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.h 2023-06-01 19:24:09.954003175 +0000
+++ dolphin/Source/Core/VideoBackends/Software/SWRenderer.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Software/SWRenderer.h 2023-09-26 18:02:22.836042087 +0000
@@ -29,7 +29,7 @@ public:
std::unique_ptr<AbstractFramebuffer>
CreateFramebuffer(AbstractTexture* color_attachment, AbstractTexture* depth_attachment) override;
@ -1149,8 +1364,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.h dolphin/
};
} // namespace SW
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CMakeLists.txt dolphin/Source/Core/VideoBackends/Vulkan/CMakeLists.txt
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CMakeLists.txt 2023-06-01 19:24:09.954003175 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/CMakeLists.txt 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CMakeLists.txt 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/CMakeLists.txt 2023-09-26 18:02:22.836042087 +0000
@@ -35,6 +35,8 @@ add_library(videovulkan
VulkanContext.h
VulkanLoader.cpp
@ -1161,8 +1376,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CMakeLists.txt dolphin/
target_link_libraries(videovulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp 2023-06-01 19:24:09.954003175 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -10,24 +10,24 @@
#include "Common/MsgHandler.h"
#include "Common/Thread.h"
@ -1562,8 +1777,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cp
-std::unique_ptr<CommandBufferManager> g_command_buffer_mgr;
} // namespace Vulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h 2023-06-01 19:24:09.954003175 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h 2023-09-26 18:02:22.836042087 +0000
@@ -22,10 +22,12 @@
namespace Vulkan
@ -1703,8 +1918,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h
} // namespace Vulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/Constants.h dolphin/Source/Core/VideoBackends/Vulkan/Constants.h
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/Constants.h 2023-06-01 19:24:09.954003175 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/Constants.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/Constants.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/Constants.h 2023-09-26 18:02:22.836042087 +0000
@@ -12,7 +12,7 @@
namespace Vulkan
{
@ -1715,8 +1930,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/Constants.h dolphin/Sou
// Number of frames in flight, will be used to decide how many descriptor pools are used
constexpr size_t NUM_FRAMES_IN_FLIGHT = 2;
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp 2023-06-01 19:24:09.954003175 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -389,6 +389,8 @@ VkSampler ObjectCache::GetSampler(const
VkRenderPass ObjectCache::GetRenderPass(VkFormat color_format, VkFormat depth_format,
u32 multisamples, VkAttachmentLoadOp load_op)
@ -1736,8 +1951,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp dolphin
vkDestroyRenderPass(g_vulkan_context->GetDevice(), it.second, nullptr);
m_render_pass_cache.clear();
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.h dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.h
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.h 2023-06-01 19:23:58.577633304 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.h 2023-09-26 18:02:22.836042087 +0000
@@ -7,6 +7,7 @@
#include <cstddef>
#include <map>
@ -1755,8 +1970,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.h dolphin/S
std::map<RenderPassCacheKey, VkRenderPass> m_render_pass_cache;
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp dolphin/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp 2023-06-01 19:23:58.577633304 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -8,6 +8,7 @@
#include "Common/Assert.h"
@ -1778,8 +1993,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp dolph
void StagingBuffer::BufferMemoryBarrier(VkCommandBuffer command_buffer, VkBuffer buffer,
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.cpp dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -16,59 +16,93 @@
namespace Vulkan
@ -2179,8 +2394,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.cpp dolphi
g_object_cache->GetPipelineLayout(PIPELINE_LAYOUT_COMPUTE), 0, 1,
&m_compute_descriptor_set, 1, &m_bindings.utility_ubo_offset);
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.h dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.h
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.h 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.h 2023-09-26 18:02:22.836042087 +0000
@@ -13,28 +13,24 @@
namespace Vulkan
@ -2256,8 +2471,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.h dolphin/
};
} // namespace Vulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -12,6 +12,7 @@
#include "VideoBackends/Vulkan/StagingBuffer.h"
#include "VideoBackends/Vulkan/StateTracker.h"
@ -2395,8 +2610,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp dolph
bool VKBoundingBox::CreateGPUBuffer()
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKMain.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKMain.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKMain.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKMain.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKMain.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKMain.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -18,6 +18,7 @@
#include "VideoBackends/Vulkan/VKVertexManager.h"
#include "VideoBackends/Vulkan/VulkanContext.h"
@ -2481,8 +2696,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKMain.cpp dolphin/Sour
ShutdownShared();
UnloadVulkanLibrary();
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -11,6 +11,7 @@
#include "Common/Logging/Log.h"
#include "Common/MsgHandler.h"
@ -2602,8 +2817,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp dolphin
Renderer::GetInstance()->ExecuteCommandBuffer(true, blocking);
}
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -31,6 +31,7 @@
#include "VideoBackends/Vulkan/VKVertexFormat.h"
#include "VideoBackends/Vulkan/VulkanContext.h"
@ -3325,7 +3540,7 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp dolphin/
} // namespace Vulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp 1970-01-01 00:00:00.000000000 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp 2023-06-05 18:48:45.615838979 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -0,0 +1,155 @@
+// Copyright 2022 Dolphin Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
@ -3484,7 +3699,7 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp dolphin
+} // namespace Vulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.h dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.h
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.h 1970-01-01 00:00:00.000000000 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.h 2023-06-05 18:48:45.615838979 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.h 2023-09-26 18:02:22.836042087 +0000
@@ -0,0 +1,160 @@
+// Copyright 2022 Dolphin Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
@ -3647,8 +3862,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.h dolphin/S
+extern std::unique_ptr<Scheduler> g_scheduler;
+} // namespace Vulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp 2023-06-01 19:23:58.577633304 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -12,6 +12,7 @@
#include "Common/MsgHandler.h"
@ -3722,8 +3937,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp dolp
m_current_offset == iter->second ? m_tracked_fences.end() : ++iter);
m_current_offset = new_offset;
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -13,9 +13,9 @@
#include "VideoBackends/Vulkan/CommandBufferManager.h"
@ -3888,8 +4103,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp dolphin
if (m_surface == VK_NULL_HANDLE)
return false;
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.h dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.h
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.h 2023-06-01 19:23:58.577633304 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.h 2023-09-26 18:02:22.836042087 +0000
@@ -3,6 +3,7 @@
#pragma once
@ -3943,8 +4158,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.h dolphin/S
u32 m_height = 0;
u32 m_layers = 0;
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.cpp 2023-06-01 19:44:08.124503603 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -21,6 +21,7 @@
#include "VideoBackends/Vulkan/VKStreamBuffer.h"
#include "VideoBackends/Vulkan/VulkanContext.h"
@ -4452,8 +4667,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.cpp dolphin/S
}
} // namespace Vulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.h dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.h
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.h 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.h 2023-09-26 18:02:22.836042087 +0000
@@ -67,8 +67,8 @@ public:
// irrelevant and will not be loaded.
void OverrideImageLayout(VkImageLayout new_layout);
@ -4466,8 +4681,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.h dolphin/Sou
private:
bool CreateView(VkImageViewType type);
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -15,6 +15,7 @@
#include "VideoBackends/Vulkan/CommandBufferManager.h"
#include "VideoBackends/Vulkan/StateTracker.h"
@ -4662,8 +4877,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp dol
}
} // namespace Vulkan
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp dolphin/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -274,6 +274,13 @@ bool VulkanContext::SelectInstanceExtens
return false;
}
@ -4679,8 +4894,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp dolph
if (wstype == WindowSystemType::Android &&
!AddExtension(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, true))
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl dolphin/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl 2023-06-01 19:23:58.577633304 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl 2023-09-26 18:02:22.836042087 +0000
@@ -49,6 +49,11 @@ VULKAN_INSTANCE_ENTRY_POINT(vkCreateXlib
VULKAN_INSTANCE_ENTRY_POINT(vkGetPhysicalDeviceXlibPresentationSupportKHR, false)
#endif
@ -4694,8 +4909,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl d
VULKAN_INSTANCE_ENTRY_POINT(vkCreateAndroidSurfaceKHR, false)
#endif
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanLoader.h dolphin/Source/Core/VideoBackends/Vulkan/VulkanLoader.h
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanLoader.h 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanLoader.h 2023-06-05 18:48:45.615838979 +0000
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanLoader.h 2023-09-26 17:58:02.853996721 +0000
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanLoader.h 2023-09-26 18:02:22.836042087 +0000
@@ -13,6 +13,10 @@
#define VK_USE_PLATFORM_XLIB_KHR
#endif
@ -4708,8 +4923,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanLoader.h dolphin/
#define VK_USE_PLATFORM_ANDROID_KHR
#endif
diff -rupN dolphin.orig/Source/Core/VideoCommon/FramebufferManager.cpp dolphin/Source/Core/VideoCommon/FramebufferManager.cpp
--- dolphin.orig/Source/Core/VideoCommon/FramebufferManager.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoCommon/FramebufferManager.cpp 2023-06-05 19:16:23.547426723 +0000
--- dolphin.orig/Source/Core/VideoCommon/FramebufferManager.cpp 2023-09-26 17:58:02.857996813 +0000
+++ dolphin/Source/Core/VideoCommon/FramebufferManager.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -630,7 +630,7 @@ void FramebufferManager::DestroyReadback
bool FramebufferManager::CreateReadbackFramebuffer()
@ -4747,8 +4962,8 @@ diff -rupN dolphin.orig/Source/Core/VideoCommon/FramebufferManager.cpp dolphin/S
return;
}
diff -rupN dolphin.orig/Source/Core/VideoCommon/RenderBase.cpp dolphin/Source/Core/VideoCommon/RenderBase.cpp
--- dolphin.orig/Source/Core/VideoCommon/RenderBase.cpp 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoCommon/RenderBase.cpp 2023-06-05 20:18:15.508539814 +0000
--- dolphin.orig/Source/Core/VideoCommon/RenderBase.cpp 2023-09-26 17:58:02.857996813 +0000
+++ dolphin/Source/Core/VideoCommon/RenderBase.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -364,19 +364,24 @@ void Renderer::RenderToXFB(u32 xfbAddr,
return;
}
@ -4811,8 +5026,8 @@ diff -rupN dolphin.orig/Source/Core/VideoCommon/RenderBase.cpp dolphin/Source/Co
}
diff -rupN dolphin.orig/Source/Core/VideoCommon/RenderBase.h dolphin/Source/Core/VideoCommon/RenderBase.h
--- dolphin.orig/Source/Core/VideoCommon/RenderBase.h 2023-06-01 19:24:09.958003305 +0000
+++ dolphin/Source/Core/VideoCommon/RenderBase.h 2023-06-05 19:00:51.760701274 +0000
--- dolphin.orig/Source/Core/VideoCommon/RenderBase.h 2023-09-26 17:58:02.857996813 +0000
+++ dolphin/Source/Core/VideoCommon/RenderBase.h 2023-09-26 18:02:22.836042087 +0000
@@ -193,7 +193,8 @@ public:
std::tuple<MathUtil::Rectangle<int>, MathUtil::Rectangle<int>>
ConvertStereoRectangle(const MathUtil::Rectangle<int>& rc) const;
@ -4854,8 +5069,8 @@ diff -rupN dolphin.orig/Source/Core/VideoCommon/RenderBase.h dolphin/Source/Core
// These will be set on the first call to SetWindowSize.
int m_last_window_request_width = 0;
diff -rupN dolphin.orig/Source/Core/VideoCommon/TextureCacheBase.cpp dolphin/Source/Core/VideoCommon/TextureCacheBase.cpp
--- dolphin.orig/Source/Core/VideoCommon/TextureCacheBase.cpp 2023-06-01 19:24:09.962003435 +0000
+++ dolphin/Source/Core/VideoCommon/TextureCacheBase.cpp 2023-06-05 19:37:47.708471335 +0000
--- dolphin.orig/Source/Core/VideoCommon/TextureCacheBase.cpp 2023-09-26 17:58:02.857996813 +0000
+++ dolphin/Source/Core/VideoCommon/TextureCacheBase.cpp 2023-09-26 18:02:22.836042087 +0000
@@ -1046,7 +1046,7 @@ static void SetSamplerState(u32 index, f
// that have arbitrary contents, eg. are used for fog effects where the
// distance they kick in at is important to preserve at any resolution.

View file

@ -39,7 +39,7 @@ case "${DEVICE}" in
;;
RK358*)
[ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="box86 desmume-lr flycast-lr gpsp-lr pcsx_rearmed-lr"
PKG_EMUS+=" amiberry aethersx2-sa duckstation-sa nanoboyadvance-sa box64 scummvmsa yabasanshiro-sa box64 portmaster"
PKG_EMUS+=" amiberry aethersx2-sa dolphin-sa duckstation-sa nanoboyadvance-sa box64 scummvmsa yabasanshiro-sa portmaster"
LIBRETRO_CORES+=" uae4arm beetle-psx-lr bsnes-hd-lr citra-lr dolphin-lr mame-lr pcsx_rearmed-lr"
PKG_RETROARCH+=" retropie-shaders"
;;
@ -444,15 +444,11 @@ makeinstall_target() {
add_emu_core gamecube primehack primehack false
add_es_system gamecube
;;
RK3566|S922X*|RK3399)
RK35*|S922X*|RK3399)
add_emu_core gamecube dolphin dolphin-sa-gc true
add_emu_core gamecube retroarch dolphin false
add_es_system gamecube
;;
RK3588)
add_emu_core gamecube retroarch dolphin true
add_es_system gamecube
;;
esac
### Nintendo Wii
@ -463,14 +459,10 @@ makeinstall_target() {
add_emu_core wii primehack primehack false
add_es_system wii
;;
RK3566|S922X*|RK3399)
RK35*|S922X*|RK3399)
add_emu_core wii dolphin dolphin-sa-wii true
add_emu_core wii retroarch dolphin false
add_es_system wii
;;
RK3588)
add_emu_core wii retroarch dolphin true
add_es_system wii
add_es_system wii
;;
esac