raster pushed a commit to branch efl-1.8.

http://git.enlightenment.org/core/efl.git/commit/?id=eb23cc28bbd2782d6963f1a0e73d530704078790

commit eb23cc28bbd2782d6963f1a0e73d530704078790
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Tue Jan 7 13:13:01 2014 +0900

    evas - gl-x11 engine - put in guessed blacklist of yinvert extn for intel 
mesa
    
    Conflicts:
        src/modules/evas/engines/gl_x11/evas_engine.c
---
 src/modules/evas/engines/gl_x11/evas_engine.c | 27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c 
b/src/modules/evas/engines/gl_x11/evas_engine.c
index 4e5c22c..a964254 100644
--- a/src/modules/evas/engines/gl_x11/evas_engine.c
+++ b/src/modules/evas/engines/gl_x11/evas_engine.c
@@ -71,7 +71,9 @@ struct _Render_Engine
 static int initted = 0;
 static int gl_wins = 0;
 static int extn_have_buffer_age = 1;
-static int extn_have_y_inverted = 0;
+#ifdef GL_GLES
+static int extn_have_y_inverted = 1;
+#endif
 
 typedef void            (*_eng_fn) (void);
 typedef _eng_fn         (*glsym_func_eng_fn) ();
@@ -715,9 +717,28 @@ gl_extn_veto(Render_Engine *re)
           {
              extn_have_buffer_age = 0;
           }
-        if (strstr(str, "EGL_NOK_texture_from_pixmap"))
+        if (!strstr(str, "EGL_NOK_texture_from_pixmap"))
+          {
+             extn_have_y_inverted = 0;
+          }
+        else
           {
-             extn_have_y_inverted = 1;
+             const GLubyte *vendor, *renderer;
+
+             vendor = glGetString(GL_VENDOR);
+             renderer = glGetString(GL_RENDERER);
+             // XXX: workaround mesa bug!
+             // looking for mesa and intel build which is known to
+             // advertise the EGL_NOK_texture_from_pixmap extension
+             // but not set it correctly. guessing vendor/renderer
+             // strings will be like the following:
+             // OpenGL vendor string: Intel Open Source Technology Center
+             // OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Desktop
+             if (((vendor) && (strstr(vendor, "Intel"))) &&
+                 ((renderer) && (strstr(renderer, "Mesa"))) &&
+                 ((renderer) && (strstr(renderer, "Intel")))
+                )
+               extn_have_y_inverted = 0;
           }
      }
    else

-- 


Reply via email to