Skip to content

Commit c25f02e

Browse files
committed
Use Vulkan renderer as default on all platforms.
1 parent e1b46b2 commit c25f02e

37 files changed

+9281
-84
lines changed

.github/workflows/autobuild.yml

+19-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
name: Windows
1515
runs-on: windows-latest
1616
steps:
17-
- uses: benjlevesque/short-sha@v2.2
17+
- uses: benjlevesque/short-sha@v3.0
1818
id: short-sha
1919
with:
2020
length: 7
@@ -65,6 +65,10 @@ jobs:
6565
cp /mingw64/bin/zlib1.dll .
6666
cp ../../windows/build-mingw64/bin/x64-msvcrt-ruby310.dll .
6767
cp -r ../../windows/build-mingw64/lib/ruby/3.1.0 .
68+
cp ../../vendor/ANGLE/libEGL.dll .
69+
cp ../../vendor/ANGLE/libGLESv2.dll .
70+
cp ../../vendor/ANGLE/vulkan-1.dll .
71+
cp ../../vendor/ANGLE/COPYING ./COPYING_ANGLE
6872
mv ./3.1.0 ./stdlib
6973
cp ../mkxp-z.exe .
7074
cp ../../mkxp.json .
@@ -74,13 +78,17 @@ jobs:
7478
- uses: actions/upload-artifact@v4
7579
with:
7680
name: mkxp-z.windows.${{github.event_name == 'pull_request' && format('PR{0}', github.event.number) || github.ref_name}}-${{steps.short-sha.outputs.sha}}
77-
path: build/artifact
81+
path: |
82+
build/artifact/*.dll
83+
build/artifact/*.exe
84+
build/artifact/mkxp.json
85+
build/artifact/stdlib/
7886
7987
build-linux-native:
8088
name: Ubuntu 22.04 x86_64
8189
runs-on: ubuntu-22.04
8290
steps:
83-
- uses: benjlevesque/short-sha@v2.2
91+
- uses: benjlevesque/short-sha@v3.0
8492
id: short-sha
8593
with:
8694
length: 7
@@ -119,8 +127,12 @@ jobs:
119127
cp -r ../../linux/build-x86_64/lib/ruby/3.1.0 .
120128
mv ./3.1.0 ./stdlib
121129
cp ../../mkxp.json .
130+
cp ../../vendor/ANGLE/libGLESv2.so ./lib64
131+
cp ../../vendor/ANGLE/libEGL.so.1 ./lib64
132+
cp ../../vendor/ANGLE/libvulkan.so.1 ./lib64
122133
cp -r ../../scripts .
123134
cp ../../assets/LICENSE.mkxp-z-with-https.txt .
135+
cd ..
124136
125137
- uses: actions/upload-artifact@v4
126138
with:
@@ -227,6 +239,9 @@ jobs:
227239
cp ../../mkxp.json .
228240
cp -r ../../scripts .
229241
cp ../../assets/LICENSE.mkxp-z-with-https.txt .
242+
cp ../../vendor/ANGLE/libGLESv2.so ./lib64
243+
cp ../../vendor/ANGLE/libEGL.so.1 ./lib64
244+
cp ../../vendor/ANGLE/libvulkan.so.1 ./lib64
230245
231246
- uses: actions/upload-artifact@v4
232247
with:
@@ -237,7 +252,7 @@ jobs:
237252
name: macOS
238253
runs-on: macos-latest
239254
steps:
240-
- uses: benjlevesque/short-sha@v2.2
255+
- uses: benjlevesque/short-sha@v3.0
241256
id: short-sha
242257
with:
243258
length: 7

macos/mkxp-z.xcodeproj/project.pbxproj

+47-16
Original file line numberDiff line numberDiff line change
@@ -1063,8 +1063,11 @@
10631063
3B5A845C256A465700BAF2E5 /* system.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = system.h; sourceTree = "<group>"; };
10641064
3B5A845D256A465700BAF2E5 /* systemImpl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = systemImpl.cpp; sourceTree = "<group>"; };
10651065
3B5A8463256A46B200BAF2E5 /* systemImplApple.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = systemImplApple.mm; sourceTree = "<group>"; };
1066-
3B5E1F0925A881FB0086FFDC /* libEGL.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libEGL.dylib; path = Dependencies/Frameworks/ANGLE/libEGL.dylib; sourceTree = "<group>"; };
1067-
3B5E1F0A25A881FB0086FFDC /* libGLESv2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv2.dylib; path = Dependencies/Frameworks/ANGLE/libGLESv2.dylib; sourceTree = "<group>"; };
1066+
/* vulkan default changes */
1067+
/*3B5E1F0925A881FB0086FFDC*/ /* libEGL.dylib */ /*= {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libEGL.dylib; path = Dependencies/Frameworks/ANGLE/libEGL.dylib; sourceTree = "<group>"; };*/
1068+
/*3B5E1F0A25A881FB0086FFDC*/ /* libGLESv2.dylib */ /*= {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv2.dylib; path = Dependencies/Frameworks/ANGLE/libGLESv2.dylib; sourceTree = "<group>"; };*/
1069+
3B5E1F0925A881FB0086FFDC /* libEGL.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libEGL.dylib; path = ../vendor/ANGLE/libEGL.dylib; sourceTree = "<group>"; };
1070+
3B5E1F0A25A881FB0086FFDC /* libGLESv2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libGLESv2.dylib; path = ../vendor/ANGLE/libGLESv2.dylib; sourceTree = "<group>"; };
10681071
3B609374268274CE0038E9D6 /* encoding.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = encoding.h; sourceTree = "<group>"; };
10691072
3BA08EA4256641ED00449CFF /* Assets.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Assets.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
10701073
3BA08EA6256641EE00449CFF /* Assets.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Assets.plist; sourceTree = "<group>"; };
@@ -2804,7 +2807,9 @@
28042807
);
28052808
LIBRARY_SEARCH_PATHS = (
28062809
"$(inherited)",
2807-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
2810+
/* vulkan default changes */
2811+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
2812+
"../vendor/ANGLE",
28082813
"$(PROJECT_DIR)/Dependencies/build-macosx-x86_64/lib",
28092814
);
28102815
MARKETING_VERSION = 2.4.2;
@@ -2877,7 +2882,9 @@
28772882
);
28782883
LIBRARY_SEARCH_PATHS = (
28792884
"$(inherited)",
2880-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
2885+
/* vulkan default changes */
2886+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
2887+
"../vendor/ANGLE",
28812888
"$(PROJECT_DIR)/Dependencies/build-macosx-x86_64/lib",
28822889
);
28832890
MARKETING_VERSION = 2.4.2;
@@ -3092,15 +3099,19 @@
30923099
"$(DEPENDENCY_SEARCH_PATH)/include/AL",
30933100
"$(DEPENDENCY_SEARCH_PATH)/include/openssl",
30943101
"$(DEPENDENCY_SEARCH_PATH)/include/uchardet",
3095-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3102+
/* vulkan default changes */
3103+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3104+
"../vendor/ANGLE",
30963105
);
30973106
LD_RUNPATH_SEARCH_PATHS = (
30983107
"$(inherited)",
30993108
"@executable_path/../Frameworks",
31003109
);
31013110
LIBRARY_SEARCH_PATHS = (
31023111
"$(inherited)",
3103-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3112+
/* vulkan default changes */
3113+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3114+
"../vendor/ANGLE",
31043115
"$(PROJECT_DIR)/Dependencies/build-macosx-x86_64/lib",
31053116
"$(PROJECT_DIR)/Dependencies/build-macosx-universal/lib",
31063117
);
@@ -3179,15 +3190,19 @@
31793190
"$(DEPENDENCY_SEARCH_PATH)/include/AL",
31803191
"$(DEPENDENCY_SEARCH_PATH)/include/openssl",
31813192
"$(DEPENDENCY_SEARCH_PATH)/include/uchardet",
3182-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3193+
/* vulkan default changes */
3194+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3195+
"../vendor/ANGLE",
31833196
);
31843197
LD_RUNPATH_SEARCH_PATHS = (
31853198
"$(inherited)",
31863199
"@executable_path/../Frameworks",
31873200
);
31883201
LIBRARY_SEARCH_PATHS = (
31893202
"$(inherited)",
3190-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3203+
/* vulkan default changes */
3204+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3205+
"../vendor/ANGLE",
31913206
"$(PROJECT_DIR)/Dependencies/build-macosx-x86_64/lib",
31923207
"$(PROJECT_DIR)/Dependencies/build-macosx-universal/lib",
31933208
);
@@ -3265,15 +3280,19 @@
32653280
"$(DEPENDENCY_SEARCH_PATH)/include/AL",
32663281
"$(DEPENDENCY_SEARCH_PATH)/include/openssl",
32673282
"$(DEPENDENCY_SEARCH_PATH)/include/uchardet",
3268-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3283+
/* vulkan default changes */
3284+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3285+
"../vendor/ANGLE",
32693286
);
32703287
LD_RUNPATH_SEARCH_PATHS = (
32713288
"$(inherited)",
32723289
"@executable_path/../Frameworks",
32733290
);
32743291
LIBRARY_SEARCH_PATHS = (
32753292
"$(inherited)",
3276-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3293+
/* vulkan default changes */
3294+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3295+
"../vendor/ANGLE",
32773296
"$(PROJECT_DIR)/Dependencies/build-macosx-universal/lib",
32783297
"$(PROJECT_DIR)/Dependencies/build-macosx-x86_64/lib",
32793298
);
@@ -3346,15 +3365,19 @@
33463365
"$(DEPENDENCY_SEARCH_PATH)/include/AL",
33473366
"$(DEPENDENCY_SEARCH_PATH)/include/openssl",
33483367
"$(DEPENDENCY_SEARCH_PATH)/include/uchardet",
3349-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3368+
/* vulkan default changes */
3369+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3370+
"../vendor/ANGLE",
33503371
);
33513372
LD_RUNPATH_SEARCH_PATHS = (
33523373
"$(inherited)",
33533374
"@executable_path/../Frameworks",
33543375
);
33553376
LIBRARY_SEARCH_PATHS = (
33563377
"$(inherited)",
3357-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3378+
/* vulkan default changes */
3379+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3380+
"../vendor/ANGLE",
33583381
"$(PROJECT_DIR)/Dependencies/build-macosx-universal/lib",
33593382
"$(PROJECT_DIR)/Dependencies/build-macosx-x86_64/lib",
33603383
);
@@ -3424,7 +3447,9 @@
34243447
);
34253448
LIBRARY_SEARCH_PATHS = (
34263449
"$(inherited)",
3427-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3450+
/* vulkan default changes */
3451+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3452+
"../vendor/ANGLE",
34283453
"$(PROJECT_DIR)/Dependencies/build-macosx-x86_64/lib",
34293454
);
34303455
MARKETING_VERSION = 2.4.2;
@@ -3491,7 +3516,9 @@
34913516
);
34923517
LIBRARY_SEARCH_PATHS = (
34933518
"$(inherited)",
3494-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3519+
/* vulkan default changes */
3520+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3521+
"../vendor/ANGLE",
34953522
"$(PROJECT_DIR)/Dependencies/build-macosx-x86_64/lib",
34963523
);
34973524
MARKETING_VERSION = 2.4.2;
@@ -3557,7 +3584,9 @@
35573584
"$(DEPENDENCY_SEARCH_PATH)/include/AL",
35583585
"$(DEPENDENCY_SEARCH_PATH)/include/openssl",
35593586
"$(DEPENDENCY_SEARCH_PATH)/include/uchardet",
3560-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3587+
/* vulkan default changes */
3588+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3589+
"../vendor/ANGLE",
35613590
);
35623591
INFOPLIST_FILE = Info.plist;
35633592
LIBRARY_SEARCH_PATHS = (
@@ -3627,7 +3656,9 @@
36273656
"$(DEPENDENCY_SEARCH_PATH)/include/AL",
36283657
"$(DEPENDENCY_SEARCH_PATH)/include/openssl",
36293658
"$(DEPENDENCY_SEARCH_PATH)/include/uchardet",
3630-
"$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE",
3659+
/* vulkan default changes */
3660+
/* "$(PROJECT_DIR)/Dependencies/Frameworks/ANGLE", */
3661+
"../vendor/ANGLE",
36313662
);
36323663
INFOPLIST_FILE = Info.plist;
36333664
LIBRARY_SEARCH_PATHS = (

meson.build

+3-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,9 @@ subdir('binding')
120120
subdir('shader')
121121
subdir('assets')
122122

123-
global_include_dirs += include_directories('src', 'binding')
123+
# vulkan default changes
124+
#global_include_dirs += include_directories('src', 'binding')
125+
global_include_dirs += include_directories('src', 'binding', 'vendor/ANGLE')
124126

125127
rpath = ''
126128

meson_options.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ option('steamworks_path', type: 'string', value: '', description: 'Path to Steam
2020
option('steam_appid', type: 'string', value: '', description: 'Steam AppID. Set this to use SteamAPI_RestartAppIfNecessary')
2121
option('steamshim_debug', type: 'boolean', value: false, description: 'Whether to show Steamshim debug messages in the console')
2222

23-
option('gfx_backend', type: 'combo', value: 'gl', choices: ['gl', 'gles'], description: 'Graphics rendering API to use.')
23+
option('gfx_backend', type: 'combo', value: 'gles', choices: ['gl', 'gles'], description: 'Graphics rendering API to use.')

src/config.cpp

+16-4
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,16 @@ void Config::read(int argc, char *argv[]) {
166166
{"syncToRefreshrate", false},
167167
{"solidFonts", json::array({})},
168168
#if defined(__APPLE__) && defined(__aarch64__)
169-
{"preferMetalRenderer", true},
169+
//vulkan default changes
170+
//{"preferMetalRenderer", true},
171+
{"angleRenderer", "metal"},
172+
#elif __WIN32__
173+
//vulkan default changes
174+
{"angleRenderer", "opengl"},
170175
#else
171-
{"preferMetalRenderer", false},
176+
//vulkan default changes
177+
//{"preferMetalRenderer", false},
178+
{"angleRenderer", "vulkan"},
172179
#endif
173180
{"subImageFix", false},
174181
#ifdef __WIN32__
@@ -311,8 +318,11 @@ try { exp } catch (...) {}
311318
std::transform(solidFont.begin(), solidFont.end(), solidFont.begin(),
312319
[](unsigned char c) { return std::tolower(c); });
313320
#ifdef __APPLE__
314-
SET_OPT(preferMetalRenderer, boolean);
321+
//vulkan default changes
322+
//SET_OPT(preferMetalRenderer, boolean);
315323
#endif
324+
//vulkan default changes
325+
SET_STRINGOPT(angleRenderer, angleRenderer);
316326
SET_OPT(subImageFix, boolean);
317327
SET_OPT(enableBlitting, boolean);
318328
SET_OPT_CUSTOMKEY(integerScaling.active, integerScalingActive, boolean);
@@ -366,7 +376,9 @@ try { exp } catch (...) {}
366376
#ifdef __APPLE__
367377
// Determine whether to use the Metal renderer on macOS
368378
// Environment variable takes priority over the json setting
369-
preferMetalRenderer = isMetalSupported() && getEnvironmentBool("MKXPZ_MACOS_METAL", preferMetalRenderer);
379+
//vulkan default changes
380+
//preferMetalRenderer = isMetalSupported() && getEnvironmentBool("MKXPZ_MACOS_METAL", preferMetalRenderer);
381+
angleRenderer = isMetalSupported() ? "metal" : "opengl";
370382
#endif
371383

372384
// Determine whether to allow manual selection of a game folder on startup

src/config.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ struct Config {
3636

3737
bool debugMode;
3838
bool winConsole;
39-
bool preferMetalRenderer;
39+
//vulkan default changes
40+
//bool preferMetalRenderer;
41+
std::string angleRenderer;
4042
bool displayFPS;
4143
bool printFPS;
4244

src/display/gl/gl-meta.cpp

+26-25
Original file line numberDiff line numberDiff line change
@@ -240,17 +240,17 @@ static void _blitBegin(FBO::ID fbo, const Vec2i &size, int scaleIsSpecial)
240240

241241
break;
242242
#endif
243-
case Area:
244-
{
245-
AreaShader &shader = shState->shaders().area;
246-
shader.bind();
247-
shader.applyViewportProj();
248-
shader.setTranslation(Vec2i());
249-
shader.setTexSize(Vec2i(size.x, size.y));
250-
shader.setTargetSize(Vec2(size.x, size.y)); // Dummy value
251-
}
252-
253-
break;
243+
//vulkan default changes
244+
//case Area:
245+
//{
246+
// AreaShader &shader = shState->shaders().area;
247+
// shader.bind();
248+
// shader.applyViewportProj();
249+
// shader.setTranslation(Vec2i());
250+
// shader.setTexSize(Vec2i(size.x, size.y));
251+
// shader.setTargetSize(Vec2(size.x, size.y)); // Dummy value
252+
//}
253+
// break;
254254
default:
255255
{
256256
SimpleShader &shader = shState->shaders().simple;
@@ -347,14 +347,14 @@ void blitSource(TEXFBO &source, int scaleIsSpecial)
347347

348348
break;
349349
#endif
350-
case Area:
351-
{
352-
AreaShader &shader = shState->shaders().area;
353-
shader.bind();
354-
shader.setTexSize(Vec2i(blitSrcWidthHires, blitSrcHeightHires));
355-
}
356-
357-
break;
350+
//vulkan default changes
351+
//case Area:
352+
//{
353+
// AreaShader &shader = shState->shaders().area;
354+
// shader.bind();
355+
// shader.setTexSize(Vec2i(blitSrcWidthHires, blitSrcHeightHires));
356+
//}
357+
// break;
358358
default:
359359
{
360360
SimpleShader &shader = shState->shaders().simple;
@@ -418,12 +418,13 @@ void blitRectangle(const IntRect &src, const IntRect &dst, bool smooth)
418418
shader.setTargetScale(Vec2((float)(shState->config().xbrzScalingFactor), (float)(shState->config().xbrzScalingFactor)));
419419
}
420420
#endif
421-
if (method == Area)
422-
{
423-
AreaShader &shader = shState->shaders().area;
424-
// Sometimes the dest height is negative, but the area shader can't handle that, so take abs of it.
425-
shader.setTargetSize(Vec2((float)blitSrcWidthHires * (float)scaledDstWidth / (float)scaledSrcWidth, (float)blitSrcHeightHires * (float)abs(scaledDstHeight) / (float)scaledSrcHeight));
426-
}
421+
//vulkan default changes
422+
//if (method == Area)
423+
//{
424+
// AreaShader &shader = shState->shaders().area;
425+
// // Sometimes the dest height is negative, but the area shader can't handle that, so take abs of it.
426+
// shader.setTargetSize(Vec2((float)blitSrcWidthHires * (float)scaledDstWidth / (float)scaledSrcWidth, (float)blitSrcHeightHires * (float)abs(scaledDstHeight) / (float)scaledSrcHeight));
427+
//}
427428
if (smooth)
428429
TEX::setSmooth(true);
429430

0 commit comments

Comments
 (0)