/* external variables */
int _evas_engine_eglfs_log_dom = -1;
-int _extn_have_buffer_age = 1;
+Eina_Bool _support_partial_render = EINA_TRUE;
/* local variables */
static Eina_Bool initted = EINA_FALSE;
s = getenv("EVAS_GL_PARTIAL_DISABLE");
if ((s) && (atoi(s)))
{
- _extn_have_buffer_age = 0;
+ _support_partial_render = EINA_FALSE;
glsym_eglSwapBuffersWithDamage = NULL;
}
- if (!strstr(str, "EGL_EXT_buffer_age")) _extn_have_buffer_age = 0;
+ if (!strstr(str, "EGL_EXT_buffer_age")) _support_partial_render = EINA_FALSE;
if ((!strstr(str, "EGL_EXT_swap_buffers_with_damage")) &&
(!strstr(str, "EGL_KHR_swap_buffers_with_damage")))
glsym_eglSwapBuffersWithDamage = NULL;
else
{
if (getenv("EVAS_GL_INFO")) printf("NO EGL EXTN!\n");
- _extn_have_buffer_age = 0;
+ _support_partial_render = EINA_FALSE;
}
}
# include "../gl_generic/Evas_Engine_GL_Generic.h"
extern int _evas_engine_eglfs_log_dom;
-extern int _extn_have_buffer_age;
+extern Eina_Bool _support_partial_render;
# ifdef ERR
# undef ERR
_surface_context_list_print();
// TIZEN_ONLY(20171206) : Disable Partial Rendering On EvasGL
- if (evgl_engine->funcs->partial_rendering_disable)
- evgl_engine->funcs->partial_rendering_disable();
+ if (evgl_engine->funcs->partial_rendering_enable)
+ evgl_engine->funcs->partial_rendering_enable(EINA_FALSE);
return sfc;
}
// TIZEN_ONLY(20171206) : Disable Partial Rendering On EvasGL
if (evgl_engine->funcs->partial_rendering_enable)
- evgl_engine->funcs->partial_rendering_enable();
+ evgl_engine->funcs->partial_rendering_enable(EINA_TRUE);
return 1;
int (*native_win_prerotation_set)(void *data);
- // TIZEN_ONLY(20171206) : Disable Partial Rendering On EvasGL
- // partial rendering enable
- void (*partial_rendering_enable)();
-
- // partial rendering disable
- void (*partial_rendering_disable)();
+ // TIZEN_ONLY(20171206) : Toggling Partial Rendering On EvasGL
+ void (*partial_rendering_enable)(Eina_Bool on);
};
struct _EVGL_Surface
/* external variables */
int _evas_engine_gl_drm_log_dom = -1;
-int _extn_have_buffer_age = 1;
+Eina_Bool _support_partial_render = EINA_TRUE;
int _extn_have_context_priority = 0;
/* local variables */
NULL, // native_win_surface_config_get
NULL, // native_win_prerotation_set
NULL, //partial_rendering_enable
- NULL, //partial_rendering_disable
};
Eina_Bool
s = getenv("EVAS_GL_PARTIAL_DISABLE");
if ((s) && (atoi(s)))
{
- _extn_have_buffer_age = 0;
+ _support_partial_render = EINA_FALSE;
glsym_eglSwapBuffersWithDamage = NULL;
glsym_eglSetDamageRegionKHR = NULL;
}
if (!_ckext(str, "EGL_EXT_buffer_age"))
- _extn_have_buffer_age = 0;
+ _support_partial_render = EINA_FALSE;
if (!_ckext(str, "EGL_KHR_partial_update"))
glsym_eglSetDamageRegionKHR = NULL;
else
{
if (getenv("EVAS_GL_INFO")) printf("NO EGL EXTN!\n");
- _extn_have_buffer_age = 0;
+ _support_partial_render = EINA_FALSE;
}
}
# include "../gl_generic/Evas_Engine_GL_Generic.h"
extern int _evas_engine_gl_drm_log_dom;
-extern int _extn_have_buffer_age;
+extern Eina_Bool _support_partial_render;
extern int _extn_have_context_priority;
# ifdef ERR
ecore_drm2_fb_release(ob->priv.output, EINA_FALSE);
- if (ob->swap_mode == MODE_AUTO && _extn_have_buffer_age)
+ if (ob->swap_mode == MODE_AUTO && _support_partial_render)
{
Render_Output_Swap_Mode swap_mode;
EGLint age = 0;
NULL, // native_win_surface_config_get
NULL, // native_win_prerotation_set
NULL, //partial_rendering_enable
- NULL, //partial_rendering_disable
};
static void *
/* external variables */
int _evas_engine_gl_tbm_log_dom = -1;
-Eina_Bool extn_have_buffer_age = EINA_TRUE;
+Eina_Bool support_partial_render = EINA_TRUE;
Eina_Bool extn_have_y_inverted = EINA_TRUE;
/* local function prototypes */
// Disable Partial Rendering
if ((s = getenv("EVAS_GL_PARTIAL_DISABLE")) && atoi(s))
{
- extn_have_buffer_age = EINA_FALSE;
+ support_partial_render = EINA_FALSE;
glsym_eglSwapBuffersWithDamage = NULL;
glsym_eglSetDamageRegionKHR = NULL;
}
if (!strstr(str, "EGL_EXT_buffer_age"))
{
if (!strstr(str, "EGL_KHR_partial_update"))
- extn_have_buffer_age = EINA_FALSE;
+ support_partial_render = EINA_FALSE;
}
if (!strstr(str, "EGL_KHR_partial_update"))
{
{
if (getenv("EVAS_GL_INFO"))
printf("NO EGL EXTN!\n");
- extn_have_buffer_age = EINA_FALSE;
+ support_partial_render = EINA_FALSE;
}
}
evgl_eng_native_win_surface_config_get,
NULL, // native_win_prerotation_set
NULL, //partial_rendering_enable
- NULL, //partial_rendering_disable
};
/* engine functions */
Render_Output_GL_Generic generic;
};
-extern Eina_Bool extn_have_buffer_age;
+extern Eina_Bool support_partial_render;
extern Eina_Bool extn_have_y_inverted;
extern Evas_GL_Common_Context_New glsym_evas_gl_common_context_new;
Render_Output_Swap_Mode
eng_outbuf_swap_mode_get(Outbuf *ob)
{
- if ((ob->swap_mode == MODE_AUTO) && (extn_have_buffer_age))
+ if ((ob->swap_mode == MODE_AUTO) && (support_partial_render))
{
Render_Output_Swap_Mode swap_mode;
EGLint age = 0;
int swap_buffer_debug_mode = -1;
int swap_buffer_debug = 0;
int partial_render_debug = -1;
-int extn_have_buffer_age = 1;
+Eina_Bool support_partial_render = EINA_TRUE;
static int initted = 0;
static int gl_wins = 0;
evgl_eng_native_win_surface_config_get,
NULL, // native_win_prerotation_set
NULL, //partial_rendering_enable
- NULL, //partial_rendering_disable
};
//----------------------------------------------------------//
// Disable Partial Rendering
if ((s = getenv("EVAS_GL_PARTIAL_DISABLE")) && atoi(s))
{
- extn_have_buffer_age = 0;
+ support_partial_render = EINA_FALSE;
glsym_eglSwapBuffersWithDamage = NULL;
glsym_eglSetDamageRegionKHR = NULL;
}
if (!strstr(str, "EGL_EXT_buffer_age"))
{
if (!strstr(str, "EGL_KHR_partial_update"))
- extn_have_buffer_age = 0;
+ support_partial_render = EINA_FALSE;
}
if (!strstr(str, "EGL_KHR_partial_update"))
{
{
if (getenv("EVAS_GL_INFO"))
printf("NO EGL EXTN!\n");
- extn_have_buffer_age = 0;
+ support_partial_render = EINA_FALSE;
}
#else
str = glXQueryExtensionsString(eng_get_ob(re)->info->info.display,
}
if (!strstr(tmpstr, "GLX_EXT_buffer_age"))
{
- extn_have_buffer_age = 0;
+ support_partial_render = EINA_FALSE;
}
if (!strstr(tmpstr, "GLX_EXT_swap_control"))
{
glsym_glXReleaseTexImage = NULL;
glsym_glXGetVideoSync = NULL;
glsym_glXWaitVideoSync = NULL;
- extn_have_buffer_age = 0;
+ support_partial_render = EINA_FALSE;
glsym_glXSwapIntervalEXT = NULL;
glsym_glXSwapIntervalSGI = NULL;
glsym_glXReleaseBuffersMESA = NULL;
#endif
};
-extern int extn_have_buffer_age;
+extern Eina_Bool support_partial_render;
extern int partial_render_debug;
extern int swap_buffer_debug_mode;
extern int swap_buffer_debug;
Render_Output_Swap_Mode
eng_outbuf_swap_mode(Outbuf *ob)
{
- if (ob->swap_mode == MODE_AUTO && extn_have_buffer_age)
+ if (ob->swap_mode == MODE_AUTO && support_partial_render)
{
Render_Output_Swap_Mode swap_mode;
eina_evlog("+gl_query_surf_swap_mode", ob, 0.0, NULL);
/* external variables */
int _evas_engine_wl_egl_log_dom = -1;
-Eina_Bool extn_have_buffer_age = EINA_TRUE; //partial rendering support
Eina_Bool extn_have_y_inverted = EINA_TRUE;
-/* backup for partail update */
+/* partial rendering support */
+Eina_Bool support_partial_render = EINA_TRUE;
+Eina_Bool partial_render = EINA_TRUE;
unsigned int (*glsym_prev_eglSwapBuffersWithDamage) (EGLDisplay a, void *b, const EGLint *d, EGLint c) = NULL;
unsigned int (*glsym_prev_eglSetDamageRegionKHR) (EGLDisplay a, EGLSurface b, EGLint *c, EGLint d) = NULL;
-Eina_Bool prev_extn_have_buffer_age = EINA_TRUE;
/* local functions */
static inline Outbuf *
// Disable Partial Rendering
if ((s = getenv("EVAS_GL_PARTIAL_DISABLE")) && atoi(s))
{
- extn_have_buffer_age = EINA_FALSE;
+ support_partial_render = EINA_FALSE;
glsym_eglSwapBuffersWithDamage = NULL;
glsym_eglSetDamageRegionKHR = NULL;
}
if (!strstr(str, "EGL_EXT_buffer_age"))
{
if (!strstr(str, "EGL_KHR_partial_update"))
- extn_have_buffer_age = EINA_FALSE;
+ support_partial_render = EINA_FALSE;
}
if (!strstr(str, "EGL_KHR_partial_update"))
{
{
if (getenv("EVAS_GL_INFO"))
printf("NO EGL EXTN!\n");
- extn_have_buffer_age = EINA_FALSE;
+ support_partial_render = EINA_FALSE;
}
}
eng_get_ob(re)->detected.msaa);
}
-// TIZEN_ONLY(20171206) : Disable Partial Rendering On EvasGL
+// TIZEN_ONLY(20171206) : Enable Partial Rendering On EvasGL
static void
-evgl_eng_partial_rendering_enable()
+evgl_eng_partial_rendering_enable(Eina_Bool on)
{
- if (extn_have_buffer_age) return;
+ if (!support_partial_render) return;
- extn_have_buffer_age = prev_extn_have_buffer_age;
- prev_extn_have_buffer_age = EINA_FALSE;
+ if (on)
+ {
+ if (partial_render) return; //already turned on
- glsym_eglSwapBuffersWithDamage = glsym_prev_eglSwapBuffersWithDamage;
- glsym_eglSetDamageRegionKHR = glsym_prev_eglSetDamageRegionKHR;
-}
+ //backup restore
+ glsym_eglSwapBuffersWithDamage = glsym_prev_eglSwapBuffersWithDamage;
+ glsym_eglSetDamageRegionKHR = glsym_prev_eglSetDamageRegionKHR;
+ partial_render = EINA_TRUE;
+ }
+ else
+ {
+ if (!partial_render) return; //already turned off
-// TIZEN_ONLY(20171206) : Disable Partial Rendering On EvasGL
-static void
-evgl_eng_partial_rendering_disable()
-{
- if (!extn_have_buffer_age) return;
+ //backup
+ glsym_prev_eglSwapBuffersWithDamage = glsym_eglSwapBuffersWithDamage;
+ glsym_prev_eglSetDamageRegionKHR = glsym_eglSetDamageRegionKHR;
- prev_extn_have_buffer_age = extn_have_buffer_age;
- glsym_prev_eglSwapBuffersWithDamage = glsym_eglSwapBuffersWithDamage;
- glsym_prev_eglSetDamageRegionKHR = glsym_eglSetDamageRegionKHR;
+ glsym_eglSwapBuffersWithDamage = NULL;
+ glsym_eglSetDamageRegionKHR = NULL;
- extn_have_buffer_age = EINA_FALSE;
- glsym_eglSwapBuffersWithDamage = NULL;
- glsym_eglSetDamageRegionKHR = NULL;
+ partial_render = EINA_FALSE;
+ }
}
static const EVGL_Interface evgl_funcs =
evgl_eng_native_win_surface_config_get,
evgl_eng_native_win_prerotation_set,
evgl_eng_partial_rendering_enable,
- evgl_eng_partial_rendering_disable,
};
/* engine functions */
EGLSurface surface;
};
-extern Eina_Bool extn_have_buffer_age;
+extern Eina_Bool support_partial_render;
extern Eina_Bool extn_have_y_inverted;
extern Evas_GL_Common_Context_New glsym_evas_gl_common_context_new;
Render_Output_Swap_Mode
eng_outbuf_swap_mode_get(Outbuf *ob)
{
- if ((ob->swap_mode == MODE_AUTO) && (extn_have_buffer_age))
+ if ((ob->swap_mode == MODE_AUTO) && (support_partial_render))
{
Render_Output_Swap_Mode swap_mode;
EGLint age = 0;