From 325811baea3d8e7319221368dabf55f50bce21c6 Mon Sep 17 00:00:00 2001
From: alexytomi <60690056+alexytomi@users.noreply.github.com>
Date: Sat, 19 Jul 2025 21:10:37 +0800
Subject: [PATCH 1/3] fix(MobileGlues): Don't log MGlues config if not used
---
.../src/main/java/net/kdt/pojavlaunch/MainActivity.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java
index 965152e19..4fa36fd70 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java
@@ -349,7 +349,6 @@ public class MainActivity extends BaseActivity implements ControlButtonMenuListe
}
private void runCraft(String versionId, JMinecraftVersionList.Version version) throws Throwable {
- LauncherPreferences.writeMGRendererSettings(); // No MG detection for you
if(Tools.LOCAL_RENDERER == null) {
Tools.LOCAL_RENDERER = LauncherPreferences.PREF_RENDERER;
}
@@ -363,6 +362,9 @@ public class MainActivity extends BaseActivity implements ControlButtonMenuListe
MinecraftAccount minecraftAccount = PojavProfile.getCurrentProfileContent(this, null);
Logger.appendToLog("--------- Starting game with Launcher Debug!");
Tools.printLauncherInfo(versionId, Tools.isValidString(minecraftProfile.javaArgs) ? minecraftProfile.javaArgs : LauncherPreferences.PREF_CUSTOM_JAVA_ARGS);
+ if(Tools.LOCAL_RENDERER.equals("opengles_mobileglues")) {
+ LauncherPreferences.writeMGRendererSettings();
+ }
JREUtils.redirectAndPrintJRELog();
LauncherProfiles.load();
int requiredJavaVersion = 8;
From ea43e8ad84e5d433814248557515aebaa027cd37 Mon Sep 17 00:00:00 2001
From: alexytomi <60690056+alexytomi@users.noreply.github.com>
Date: Sat, 19 Jul 2025 23:20:54 +0800
Subject: [PATCH 2/3] update(MobileGlues): Update to 1.2.7 release
Added new options
- angleDepthClearFixMode
- timerQueryExt
- Compute multidraw emulation
---
MobileGlues | 2 +-
.../prefs/LauncherPreferences.java | 10 ++++--
...herPreferenceRendererSettingsFragment.java | 36 ++++++++++++++++---
.../src/main/res/values/strings.xml | 11 ++++--
.../src/main/res/xml/pref_renderer.xml | 26 ++++++++++----
5 files changed, 69 insertions(+), 16 deletions(-)
diff --git a/MobileGlues b/MobileGlues
index 0b41cd6a3..44f5dd9d7 160000
--- a/MobileGlues
+++ b/MobileGlues
@@ -1 +1 @@
-Subproject commit 0b41cd6a387989b2e7ce4a05cf4f7c9f7f027b38
+Subproject commit 44f5dd9d7cb03c4e87b48c2144b40445d8dd7d38
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java
index d6f168f24..761d89b39 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java
@@ -231,11 +231,15 @@ public class LauncherPreferences {
// These guys are SwitchPreferences so they get special treatment, they need to be converted to ints
int gl43exts = DEFAULT_PREF.getBoolean("mg_renderer_setting_gl43ext", false) ? 1 : 0;
int computeShaderext = DEFAULT_PREF.getBoolean("mg_renderer_computeShaderext", false) ? 1 : 0;
+ int angleDepthClearFixMode = DEFAULT_PREF.getBoolean("mg_renderer_setting_angleDepthClearFixMode", false) ? 1 : 0;
+ int timerQueryExt = DEFAULT_PREF.getBoolean("mg_renderer_setting_timerQueryExt", false) ? 1 : 0;
MGConfigJson.put("enableExtGL43", gl43exts);
MGConfigJson.put("enableExtComputeShader", computeShaderext);
-
- MGConfigJson.put("enableCompatibleMode", Integer.parseInt(DEFAULT_PREF.getString("", "0"))); // Placeholder, doesn't do anything on current MG
- MGConfigJson.put("multidrawMode", Integer.parseInt(DEFAULT_PREF.getString("mg_renderer_setting_multidraw", "0")));
+ MGConfigJson.put("angleDepthClearFixMode", angleDepthClearFixMode);
+ MGConfigJson.put("timerQueryExt", timerQueryExt);
+ if (DEFAULT_PREF.getBoolean("mg_renderer_multidrawCompute", false)) {
+ MGConfigJson.put("multidrawMode", 5); // Special handling for the (special mayhaps) compute emulation
+ } else MGConfigJson.put("multidrawMode", Integer.parseInt(DEFAULT_PREF.getString("mg_renderer_setting_multidraw", "0")));
MGConfigJson.put("maxGlslCacheSize", Integer.parseInt(DEFAULT_PREF.getString("mg_renderer_setting_glsl_cache_size", "2048")));
File configFile = new File(Tools.DIR_DATA + "/MobileGlues", "config.json");
FileUtils.ensureParentDirectory(configFile);
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceRendererSettingsFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceRendererSettingsFragment.java
index 57918b5a1..63a25e543 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceRendererSettingsFragment.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceRendererSettingsFragment.java
@@ -7,10 +7,10 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
-import androidx.annotation.NonNull;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
import net.kdt.pojavlaunch.R;
@@ -18,10 +18,16 @@ import java.util.Objects;
public class LauncherPreferenceRendererSettingsFragment extends LauncherPreferenceFragment {
EditTextPreference GLSLCachePreference;
+ ListPreference MultiDrawEmulationPreference;
+ SwitchPreference ComputeMultiDrawPreference;
+ Preference.SummaryProvider MultiDrawSummaryProvider;
+
@Override
public void onCreatePreferences(Bundle b, String str) {
addPreferencesFromResource(R.xml.pref_renderer);
GLSLCachePreference = findPreference("mg_renderer_setting_glsl_cache_size");
+ ComputeMultiDrawPreference = findPreference("mg_renderer_multidrawCompute");
+ MultiDrawEmulationPreference = findPreference("mg_renderer_setting_multidraw");
GLSLCachePreference.setOnBindEditTextListener((editText) -> {
editText.setInputType(TYPE_CLASS_NUMBER);
editText.addTextChangedListener(new TextWatcher() {
@@ -29,18 +35,20 @@ public class LauncherPreferenceRendererSettingsFragment extends LauncherPreferen
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// Nothing, its boilerplate
}
+
@Override
public void afterTextChanged(Editable editable) {
// Nothing, its boilerplate
}
+
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// This is just to handle the summary not updating when its above max int value
// Horrible I know.
- if (editText.getText().toString().isEmpty()){
+ if (editText.getText().toString().isEmpty()) {
editText.setText("0");
}
- if (Long.parseLong(editText.getText().toString()) > Integer.MAX_VALUE){
+ if (Long.parseLong(editText.getText().toString()) > Integer.MAX_VALUE) {
editText.setError("Too big! Setting to maximum value");
editText.setText(String.valueOf(Integer.MAX_VALUE));
}
@@ -49,12 +57,30 @@ public class LauncherPreferenceRendererSettingsFragment extends LauncherPreferen
});
});
updateGLSLCacheSummary(); // Just updates the summary with the value when user opens the menu. Yes it's out of place.
+ updateMultiDrawSummary(); // Same as above
}
@Override
public void onSharedPreferenceChanged(SharedPreferences p, String s) {
GLSLCachePreference = findPreference("mg_renderer_setting_glsl_cache_size");
updateGLSLCacheSummary();
+ updateMultiDrawSummary();
+ }
+
+ private void updateMultiDrawSummary() {
+ if (MultiDrawEmulationPreference != null) {
+ if (MultiDrawEmulationPreference.getSummaryProvider() != null) {
+ MultiDrawSummaryProvider = MultiDrawEmulationPreference.getSummaryProvider();
+ }
+ if (ComputeMultiDrawPreference.isChecked()) {
+ MultiDrawEmulationPreference.setEnabled(false);
+ MultiDrawEmulationPreference.setSummaryProvider(null);
+ MultiDrawEmulationPreference.setSummary("(Experimental) Compute");
+ } else if (MultiDrawEmulationPreference != null) {
+ MultiDrawEmulationPreference.setEnabled(true);
+ MultiDrawEmulationPreference.setSummaryProvider(MultiDrawSummaryProvider);
+ }
+ }
}
private void updateGLSLCacheSummary() {
@@ -62,6 +88,8 @@ public class LauncherPreferenceRendererSettingsFragment extends LauncherPreferen
if (Objects.equals(Objects.requireNonNull(this.GLSLCachePreference).getText(), "") || Integer.parseInt(Objects.requireNonNull(this.GLSLCachePreference.getText())) == 0) {
this.GLSLCachePreference.setSummary(getString(R.string.global_off));
} else this.GLSLCachePreference.setSummary(this.GLSLCachePreference.getText() + " MB");
- } catch (Exception e){ e.printStackTrace(); }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml
index 2104b8d3a..1d06de0f6 100644
--- a/app_pojavlauncher/src/main/res/values/strings.xml
+++ b/app_pojavlauncher/src/main/res/values/strings.xml
@@ -205,7 +205,6 @@
Java Runtimes, JVM Arguments, RAM amount and sandbox
Miscellaneous settings
Version list and libraries check
- Experimental Stuff
Use things there with consideration, no support
Enable sustained performance mode
Limit thermal throttling by limiting peak performance.
@@ -439,11 +438,19 @@
Max GLSL cache size
Use ANGLE as driver
Multidraw emulation mode
+ Error Filtering
+ Disable GPU Utilization in F3 menu
+ Fixes random crashes when F3 is open on some Mali devices
+ ANGLE Only Options
+ Fix hand and held items from going through blocks
+ Only affects ANGLE, can affect performance.
+ Experimental Stuff
Advertise Experimental OpenGL 4.3 extensions
May help with mod crashes. Disable if not needed, can cause crashes.
Advertise Experimental Compute Shader extension
May help with shaderpack glitches. Disable if not needed, can cause crashes.
- Error Filtering
+ Use Compute Multidraw Emulation
+ Uses compute shaders for multidraw emulation
Amethyst
Only Vanilla 1.3.1 and above are supported on demo accounts
Demo Profile not supported
diff --git a/app_pojavlauncher/src/main/res/xml/pref_renderer.xml b/app_pojavlauncher/src/main/res/xml/pref_renderer.xml
index fbb8e5a13..65abf49aa 100644
--- a/app_pojavlauncher/src/main/res/xml/pref_renderer.xml
+++ b/app_pojavlauncher/src/main/res/xml/pref_renderer.xml
@@ -9,8 +9,7 @@
android:title="@string/mg_renderer_glsl_cache"
android:key="mg_renderer_setting_glsl_cache_size"
android:inputType="number"
- android:defaultValue="2048"
- />
+ android:defaultValue="2048" />
+
+
+
+
+ android:defaultValue="false" />
+ android:defaultValue="false" />
+
From 78f8c87ca5cac4443ff66fbebbceed13359cdf50 Mon Sep 17 00:00:00 2001
From: alexytomi <60690056+alexytomi@users.noreply.github.com>
Date: Sat, 19 Jul 2025 23:53:31 +0800
Subject: [PATCH 3/3] change(MobileGlues/defaults): Change GLSL default to
128MB
Some users have reported increased performance when lowering it, weird
but sure.
---
.../java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java | 2 +-
app_pojavlauncher/src/main/res/xml/pref_renderer.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java
index 761d89b39..9a8732b11 100644
--- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java
+++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java
@@ -240,7 +240,7 @@ public class LauncherPreferences {
if (DEFAULT_PREF.getBoolean("mg_renderer_multidrawCompute", false)) {
MGConfigJson.put("multidrawMode", 5); // Special handling for the (special mayhaps) compute emulation
} else MGConfigJson.put("multidrawMode", Integer.parseInt(DEFAULT_PREF.getString("mg_renderer_setting_multidraw", "0")));
- MGConfigJson.put("maxGlslCacheSize", Integer.parseInt(DEFAULT_PREF.getString("mg_renderer_setting_glsl_cache_size", "2048")));
+ MGConfigJson.put("maxGlslCacheSize", Integer.parseInt(DEFAULT_PREF.getString("mg_renderer_setting_glsl_cache_size", "128")));
File configFile = new File(Tools.DIR_DATA + "/MobileGlues", "config.json");
FileUtils.ensureParentDirectory(configFile);
try {
diff --git a/app_pojavlauncher/src/main/res/xml/pref_renderer.xml b/app_pojavlauncher/src/main/res/xml/pref_renderer.xml
index 65abf49aa..eeb836d72 100644
--- a/app_pojavlauncher/src/main/res/xml/pref_renderer.xml
+++ b/app_pojavlauncher/src/main/res/xml/pref_renderer.xml
@@ -9,7 +9,7 @@
android:title="@string/mg_renderer_glsl_cache"
android:key="mg_renderer_setting_glsl_cache_size"
android:inputType="number"
- android:defaultValue="2048" />
+ android:defaultValue="128" />