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 --
