summaryrefslogtreecommitdiff
path: root/Source/Android
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android')
-rw-r--r--Source/Android/.idea/workspace.xml82
-rw-r--r--Source/Android/res/layout/prefs.xml3
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java134
3 files changed, 170 insertions, 49 deletions
diff --git a/Source/Android/.idea/workspace.xml b/Source/Android/.idea/workspace.xml
index 1272e30c4c..4306ba1d4c 100644
--- a/Source/Android/.idea/workspace.xml
+++ b/Source/Android/.idea/workspace.xml
@@ -118,37 +118,21 @@
</provider>
</entry>
</file>
- <file leaf-file-name="InputConfigActivity.java" pinned="false" current="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/InputConfigActivity.java">
- <provider selected="true" editor-type-id="text-editor">
- <state line="97" column="16" selection-start="3629" selection-end="3721" vertical-scroll-proportion="0.0" vertical-offset="1230" max-vertical-offset="2775">
- <folding />
- </state>
- </provider>
- </entry>
- </file>
- <file leaf-file-name="AndroidManifest.xml" pinned="false" current="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/AndroidManifest.xml">
- <provider selected="true" editor-type-id="text-editor">
- <state line="3" column="26" selection-start="174" selection-end="174" vertical-scroll-proportion="0.0" vertical-offset="30" max-vertical-offset="825">
- <folding />
- </state>
- </provider>
- </entry>
- </file>
- <file leaf-file-name="PrefsActivity.java" pinned="false" current="false" current-in-tab="false">
+ <file leaf-file-name="PrefsActivity.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/PrefsActivity.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="62" column="0" selection-start="1857" selection-end="1857" vertical-scroll-proportion="0.0" vertical-offset="720" max-vertical-offset="1260">
- <folding />
+ <state line="177" column="17" selection-start="5357" selection-end="5357" vertical-scroll-proportion="0.09090909" vertical-offset="2619" max-vertical-offset="3375">
+ <folding>
+ <element signature="imports" expanded="true" />
+ </folding>
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="prefs.xml" pinned="false" current="true" current-in-tab="true">
+ <file leaf-file-name="prefs.xml" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/res/layout/prefs.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="6" column="37" selection-start="267" selection-end="267" vertical-scroll-proportion="0.2425876" vertical-offset="0" max-vertical-offset="420">
+ <state line="20" column="33" selection-start="799" selection-end="819" vertical-scroll-proportion="-12.0" vertical-offset="0" max-vertical-offset="435">
<folding />
</state>
</provider>
@@ -169,7 +153,7 @@
<file leaf-file-name="prefvalues.xml" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/res/values/prefvalues.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="1" column="11" selection-start="50" selection-end="50" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="255">
+ <state line="8" column="14" selection-start="231" selection-end="248" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="255">
<folding />
</state>
</provider>
@@ -178,7 +162,7 @@
<file leaf-file-name="GameListItem.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/GameListItem.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="22" column="24" selection-start="570" selection-end="570" vertical-scroll-proportion="0.0" vertical-offset="315" max-vertical-offset="1230">
+ <state line="22" column="24" selection-start="570" selection-end="570" vertical-scroll-proportion="0.0" vertical-offset="225" max-vertical-offset="1140">
<folding />
</state>
</provider>
@@ -220,8 +204,8 @@
<option value="$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/GameListFragment.java" />
<option value="$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/FolderBrowserAdapter.java" />
<option value="$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/FolderBrowser.java" />
- <option value="$PROJECT_DIR$/res/layout/prefs.xml" />
<option value="$PROJECT_DIR$/res/values/prefvalues.xml" />
+ <option value="$PROJECT_DIR$/res/layout/prefs.xml" />
<option value="$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/PrefsActivity.java" />
</list>
</option>
@@ -781,13 +765,6 @@
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/GameListItem.java">
- <provider selected="true" editor-type-id="text-editor">
- <state line="22" column="24" selection-start="570" selection-end="570" vertical-scroll-proportion="0.0" vertical-offset="405" max-vertical-offset="1140">
- <folding />
- </state>
- </provider>
- </entry>
<entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/AboutActivity.java">
<provider selected="true" editor-type-id="text-editor">
<state line="26" column="125" selection-start="741" selection-end="741" vertical-scroll-proportion="0.0" vertical-offset="120" max-vertical-offset="495">
@@ -816,30 +793,30 @@
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/GameListActivity.java">
+ <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/DolphinEmulator.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="173" column="16" selection-start="5541" selection-end="5638" vertical-scroll-proportion="0.0" vertical-offset="2070" max-vertical-offset="3390">
+ <state line="224" column="45" selection-start="6730" selection-end="6769" vertical-scroll-proportion="0.0" vertical-offset="2668" max-vertical-offset="3315">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/DolphinEmulator.java">
+ <entry file="file://$PROJECT_DIR$/AndroidManifest.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="224" column="45" selection-start="6730" selection-end="6769" vertical-scroll-proportion="0.0" vertical-offset="2668" max-vertical-offset="3315">
+ <state line="3" column="26" selection-start="174" selection-end="174" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="825">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/InputConfigActivity.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="97" column="16" selection-start="3629" selection-end="3721" vertical-scroll-proportion="0.0" vertical-offset="900" max-vertical-offset="2775">
+ <state line="97" column="16" selection-start="3629" selection-end="3721" vertical-scroll-proportion="0.03787879" vertical-offset="1230" max-vertical-offset="2775">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/AndroidManifest.xml">
+ <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/GameListItem.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="3" column="26" selection-start="174" selection-end="174" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="825">
+ <state line="22" column="24" selection-start="570" selection-end="570" vertical-scroll-proportion="0.0" vertical-offset="405" max-vertical-offset="1140">
<folding />
</state>
</provider>
@@ -851,28 +828,37 @@
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/res/values/prefvalues.xml">
+ <entry file="file://$PROJECT_DIR$/res/layout/prefs.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="1" column="11" selection-start="50" selection-end="50" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="255">
+ <state line="20" column="33" selection-start="799" selection-end="819" vertical-scroll-proportion="-12.0" vertical-offset="0" max-vertical-offset="435">
<folding />
</state>
</provider>
+ <provider editor-type-id="android-designer">
+ <state />
+ </provider>
</entry>
- <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/PrefsActivity.java">
+ <entry file="file://$PROJECT_DIR$/res/values/prefvalues.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="62" column="0" selection-start="1857" selection-end="1857" vertical-scroll-proportion="0.0" vertical-offset="720" max-vertical-offset="1260">
+ <state line="8" column="14" selection-start="231" selection-end="248" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="255">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/res/layout/prefs.xml">
+ <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/GameListActivity.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="6" column="37" selection-start="267" selection-end="267" vertical-scroll-proportion="0.2425876" vertical-offset="0" max-vertical-offset="420">
+ <state line="173" column="16" selection-start="5541" selection-end="5638" vertical-scroll-proportion="0.0" vertical-offset="2070" max-vertical-offset="3390">
<folding />
</state>
</provider>
- <provider editor-type-id="android-designer">
- <state />
+ </entry>
+ <entry file="file://$PROJECT_DIR$/src/org/dolphinemu/dolphinemu/PrefsActivity.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="177" column="17" selection-start="5357" selection-end="5357" vertical-scroll-proportion="0.09090909" vertical-offset="2619" max-vertical-offset="3375">
+ <folding>
+ <element signature="imports" expanded="true" />
+ </folding>
+ </state>
</provider>
</entry>
</component>
diff --git a/Source/Android/res/layout/prefs.xml b/Source/Android/res/layout/prefs.xml
index f98512d087..34700f56b7 100644
--- a/Source/Android/res/layout/prefs.xml
+++ b/Source/Android/res/layout/prefs.xml
@@ -12,7 +12,8 @@
</PreferenceCategory>
<PreferenceCategory
android:summary="Settings"
- android:title="Video Settings" >
+ android:title="Video Settings"
+ android:key="videoprefcat">
<ListPreference
android:entries="@array/gpuOptions"
android:entryValues="@array/gpuValues"
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java b/Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java
index a46138a29c..4ce82beefe 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java
@@ -2,6 +2,7 @@ package org.dolphinemu.dolphinemu;
import android.app.Activity;
import android.content.Intent;
+import android.opengl.GLSurfaceView;
import android.os.Build;
import android.os.Bundle;
import android.preference.ListPreference;
@@ -9,6 +10,9 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
+import javax.microedition.khronos.egl.*;
+import javax.microedition.khronos.opengles.GL10;
+
/**
* Copyright 2013 Dolphin Emulator Project
* Licensed under GPLv2
@@ -16,6 +20,85 @@ import android.preference.PreferenceFragment;
*/
public class PrefsActivity extends PreferenceActivity {
private PrefsActivity m_activity;
+ private String m_GLVersion;
+ private String m_GLVendor;
+ private String m_GLRenderer;
+
+
+ public class VersionCheck {
+ GLSurfaceView.Renderer mRenderer; // borrow this interface
+
+ EGL10 mEGL;
+ EGLDisplay mEGLDisplay;
+ EGLConfig[] mEGLConfigs;
+ EGLConfig mEGLConfig;
+ EGLContext mEGLContext;
+ EGLSurface mEGLSurface;
+ GL10 mGL;
+
+ String mThreadOwner;
+
+ public VersionCheck() {
+
+ int[] version = new int[2];
+ int[] attribList = new int[] {
+ EGL10.EGL_WIDTH, 1,
+ EGL10.EGL_HEIGHT, 1,
+ EGL10.EGL_RENDERABLE_TYPE, 4,
+ EGL10.EGL_NONE
+ };
+
+ // No error checking performed, minimum required code to elucidate logic
+ mEGL = (EGL10) EGLContext.getEGL();
+ mEGLDisplay = mEGL.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
+ mEGL.eglInitialize(mEGLDisplay, version);
+ mEGLConfig = chooseConfig(); // Choosing a config is a little more complicated
+ mEGLContext = mEGL.eglCreateContext(mEGLDisplay, mEGLConfig, EGL10.EGL_NO_CONTEXT, null);
+ mEGLSurface = mEGL.eglCreatePbufferSurface(mEGLDisplay, mEGLConfig, attribList);
+ mEGL.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext);
+ mGL = (GL10) mEGLContext.getGL();
+
+ // Record thread owner of OpenGL context
+ mThreadOwner = Thread.currentThread().getName();
+ }
+
+ public String getVersion()
+ {
+ return mGL.glGetString(GL10.GL_VERSION);
+ }
+
+ public String getVendor()
+ {
+ return mGL.glGetString(GL10.GL_VENDOR);
+ }
+ public String getRenderer()
+ {
+ return mGL.glGetString(GL10.GL_RENDERER);
+ }
+ private EGLConfig chooseConfig() {
+ int[] attribList = new int[] {
+ EGL10.EGL_DEPTH_SIZE, 0,
+ EGL10.EGL_STENCIL_SIZE, 0,
+ EGL10.EGL_RED_SIZE, 8,
+ EGL10.EGL_GREEN_SIZE, 8,
+ EGL10.EGL_BLUE_SIZE, 8,
+ EGL10.EGL_ALPHA_SIZE, 8,
+ EGL10.EGL_NONE
+ };
+
+ // No error checking performed, minimum required code to elucidate logic
+ // Expand on this logic to be more selective in choosing a configuration
+ int[] numConfig = new int[1];
+ mEGL.eglChooseConfig(mEGLDisplay, attribList, null, 0, numConfig);
+ int configSize = numConfig[0];
+ mEGLConfigs = new EGLConfig[configSize];
+ mEGL.eglChooseConfig(mEGLDisplay, attribList, mEGLConfigs, configSize, numConfig);
+
+ return mEGLConfigs[0]; // Best match is probably the first configuration
+ }
+ }
+
+
public class PrefsFragment extends PreferenceFragment {
@@ -63,6 +146,57 @@ public class PrefsActivity extends PreferenceActivity {
PreferenceCategory mCategory = (PreferenceCategory) findPreference("cpuprefcat");
mCategory.addPreference(etp);
+ VersionCheck mbuffer = new VersionCheck();
+ m_GLVersion = mbuffer.getVersion();
+ m_GLVendor = mbuffer.getVendor();
+ m_GLRenderer = mbuffer.getRenderer();
+
+ boolean mSupportsGLES3 = false;
+
+ if (m_GLVersion.contains("OpenGL ES 3.0")) // 3.0 support
+ mSupportsGLES3 = true;
+ if (!mSupportsGLES3 && m_GLVendor.equals("Qualcomm"))
+ {
+ if (m_GLRenderer.contains("Adreno (TM) 3"))
+ {
+ int mVStart, mVEnd = 0;
+ float mVersion;
+ mVStart = m_GLVersion.indexOf("V@") + 2;
+ for (int a = mVStart; a < m_GLVersion.length(); ++a)
+ if (m_GLVersion.charAt(a) == ' ')
+ {
+ mVEnd = a;
+ break;
+ }
+ mVersion = Float.parseFloat(m_GLVersion.substring(mVStart, mVEnd));
+
+ if (mVersion >= 14.0f)
+ mSupportsGLES3 = true;
+ }
+ }
+
+ if (!mSupportsGLES3)
+ {
+ mCategory = (PreferenceCategory) findPreference("videoprefcat");
+ ListPreference mPref = (ListPreference) findPreference("gpupref");
+ mCategory.removePreference(mPref);
+
+ final ListPreference videobackend = new ListPreference(m_activity);
+
+ _entries = new CharSequence[] {
+ "Software Renderer",
+ };
+ _entryvalues = new CharSequence[] {"Software Renderer"};
+
+ videobackend.setKey("gpupref");
+ videobackend.setTitle("Video Backend");
+ videobackend.setSummary("Video backend to use");
+
+ videobackend.setEntries(_entries);
+ videobackend.setEntryValues(_entryvalues);
+
+ mCategory.addPreference(videobackend);
+ }
}
}