evas: gl engine: chg eglswapbuffersregion to swapbufferswithdamage extn instead.

This commit is contained in:
Carsten Haitzler 2013-06-14 14:42:03 +09:00
parent d44a69f911
commit c1190d4539
1 changed files with 12 additions and 7 deletions

View File

@ -82,7 +82,7 @@ void (*glsym_eglDestroyImage) (EGLDisplay a, void *b) = NULL;
void (*glsym_glEGLImageTargetTexture2DOES) (int a, void *b) = NULL; void (*glsym_glEGLImageTargetTexture2DOES) (int a, void *b) = NULL;
void *(*glsym_eglMapImageSEC) (void *a, void *b, int c, int d) = NULL; void *(*glsym_eglMapImageSEC) (void *a, void *b, int c, int d) = NULL;
unsigned int (*glsym_eglUnmapImageSEC) (void *a, void *b, int c) = NULL; unsigned int (*glsym_eglUnmapImageSEC) (void *a, void *b, int c) = NULL;
void (*glsym_eglSwapBuffersRegion) (EGLDisplay a, void *b, EGLint c, const EGLint *d) = NULL; void (*glsym_eglSwapBuffersWithDamage) (EGLDisplay a, void *b, const EGLint *d, EGLint c) = NULL;
#else #else
@ -629,8 +629,9 @@ gl_symbols(void)
FINDSYM(glsym_eglMapImageSEC, "eglMapImageSEC", glsym_func_void_ptr); FINDSYM(glsym_eglMapImageSEC, "eglMapImageSEC", glsym_func_void_ptr);
FINDSYM(glsym_eglUnmapImageSEC, "eglUnmapImageSEC", glsym_func_uint); FINDSYM(glsym_eglUnmapImageSEC, "eglUnmapImageSEC", glsym_func_uint);
FINDSYM(glsym_eglSwapBuffersRegion, "eglSwapBuffersRegionSEC", glsym_func_void_ptr); FINDSYM(glsym_eglSwapBuffersWithDamage, "eglSwapBuffersWithDamageEXT", glsym_func_void_ptr);
FINDSYM(glsym_eglSwapBuffersRegion, "eglSwapBuffersRegion", glsym_func_void_ptr); FINDSYM(glsym_eglSwapBuffersWithDamage, "eglSwapBuffersWithDamageINTEL", glsym_func_void_ptr);
FINDSYM(glsym_eglSwapBuffersWithDamage, "eglSwapBuffersWithDamage", glsym_func_void_ptr);
#else #else
@ -695,6 +696,10 @@ gl_extn_veto(Render_Engine *re)
{ {
extn_have_buffer_age = 0; extn_have_buffer_age = 0;
} }
if (!strstr(str, "swap_buffers_with_damage"))
{
glsym_eglSwapBuffersWithDamage = NULL;
}
} }
else else
{ {
@ -1443,7 +1448,7 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode)
{ {
re->info->callback.pre_swap(re->info->callback.data, re->evas); re->info->callback.pre_swap(re->info->callback.data, re->evas);
} }
if ((glsym_eglSwapBuffersRegion) && (re->mode != MODE_FULL)) if ((glsym_eglSwapBuffersWithDamage) && (re->mode != MODE_FULL))
{ {
EGLint num = 0, *rects = NULL, i = 0; EGLint num = 0, *rects = NULL, i = 0;
Tilebuf_Rect *r; Tilebuf_Rect *r;
@ -1494,9 +1499,9 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode)
} }
i += 4; i += 4;
} }
glsym_eglSwapBuffersRegion(re->win->egl_disp, glsym_eglSwapBuffersWithDamage(re->win->egl_disp,
re->win->egl_surface[0], re->win->egl_surface[0],
num, rects); rects, num);
} }
} }
else else