diff --git a/Source/Android/.idea/compiler.xml b/Source/Android/.idea/compiler.xml
index 217af471a9..9292f81c68 100644
--- a/Source/Android/.idea/compiler.xml
+++ b/Source/Android/.idea/compiler.xml
@@ -2,6 +2,9 @@
+
+
+
@@ -19,5 +22,8 @@
+
+
+
diff --git a/Source/Android/.idea/copyright/profiles_settings.xml b/Source/Android/.idea/copyright/profiles_settings.xml
index 3572571ad8..d02d5cbd75 100644
--- a/Source/Android/.idea/copyright/profiles_settings.xml
+++ b/Source/Android/.idea/copyright/profiles_settings.xml
@@ -1,5 +1,7 @@
-
-
+
+
+
+
\ No newline at end of file
diff --git a/Source/Android/.idea/workspace.xml b/Source/Android/.idea/workspace.xml
index 4306ba1d4c..c39565e7e4 100644
--- a/Source/Android/.idea/workspace.xml
+++ b/Source/Android/.idea/workspace.xml
@@ -47,6 +47,9 @@
+
+
+
@@ -54,7 +57,6 @@
-
@@ -91,6 +93,7 @@
+
@@ -103,7 +106,7 @@
-
+
@@ -112,7 +115,7 @@
-
+
@@ -121,7 +124,7 @@
-
+
@@ -129,45 +132,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -260,6 +224,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -298,7 +272,6 @@
-
@@ -419,7 +392,7 @@
-
+
@@ -427,7 +400,7 @@
-
+
@@ -640,14 +613,15 @@
-
+
+
-
-
+
+
@@ -752,8 +726,8 @@
-
-
+
+
@@ -793,13 +767,6 @@
-
-
-
-
-
-
-
@@ -821,6 +788,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -830,7 +818,7 @@
-
+
@@ -838,23 +826,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -876,6 +850,18 @@
+
+
+ Dolphin
+
+
+
+
+
Dolphin Emulator (Android)|Android
@@ -948,6 +934,21 @@
+
+
+ Copywrite
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java b/Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java
index 4ce82beefe..772f2b9cb6 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/PrefsActivity.java
@@ -2,7 +2,6 @@ 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;
@@ -20,14 +19,13 @@ import javax.microedition.khronos.opengles.GL10;
*/
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;
diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp
index 50266d7f84..488b2fdec6 100644
--- a/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp
+++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp
@@ -666,7 +666,7 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
{
char ppcInst[256];
DisassembleGekko(ops[i].inst.hex, em_address, ppcInst, 256);
- NOTICE_LOG(DYNA_REC, "Unflushed register: %s", ppcInst);
+ //NOTICE_LOG(DYNA_REC, "Unflushed register: %s", ppcInst);
}
#endif
if (js.skipnext) {
diff --git a/Source/Core/DolphinWX/Src/GLInterface/EGL.h b/Source/Core/DolphinWX/Src/GLInterface/EGL.h
index cf218ad760..cd0969c4b7 100644
--- a/Source/Core/DolphinWX/Src/GLInterface/EGL.h
+++ b/Source/Core/DolphinWX/Src/GLInterface/EGL.h
@@ -18,7 +18,11 @@
#define _INTERFACEEGL_H_
#if USE_GLES
+#ifdef USE_GLES3
+#include
+#else
#include
+#endif
#else
#include
#include
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/FramebufferManager.cpp b/Source/Plugins/Plugin_VideoOGL/Src/FramebufferManager.cpp
index 5ce106601f..27a5dff2de 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/FramebufferManager.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/FramebufferManager.cpp
@@ -59,6 +59,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms
// Create EFB target.
glGenFramebuffers(1, &m_efbFramebuffer);
+ glActiveTexture(GL_TEXTURE0 + 9);
if (m_msaaSamples <= 1)
{
@@ -69,20 +70,20 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms
m_efbColor = glObj[0];
m_efbDepth = glObj[1];
- glBindTexture(GL_TEXTURE_RECTANGLE, m_efbColor);
- glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_RGBA8, m_targetWidth, m_targetHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ glBindTexture(getFbType(), m_efbColor);
+ glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0);
+ glTexImage2D(getFbType(), 0, GL_RGBA8, m_targetWidth, m_targetHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glBindTexture(GL_TEXTURE_RECTANGLE, m_efbDepth);
- glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_DEPTH_COMPONENT24, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
-
- glBindTexture(GL_TEXTURE_RECTANGLE, 0);
+ glBindTexture(getFbType(), m_efbDepth);
+ glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0);
+ glTexImage2D(getFbType(), 0, GL_DEPTH_COMPONENT24, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
// Bind target textures to the EFB framebuffer.
glBindFramebuffer(GL_FRAMEBUFFER, m_efbFramebuffer);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_RECTANGLE, m_efbColor, 0);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_RECTANGLE, m_efbDepth, 0);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, getFbType(), m_efbColor, 0);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, getFbType(), m_efbDepth, 0);
GL_REPORT_FBO_ERROR();
}
@@ -131,20 +132,20 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms
m_resolvedColorTexture = glObj[0];
m_resolvedDepthTexture = glObj[1];
- glBindTexture(GL_TEXTURE_RECTANGLE, m_resolvedColorTexture);
- glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_RGBA8, m_targetWidth, m_targetHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ glBindTexture(getFbType(), m_resolvedColorTexture);
+ glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0);
+ glTexImage2D(getFbType(), 0, GL_RGBA8, m_targetWidth, m_targetHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glBindTexture(GL_TEXTURE_RECTANGLE, m_resolvedDepthTexture);
- glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_DEPTH_COMPONENT24, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL);
-
- glBindTexture(GL_TEXTURE_RECTANGLE, 0);
+ glBindTexture(getFbType(), m_resolvedDepthTexture);
+ glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0);
+ glTexImage2D(getFbType(), 0, GL_DEPTH_COMPONENT24, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL);
// Bind resolved textures to resolved framebuffer.
glBindFramebuffer(GL_FRAMEBUFFER, m_resolvedFramebuffer);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_RECTANGLE, m_resolvedColorTexture, 0);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_RECTANGLE, m_resolvedDepthTexture, 0);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, getFbType(), m_resolvedColorTexture, 0);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, getFbType(), m_resolvedDepthTexture, 0);
GL_REPORT_FBO_ERROR();
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/FramebufferManager.h b/Source/Plugins/Plugin_VideoOGL/Src/FramebufferManager.h
index e0c96ed8a6..4a8b09722c 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/FramebufferManager.h
+++ b/Source/Plugins/Plugin_VideoOGL/Src/FramebufferManager.h
@@ -7,6 +7,7 @@
#include "GLUtil.h"
#include "FramebufferManagerBase.h"
+#include "Render.h"
// On the GameCube, the game sends a request for the graphics processor to
// transfer its internal EFB (Embedded Framebuffer) to an area in GameCube RAM
@@ -55,6 +56,17 @@ struct XFBSource : public XFBSourceBase
const GLuint renderbuf;
};
+inline GLenum getFbType()
+{
+#ifndef USE_GLES3
+ if(g_ogl_config.eSupportedGLSLVersion == GLSL_120)
+ {
+ return GL_TEXTURE_RECTANGLE;
+ }
+#endif
+ return GL_TEXTURE_2D;
+}
+
class FramebufferManager : public FramebufferManagerBase
{
public:
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
index 6057fa99f4..8beee0fd89 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
+++ b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
@@ -23,12 +23,22 @@
#define TEXFUNC "texture2D"
#ifdef USE_GLES3
#include "GLFunctions.h"
+#define GLAPIENTRY GL_APIENTRY
+#define GL_SAMPLES_PASSED GL_ANY_SAMPLES_PASSED
+#define GL_READ_ONLY 0x88B8
+#define GL_WRITE_ONLY 0x88B9
+#define GL_READ_WRITE 0x88BA
+#define GL_SRC1_ALPHA 0
+#define GL_BGRA GL_RGBA
+#define glDrawElementsBaseVertex
+#define GLRENDERBUFFERFORMAT 0x8058 /* RGBA8_OES */
#endif
#else
#define TEX2D GL_TEXTURE_RECTANGLE_ARB
#define PREC
#define TEXTYPE "sampler2DRect"
#define TEXFUNC "texture2DRect"
+#define GLRENDERBUFFERFORMAT GL_RGBA
#endif
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
index 1da28f9cc5..1eed65a01e 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
@@ -509,7 +509,6 @@ void ProgramShaderCache::CreateHeader ( void )
snprintf(s_glsl_header, sizeof(s_glsl_header),
"#version %s\n"
"%s\n" // default precision
- "%s\n" // tex_rect
"%s\n" // ubo
"\n"// A few required defines and ones that will make our lives a lot easier
@@ -534,10 +533,14 @@ void ProgramShaderCache::CreateHeader ( void )
"%s\n"
"%s\n"
"#define COLOROUT(name) %s\n"
+
+ // texture2d hack
+ "%s\n"
+ "%s\n"
+ "%s\n"
, v==GLSLES3 ? "300 es" : v==GLSL_120 ? "120" : v==GLSL_130 ? "130" : "140"
, v==GLSLES3 ? "precision highp float;" : ""
- , v==GLSLES3 ? "" : v<=GLSL_130 ? "#extension GL_ARB_texture_rectangle : enable" : "#define texture2DRect texture"
, g_ActiveConfig.backend_info.bSupportsGLSLUBO && v 0)
glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)(1 << g_ActiveConfig.iMaxAnisotropy));
+#endif
}
void SamplerCache::Clear()
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/TextureCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/TextureCache.cpp
index c53bb2485a..da3a4b33e9 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/TextureCache.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/TextureCache.cpp
@@ -63,6 +63,7 @@ static std::map s_VBO;
bool SaveTexture(const char* filename, u32 textarget, u32 tex, int virtual_width, int virtual_height, unsigned int level)
{
+#ifndef USE_GLES3
int width = std::max(virtual_width >> level, 1);
int height = std::max(virtual_height >> level, 1);
std::vector data(width * height);
@@ -80,6 +81,9 @@ bool SaveTexture(const char* filename, u32 textarget, u32 tex, int virtual_width
}
return SaveTGA(filename, width, height, &data[0]);
+#else
+ return false;
+#endif
}
TextureCache::TCacheEntry::~TCacheEntry()
@@ -158,7 +162,7 @@ TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width,
gl_iformat = GL_RGBA;
gl_type = GL_UNSIGNED_BYTE;
break;
-
+#ifndef USE_GLES3
case PC_TEX_FMT_I4_AS_I8:
gl_format = GL_LUMINANCE;
gl_iformat = GL_INTENSITY4;
@@ -182,7 +186,7 @@ TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width,
gl_iformat = GL_LUMINANCE8_ALPHA8;
gl_type = GL_UNSIGNED_BYTE;
break;
-
+#endif
case PC_TEX_FMT_RGB565:
gl_format = GL_RGB;
gl_iformat = GL_RGB;
@@ -296,7 +300,7 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
GL_REPORT_ERRORD();
glActiveTexture(GL_TEXTURE0+9);
- glBindTexture(GL_TEXTURE_RECTANGLE, read_texture);
+ glBindTexture(getFbType(), read_texture);
glViewport(0, 0, virtual_width, virtual_height);
@@ -360,8 +364,6 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
glBindVertexArray(vbo_it->second.vao);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- glBindTexture(GL_TEXTURE_RECTANGLE_ARB, 0);
-
GL_REPORT_ERRORD();
}
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp b/Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp
index 8e8ae4b21c..d3e73b177b 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/TextureConverter.cpp
@@ -167,11 +167,10 @@ void Init()
s_srcTextureWidth = 0;
s_srcTextureHeight = 0;
+ glActiveTexture(GL_TEXTURE0 + 9);
glGenTextures(1, &s_srcTexture);
- glBindTexture(GL_TEXTURE_RECTANGLE_ARB, s_srcTexture);
- glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glBindTexture(GL_TEXTURE_RECTANGLE_ARB, 0);
+ glBindTexture(getFbType(), s_srcTexture);
+ glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0);
CreatePrograms();
}
@@ -213,17 +212,17 @@ void EncodeToRamUsingShader(GLuint srcTexture, const TargetRectangle& sourceRc,
// set source texture
glActiveTexture(GL_TEXTURE0+9);
- glBindTexture(GL_TEXTURE_RECTANGLE, srcTexture);
+ glBindTexture(getFbType(), srcTexture);
if (linearFilter)
{
- glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(getFbType(), GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(getFbType(), GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}
else
{
- glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(getFbType(), GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(getFbType(), GL_TEXTURE_MIN_FILTER, GL_NEAREST);
}
GL_REPORT_ERRORD();
@@ -251,8 +250,6 @@ void EncodeToRamUsingShader(GLuint srcTexture, const TargetRectangle& sourceRc,
glBindVertexArray( s_encode_VAO );
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- glBindTexture(GL_TEXTURE_RECTANGLE_ARB, 0);
-
GL_REPORT_ERRORD();
// .. and then read back the results.
@@ -386,17 +383,17 @@ void DecodeToTexture(u32 xfbAddr, int srcWidth, int srcHeight, GLuint destRender
// activate source texture
// set srcAddr as data for source texture
glActiveTexture(GL_TEXTURE0+9);
- glBindTexture(GL_TEXTURE_RECTANGLE, s_srcTexture);
+ glBindTexture(getFbType(), s_srcTexture);
// TODO: make this less slow. (How?)
if ((GLsizei)s_srcTextureWidth == (GLsizei)srcFmtWidth && (GLsizei)s_srcTextureHeight == (GLsizei)srcHeight)
{
- glTexSubImage2D(GL_TEXTURE_RECTANGLE, 0,0,0,s_srcTextureWidth, s_srcTextureHeight,
+ glTexSubImage2D(getFbType(), 0,0,0,s_srcTextureWidth, s_srcTextureHeight,
GL_BGRA, GL_UNSIGNED_BYTE, srcAddr);
}
else
{
- glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_RGBA8, (GLsizei)srcFmtWidth, (GLsizei)srcHeight,
+ glTexImage2D(getFbType(), 0, GL_RGBA8, (GLsizei)srcFmtWidth, (GLsizei)srcHeight,
0, GL_BGRA, GL_UNSIGNED_BYTE, srcAddr);
s_srcTextureWidth = (GLsizei)srcFmtWidth;
s_srcTextureHeight = (GLsizei)srcHeight;
@@ -431,9 +428,6 @@ void DecodeToTexture(u32 xfbAddr, int srcWidth, int srcHeight, GLuint destRender
GL_REPORT_ERRORD();
- // reset state
- glBindTexture(GL_TEXTURE_RECTANGLE_ARB, 0);
-
VertexShaderManager::SetViewportChanged();
FramebufferManager::SetFramebuffer(0);