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/MainActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java index a87316069..f35eb39f9 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -356,7 +356,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; } @@ -370,6 +369,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; 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 d6dfc112b..1b06c7542 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 @@ -235,12 +235,16 @@ 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("maxGlslCacheSize", Integer.parseInt(DEFAULT_PREF.getString("mg_renderer_setting_glsl_cache_size", "2048"))); + 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", "128"))); File configFile = new File(Tools.DIR_DATA + "/MobileGlues", "config.json"); FileUtils.ensureParentDirectory(configFile); try { 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 874252e46..8ff87f43f 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..eeb836d72 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="128" /> + + + + + android:defaultValue="false" /> + android:defaultValue="false" /> +