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 @@ + + 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 @@ - + @@ -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);