diff --git a/plugins/GSdx/GLLoader.cpp b/plugins/GSdx/GLLoader.cpp index 60f91813a9..8cde467fc0 100644 --- a/plugins/GSdx/GLLoader.cpp +++ b/plugins/GSdx/GLLoader.cpp @@ -183,7 +183,9 @@ namespace GLLoader { const char* vendor = (const char*)glGetString(GL_VENDOR); fprintf(stderr, "Supported Opengl version: %s on GPU: %s. Vendor: %s\n", s, glGetString(GL_RENDERER), vendor); +#ifndef ENABLE_GLES fprintf(stderr, "Note: the maximal version supported by GSdx is 3.3 (even if you driver support more)!\n"); +#endif // Name change but driver is still bad! if (strstr(vendor, "ATI") || strstr(vendor, "Advanced Micro Devices")) @@ -222,10 +224,12 @@ namespace GLLoader { #else found_geometry_shader = false; #endif +#ifndef ENABLE_GLES if ( (major_gl < major) || ( major_gl == major && minor_gl < minor ) ) { fprintf(stderr, "OPENGL %d.%d is not supported\n", major, minor); return false; } +#endif return true; } @@ -234,6 +238,7 @@ namespace GLLoader { int max_ext = 0; glGetIntegerv(GL_NUM_EXTENSIONS, &max_ext); +#ifndef ENABLE_GLES if (gl_GetStringi && max_ext) { for (GLint i = 0; i < max_ext; i++) { string ext((const char*)gl_GetStringi(GL_EXTENSIONS, i)); @@ -279,6 +284,7 @@ namespace GLLoader { #endif } } +#endif bool status = true; #ifndef ENABLE_GLES diff --git a/plugins/GSdx/GSShaderOGL.cpp b/plugins/GSdx/GSShaderOGL.cpp index 580b352a8d..f1ee3dad30 100644 --- a/plugins/GSdx/GSShaderOGL.cpp +++ b/plugins/GSdx/GSShaderOGL.cpp @@ -420,6 +420,7 @@ std::string GSShaderOGL::GenGlslHeader(const std::string& entry, GLenum type, co // intel linux refuse to define it #ifdef ENABLE_GLES header += "#define pGL_ES 1\n"; + header += "precision highp float;\n"; #else header += "#define pGL_ES 0\n"; #endif diff --git a/plugins/GSdx/GSWndEGL.cpp b/plugins/GSdx/GSWndEGL.cpp index 7c98518cbb..2e13acd4b2 100644 --- a/plugins/GSdx/GSWndEGL.cpp +++ b/plugins/GSdx/GSWndEGL.cpp @@ -32,31 +32,28 @@ GSWndEGL::GSWndEGL() void GSWndEGL::CreateContext(int major, int minor) { EGLConfig eglConfig; - EGLint numConfigs; + EGLint numConfigs = 0; EGLint contextAttribs[] = -#ifdef ENABLE_GLES - { - EGL_CONTEXT_CLIENT_VERSION, 2, - EGL_NONE - }; -#else { EGL_CONTEXT_MAJOR_VERSION_KHR, major, EGL_CONTEXT_MINOR_VERSION_KHR, minor, +#ifndef ENABLE_GLES #ifdef ENABLE_OGL_DEBUG EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR, #endif EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR, +#endif EGL_NONE }; -#endif EGLint NullContextAttribs[] = { EGL_NONE }; EGLint attrList[] = { EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, EGL_DEPTH_SIZE, 24, +#ifndef ENABLE_GLES EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, +#endif EGL_NONE }; @@ -64,7 +61,8 @@ void GSWndEGL::CreateContext(int major, int minor) eglBindAPI(EGL_OPENGL_API); #endif - if ( !eglChooseConfig(m_eglDisplay, attrList, &eglConfig, 1, &numConfigs) ) + eglChooseConfig(m_eglDisplay, attrList, &eglConfig, 1, &numConfigs); + if ( numConfigs == 0 ) { fprintf(stderr,"EGL: Failed to get a frame buffer config!\n"); throw GSDXRecoverableError(); @@ -137,7 +135,12 @@ bool GSWndEGL::Attach(void* handle, bool managed) m_NativeDisplay = XOpenDisplay(NULL); OpenEGLDisplay(); +#ifdef ENABLE_GLES + // FIXME: update it to GLES 3.1 when they support it + CreateContext(3, 0); +#else CreateContext(3, 3); +#endif AttachContext(); @@ -184,7 +187,12 @@ bool GSWndEGL::Create(const string& title, int w, int h) m_NativeWindow = XCreateSimpleWindow(m_NativeDisplay, DefaultRootWindow(m_NativeDisplay), 0, 0, w, h, 0, 0, 0); XMapWindow (m_NativeDisplay, m_NativeWindow); +#ifdef ENABLE_GLES + // FIXME: update it to GLES 3.1 when they support it + CreateContext(3, 0); +#else CreateContext(3, 3); +#endif AttachContext();