diff --git a/Source/Android/res/values-ja/strings.xml b/Source/Android/res/values-ja/strings.xml
index 77db4fee79..db9c1854fd 100644
--- a/Source/Android/res/values-ja/strings.xml
+++ b/Source/Android/res/values-ja/strings.xml
@@ -29,6 +29,7 @@
デバイスの互換性の警告
この電話は、NEON拡張をサポートしていません。 おそらくDolphinを実行することはできません。\nあなたはとにかくそれを実行してみますか?
+ デバイスはOpenGLES3のビデオドライバのバグがあります。\nあなたはとにかくそれを使用してみたいのですか?
クリックされたファイル: %1$s
diff --git a/Source/Android/res/values/strings.xml b/Source/Android/res/values/strings.xml
index ca7157fd44..7ffc2bcfd2 100644
--- a/Source/Android/res/values/strings.xml
+++ b/Source/Android/res/values/strings.xml
@@ -29,6 +29,7 @@
Device Compatibility Warning
Your phone doesn\'t support NEON which makes it incapable of running Dolphin Mobile?\nDo you want to try anyway?
+ Your device has known buggy video drivers for OpenGL ES 3.\nDo you want to try anyway?
File clicked: %1$s
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/settings/VideoSettingsFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/settings/VideoSettingsFragment.java
index e181fc32bc..81d4d2dad7 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/settings/VideoSettingsFragment.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/settings/VideoSettingsFragment.java
@@ -7,6 +7,8 @@
package org.dolphinemu.dolphinemu.settings;
import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
@@ -29,6 +31,7 @@ public final class VideoSettingsFragment extends PreferenceFragment
public static String m_GLRenderer;
public static String m_GLExtensions;
public static float m_QualcommVersion;
+ public static boolean m_Inited = false;
private Activity m_activity;
/**
@@ -147,20 +150,24 @@ public final class VideoSettingsFragment extends PreferenceFragment
*/
public static boolean SupportsGLES3()
{
- VersionCheck mbuffer = new VersionCheck();
- m_GLVersion = mbuffer.getVersion();
- m_GLVendor = mbuffer.getVendor();
- m_GLRenderer = mbuffer.getRenderer();
- m_GLExtensions = mbuffer.getExtensions();
-
boolean mSupportsGLES3 = false;
+ if (!m_Inited)
+ {
+ VersionCheck mbuffer = new VersionCheck();
+ m_GLVersion = mbuffer.getVersion();
+ m_GLVendor = mbuffer.getVendor();
+ m_GLRenderer = mbuffer.getRenderer();
+ m_GLExtensions = mbuffer.getExtensions();
+ m_Inited = true;
+ }
+
// Check for OpenGL ES 3 support (General case).
if (m_GLVersion != null && m_GLVersion.contains("OpenGL ES 3.0"))
mSupportsGLES3 = true;
// Checking for OpenGL ES 3 support for certain Qualcomm devices.
- if (!mSupportsGLES3 && m_GLVendor != null && m_GLVendor.equals("Qualcomm"))
+ if (m_GLVendor != null && m_GLVendor.equals("Qualcomm"))
{
if (m_GLRenderer.contains("Adreno (TM) 3"))
{
@@ -182,6 +189,7 @@ public final class VideoSettingsFragment extends PreferenceFragment
mSupportsGLES3 = true;
}
}
+
return mSupportsGLES3;
}
@@ -253,10 +261,36 @@ public final class VideoSettingsFragment extends PreferenceFragment
}
else if (preference.getString(key, "Software Renderer").equals("OGL"))
{
- mainScreen.getPreference(0).setEnabled(true);
- mainScreen.getPreference(1).setEnabled(true);
- mainScreen.getPreference(3).setEnabled(true);
- //mainScreen.getPreference(4).setEnabled(false);
+ // Create an alert telling them that their phone sucks
+ if (VideoSettingsFragment.SupportsGLES3()
+ && VideoSettingsFragment.m_GLVendor != null
+ && VideoSettingsFragment.m_GLVendor.equals("Qualcomm")
+ && VideoSettingsFragment.m_QualcommVersion == 14.0f)
+ {
+ AlertDialog.Builder builder = new AlertDialog.Builder(m_activity);
+ builder.setTitle(R.string.device_compat_warning);
+ builder.setMessage(R.string.device_gles3compat_warning_msg);
+ builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ mainScreen.getPreference(0).setEnabled(true);
+ mainScreen.getPreference(1).setEnabled(true);
+ mainScreen.getPreference(3).setEnabled(true);
+ //mainScreen.getPreference(4).setEnabled(false);
+ }
+ });
+ builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which)
+ {
+ // Get an editor.
+ SharedPreferences.Editor editor = sPrefs.edit();
+ editor.putString("gpuPref", "Software Renderer");
+ editor.commit();
+ videoBackends.setValue("Software Renderer");
+ videoBackends.setSummary("Software Renderer");
+ }
+ });
+ builder.show();
+ }
}
}
}