Skip to content

Commit cb55bec

Browse files
Merge branch 'renderer/mobileglues' into 'main'
2 parents 3e63700 + 3b25540 commit cb55bec

8 files changed

Lines changed: 47 additions & 34 deletions

File tree

.gitmodules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@
88
[submodule "Natives/external/AFNetworking"]
99
path = Natives/external/AFNetworking
1010
url = https://github.com/AFNetworking/AFNetworking
11+
[submodule "Natives/external/MobileGlues"]
12+
path = Natives/external/MobileGlues
13+
url = https://github.com/MobileGL-Dev/MobileGlues
14+
branch = main

Makefile

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,21 @@ jre: native
295295
cp $(WORKINGDIR)/libawt_xawt.dylib $(OUTPUTDIR)/java_runtimes/java-21-openjdk/lib
296296
echo '[Amethyst v$(VERSION)] jre - end'
297297

298+
dep_mg: native
299+
echo '[Amethyst v$(VERSION)] dep_mg - start'
300+
cd $(SOURCEDIR)/Natives/external/MobileGlues/src/main/cpp; \
301+
wget https://github.com/leetal/ios-cmake/raw/master/ios.toolchain.cmake; \
302+
cmake -B build \
303+
-DCMAKE_TOOLCHAIN_FILE=ios.toolchain.cmake \
304+
-DSTATICLIB=OFF \
305+
-DMACOS=ON \
306+
-DPLATFORM=OS64 \
307+
-DCMAKE_C_FLAGS=-Wno-error=implicit-function-declaration; \
308+
cmake --build build --config RelWithDebInfo --target mobileglues; \
309+
cp $(SOURCEDIR)/Natives/external/MobileGlues/src/main/cpp/build/libmobileglues.dylib $(WORKINGDIR)/libmobileglues.dylib
310+
cp $(SOURCEDIR)/Natives/external/MobileGlues/src/main/cpp/libraries/ios/libspirv-cross-c-shared.0.dylib $(WORKINGDIR)/libspirv-cross-c-shared.0.dylib
311+
echo '[Amethyst v$(VERSION)] dep_mg - end'
312+
298313
assets:
299314
echo '[Amethyst v$(VERSION)] assets - start'
300315
if [ '$(IOS)' = '0' ] && [ '$(DETECTPLAT)' = 'Darwin' ]; then \
@@ -310,7 +325,7 @@ assets:
310325
fi
311326
echo '[Amethyst v$(VERSION)] assets - end'
312327

313-
payload: native java jre assets
328+
payload: native dep_mg java jre assets
314329
echo '[Amethyst v$(VERSION)] payload - start'
315330
$(call METHOD_DIRCHECK,$(WORKINGDIR)/AngelAuraAmethyst.app/libs)
316331
$(call METHOD_DIRCHECK,$(WORKINGDIR)/AngelAuraAmethyst.app/libs_caciocavallo)

Natives/LauncherPreferences.m

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -137,47 +137,28 @@ UIEdgeInsets getDefaultSafeArea() {
137137
NSMutableArray *array = @[
138138
@"auto",
139139
@ RENDERER_NAME_GL4ES,
140-
@ RENDERER_NAME_MTL_ANGLE
140+
@ RENDERER_NAME_MTL_ANGLE,
141+
@ RENDERER_NAME_MOBILEGLUES,
142+
@ RENDERER_NAME_VK_ZINK
141143
].mutableCopy;
142144

143145
if (containsDefault) {
144146
[array insertObject:@"(default)" atIndex:0];
145147
}
146-
147-
#if CONFIG_RELEASE
148-
if(@available(iOS 16.0, *)) {
149-
// Disabling Zink on iOS 16.0+ to figure out what's wrong with it
150-
} else {
151-
#endif
152-
[array addObject:@ RENDERER_NAME_VK_ZINK];
153-
#if CONFIG_RELEASE
154-
}
155-
#endif
148+
156149
return array;
157150
}
158151

159152
NSArray* getRendererNames(BOOL containsDefault) {
160153
NSMutableArray *array;
161154

162-
#if CONFIG_RELEASE
163-
if(@available(iOS 16.0, *)) {
164-
// Disabling Zink on iOS 16.0+ to figure out what's wrong with it
165-
array = @[
166-
localize(@"preference.title.renderer.release.auto", nil),
167-
localize(@"preference.title.renderer.release.gl4es", nil),
168-
localize(@"preference.title.renderer.release.angle", nil)
169-
].mutableCopy;
170-
} else {
171-
#endif
172-
array = @[
173-
localize(@"preference.title.renderer.debug.auto", nil),
174-
localize(@"preference.title.renderer.debug.gl4es", nil),
175-
localize(@"preference.title.renderer.debug.angle", nil),
176-
localize(@"preference.title.renderer.debug.zink", nil)
177-
].mutableCopy;
178-
#if CONFIG_RELEASE
179-
}
180-
#endif
155+
array = @[
156+
localize(@"preference.title.renderer.debug.auto", nil),
157+
localize(@"preference.title.renderer.debug.gl4es", nil),
158+
localize(@"preference.title.renderer.debug.angle", nil),
159+
localize(@"preference.title.renderer.debug.mg", nil),
160+
localize(@"preference.title.renderer.debug.zink", nil)
161+
].mutableCopy;
181162

182163
if (containsDefault) {
183164
[array insertObject:@"(default)" atIndex:0];

Natives/ctxbridges/gl_bridge.m

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ static bool gl_init() {
6161
EGL_ALPHA_SIZE, 8,
6262
EGL_DEPTH_SIZE, 24,
6363
EGL_SURFACE_TYPE, EGL_WINDOW_BIT|EGL_PBUFFER_BIT,
64-
EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
64+
EGL_RENDERABLE_TYPE, angleDesktopGL ? EGL_OPENGL_BIT : EGL_OPENGL_ES3_BIT,
6565
EGL_NONE
6666
};
6767

@@ -82,8 +82,13 @@ static bool gl_init() {
8282
}
8383

8484
EGLBoolean bindResult;
85-
NSDebugLog(@"EGLBridge: Binding to desktop OpenGL (regardless of renderer)");
86-
bindResult = handle.eglBindAPI(EGL_OPENGL_API);
85+
if (angleDesktopGL) {
86+
NSDebugLog(@"EGLBridge: Binding to desktop OpenGL");
87+
bindResult = handle.eglBindAPI(EGL_OPENGL_API);
88+
} else {
89+
NSDebugLog(@"EGLBridge: Binding to OpenGL ES");
90+
bindResult = handle.eglBindAPI(EGL_OPENGL_ES_API);
91+
}
8792
if (!bindResult) NSDebugLog(@"EGLBridge: bind failed: %p\n", handle.eglGetError());
8893

8994
bundle->surface = handle.eglCreateWindowSurface(g_EglDisplay, bundle->config, (__bridge EGLNativeWindowType)SurfaceViewController.surface.layer, NULL);

Natives/egl_bridge.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ int pojavInitOpenGL() {
5656
renderer = @ RENDERER_NAME_GL4ES;
5757
setenv("POJAV_RENDERER", renderer.UTF8String, 1);
5858
set_gl_bridge_tbl();
59+
} else if ([renderer isEqualToString:@ RENDERER_NAME_MOBILEGLUES]) {
60+
renderer = @ RENDERER_NAME_MOBILEGLUES;
61+
setenv("POJAV_RENDERER", renderer.UTF8String, 1);
62+
set_gl_bridge_tbl();
5963
} else if ([renderer isEqualToString:@ RENDERER_NAME_MTL_ANGLE]) {
6064
set_gl_bridge_tbl();
6165
} else if ([renderer hasPrefix:@"libOSMesa"]) {

Natives/external/MobileGlues

Submodule MobileGlues added at c2bcd17

Natives/resources/en.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,13 @@
177177
"preference.title.renderer.release.auto" = "Auto";
178178
"preference.title.renderer.release.gl4es" = "holy gl4es";
179179
"preference.title.renderer.release.angle" = "ANGLE";
180+
"preference.title.renderer.release.mg" = "MobileGlues";
180181
"preference.title.renderer.release.zink" = "Zink";
181182

182183
"preference.title.renderer.debug.auto" = "Auto: gl4es or ANGLE";
183184
"preference.title.renderer.debug.gl4es" = "holy gl4es - exports OpenGL 2.1";
184185
"preference.title.renderer.debug.angle" = "ANGLE (1.17+) - exports OpenGL 3.2 (Core Profile, limited)";
186+
"preference.title.renderer.debug.mg" = "MobileGlues (1.17+) - exports OpenGL 4.0, EXPERIMENTAL";
185187
"preference.title.renderer.debug.zink" = "Zink (Mesa 21.0) - exports OpenGL 4.1";
186188

187189
"preference.detail.renderer" = "Change the OpenGL render engine to use. Zink is temporarily disabled on iOS 16 and later to diagnose issues.";

Natives/utils.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
#define RENDERER_NAME_GL4ES "libgl4es_114.dylib"
3838
#define RENDERER_NAME_MTL_ANGLE "libtinygl4angle.dylib"
39+
#define RENDERER_NAME_MOBILEGLUES "libmobileglues.dylib"
3940
#define RENDERER_NAME_VK_ZINK "libOSMesa.8.dylib"
4041

4142
#define SPECIALBTN_KEYBOARD -1

0 commit comments

Comments
 (0)