raster pushed a commit to branch master.

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

commit acc95afbd82f78ff785e538cc2c891bee281654c
Author: Dongyeon Kim <[email protected]>
Date:   Tue Jun 10 19:20:16 2014 +0900

    evas gl: distinguish between IMG and EXT MSAA extensions
    
    Summary:
    For drivers that support IMG_multisampled_render_to_texture,
    GL_MAX_SAMPLES_IMG should be used to query max supported samples
    Likewise, for drivers that support EXT_multisampled_render_to_texture,
    GL_MAX_SAMPLES_EXT should be used to query max supported samples
    
    @fix
    
    Reviewers: seoz, Hermet, raster, cedric
    
    Reviewed By: cedric
    
    CC: cedric
    
    Differential Revision: https://phab.enlightenment.org/D948
---
 src/lib/evas/Evas_GL.h                               |  6 ++++++
 .../evas/engines/gl_common/evas_gl_api_ext_def.h     |  8 ++++++++
 src/modules/evas/engines/gl_common/evas_gl_common.h  |  3 +++
 src/modules/evas/engines/gl_common/evas_gl_core.c    | 20 ++++++++++++--------
 4 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/src/lib/evas/Evas_GL.h b/src/lib/evas/Evas_GL.h
index 91ba179..6249d54 100644
--- a/src/lib/evas/Evas_GL.h
+++ b/src/lib/evas/Evas_GL.h
@@ -1194,6 +1194,12 @@ typedef signed long int  GLsizeiptr;   // Changed 
khronos_ssize_t
 /* GL_EXT_texture_type_2_10_10_10_REV */
 #define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368
 
+/* GL_EXT_multisampled_render_to_texture */
+#define GL_RENDERBUFFER_SAMPLES_EXT                             0x8CAB
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT               0x8D56
+#define GL_MAX_SAMPLES_EXT                                      0x8D57
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT           0x8D6C
+
 /*------------------------------------------------------------------------*
  * IMG extension tokens
  *------------------------------------------------------------------------*/
diff --git a/src/modules/evas/engines/gl_common/evas_gl_api_ext_def.h 
b/src/modules/evas/engines/gl_common/evas_gl_api_ext_def.h
index a80f518..9a81a8c 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_api_ext_def.h
+++ b/src/modules/evas/engines/gl_common/evas_gl_api_ext_def.h
@@ -264,6 +264,14 @@ _EVASGL_EXT_BEGIN(QCOM_extended_get2)
        _EVASGL_EXT_FUNCTION_END()
 _EVASGL_EXT_END()
 
+_EVASGL_EXT_BEGIN(IMG_multisampled_render_to_texture)
+       _EVASGL_EXT_DRVNAME(GL_IMG_multisampled_render_to_texture)
+_EVASGL_EXT_END()
+
+_EVASGL_EXT_BEGIN(EXT_multisampled_render_to_texture)
+       _EVASGL_EXT_DRVNAME(GL_EXT_multisampled_render_to_texture)
+_EVASGL_EXT_END()
+
 _EVASGL_EXT_BEGIN(multisampled_render_to_texture)
        _EVASGL_EXT_DRVNAME(GL_IMG_multisampled_render_to_texture)
        _EVASGL_EXT_DRVNAME(GL_EXT_multisampled_render_to_texture)
diff --git a/src/modules/evas/engines/gl_common/evas_gl_common.h 
b/src/modules/evas/engines/gl_common/evas_gl_common.h
index e206af5..917c86f 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_common.h
+++ b/src/modules/evas/engines/gl_common/evas_gl_common.h
@@ -190,6 +190,9 @@
 #ifndef GL_MAX_SAMPLES_IMG
 #define GL_MAX_SAMPLES_IMG 0x9135
 #endif
+#ifndef GL_MAX_SAMPLES_EXT
+#define GL_MAX_SAMPLES_EXT 0x8D57
+#endif
 #ifndef GL_WRITE_ONLY
 #define GL_WRITE_ONLY 0x88B9
 #endif
diff --git a/src/modules/evas/engines/gl_common/evas_gl_core.c 
b/src/modules/evas/engines/gl_common/evas_gl_core.c
index f8e7037..6aada80 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_core.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_core.c
@@ -657,17 +657,21 @@ _surface_cap_init(void *eng_data)
 #ifdef GL_GLES
    int max_samples = 0;
 
-   if (EXTENSION_SUPPORT(multisampled_render_to_texture))
+   if (EXTENSION_SUPPORT(IMG_multisampled_render_to_texture))
      {
         glGetIntegerv(GL_MAX_SAMPLES_IMG, &max_samples);
+     }
+   else if (EXTENSION_SUPPORT(EXT_multisampled_render_to_texture))
+     {
+        glGetIntegerv(GL_MAX_SAMPLES_EXT, &max_samples);
+     }
 
-        if (max_samples >= 2)
-          {
-             evgl_engine->caps.msaa_samples[0] = 2;
-             evgl_engine->caps.msaa_samples[1] = (max_samples>>1) < 2 ? 2 : 
(max_samples>>1);
-             evgl_engine->caps.msaa_samples[2] = max_samples;
-             evgl_engine->caps.msaa_supported  = 1;
-          }
+   if (max_samples >= 2)
+     {
+        evgl_engine->caps.msaa_samples[0] = 2;
+        evgl_engine->caps.msaa_samples[1] = (max_samples>>1) < 2 ? 2 : 
(max_samples>>1);
+        evgl_engine->caps.msaa_samples[2] = max_samples;
+        evgl_engine->caps.msaa_supported  = 1;
      }
 #endif
 

-- 


Reply via email to