summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2015-11-04 11:18:25 -0500
committerChris Michael <cp.michael@samsung.com>2015-11-04 11:18:25 -0500
commitb2785f01c52ed7f6919c76ffe2bacfaf98bedeaf (patch)
tree74ba4bb88cdb4d343cd7a6e976ae5858d4c21fe6
parentb8ebd5b35621c66fd3759d4a2c952c0524331e78 (diff)
evas-gl-drm: Find symlink for eglSetDamageRegionKHR
In efforts to reduce tearing in the gl_drm engine, find and link to the eglSetDamageRegionKHR function so we can mark damaged regions of a surface @fix Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r--src/modules/evas/engines/gl_drm/evas_engine.c17
-rw-r--r--src/modules/evas/engines/gl_drm/evas_engine.h1
2 files changed, 16 insertions, 2 deletions
diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c b/src/modules/evas/engines/gl_drm/evas_engine.c
index bfa9d58149..145c5df569 100644
--- a/src/modules/evas/engines/gl_drm/evas_engine.c
+++ b/src/modules/evas/engines/gl_drm/evas_engine.c
@@ -77,9 +77,10 @@ glsym_func_void_ptr glsym_evas_gl_common_current_context_get = NULL;
77_eng_fn (*glsym_eglGetProcAddress)(const char *a) = NULL; 77_eng_fn (*glsym_eglGetProcAddress)(const char *a) = NULL;
78void *(*glsym_eglCreateImage)(EGLDisplay a, EGLContext b, EGLenum c, EGLClientBuffer d, const int *e) = NULL; 78void *(*glsym_eglCreateImage)(EGLDisplay a, EGLContext b, EGLenum c, EGLClientBuffer d, const int *e) = NULL;
79void (*glsym_eglDestroyImage)(EGLDisplay a, void *b) = NULL; 79void (*glsym_eglDestroyImage)(EGLDisplay a, void *b) = NULL;
80void (*glsym_glEGLImageTargetTexture2DOES)(int a, void *b) = NULL; 80void (*glsym_glEGLImageTargetTexture2DOES)(int a, void *b) = NULL;
81unsigned int (*glsym_eglSwapBuffersWithDamage)(EGLDisplay a, void *b, const EGLint *d, EGLint c) = NULL; 81unsigned int (*glsym_eglSwapBuffersWithDamage)(EGLDisplay a, void *b, const EGLint *d, EGLint c) = NULL;
82unsigned int (*glsym_eglQueryWaylandBufferWL)(EGLDisplay a, struct wl_resource *b, EGLint c, EGLint *d) = NULL; 82unsigned int (*glsym_eglQueryWaylandBufferWL)(EGLDisplay a, struct wl_resource *b, EGLint c, EGLint *d) = NULL;
83unsigned int (*glsym_eglSetDamageRegionKHR)(EGLDisplay a, EGLSurface b, EGLint *c, EGLint d) = NULL;
83 84
84/* local function prototypes */ 85/* local function prototypes */
85static void gl_symbols(void); 86static void gl_symbols(void);
@@ -229,6 +230,9 @@ gl_symbols(void)
229 FINDSYM(glsym_eglSwapBuffersWithDamage, "eglSwapBuffersWithDamage", 230 FINDSYM(glsym_eglSwapBuffersWithDamage, "eglSwapBuffersWithDamage",
230 glsym_func_uint); 231 glsym_func_uint);
231 232
233 FINDSYM(glsym_eglSetDamageRegionKHR, "eglSetDamageRegionKHR",
234 glsym_func_uint);
235
232 FINDSYM(glsym_eglQueryWaylandBufferWL, "eglQueryWaylandBufferWL", 236 FINDSYM(glsym_eglQueryWaylandBufferWL, "eglQueryWaylandBufferWL",
233 glsym_func_uint); 237 glsym_func_uint);
234 238
@@ -253,8 +257,17 @@ gl_extn_veto(Render_Engine *re)
253 { 257 {
254 _extn_have_buffer_age = 0; 258 _extn_have_buffer_age = 0;
255 glsym_eglSwapBuffersWithDamage = NULL; 259 glsym_eglSwapBuffersWithDamage = NULL;
260 glsym_eglSetDamageRegionKHR = NULL;
261 }
262 if (!strstr(str, "EGL_EXT_buffer_age"))
263 {
264 if (!strstr(str, "EGL_KHR_partial_update"))
265 _extn_have_buffer_age = 0;
256 } 266 }
257 if (!strstr(str, "EGL_EXT_buffer_age")) _extn_have_buffer_age = 0; 267
268 if (!strstr(str, "EGL_KHR_partial_update"))
269 glsym_eglSetDamageRegionKHR = NULL;
270
258 if (!strstr(str, "EGL_EXT_swap_buffers_with_damage")) 271 if (!strstr(str, "EGL_EXT_swap_buffers_with_damage"))
259 glsym_eglSwapBuffersWithDamage = NULL; 272 glsym_eglSwapBuffersWithDamage = NULL;
260 } 273 }
diff --git a/src/modules/evas/engines/gl_drm/evas_engine.h b/src/modules/evas/engines/gl_drm/evas_engine.h
index 740c305fc7..1ef0e7cfe3 100644
--- a/src/modules/evas/engines/gl_drm/evas_engine.h
+++ b/src/modules/evas/engines/gl_drm/evas_engine.h
@@ -142,5 +142,6 @@ _re_wincheck(Outbuf *ob)
142} 142}
143 143
144extern unsigned int (*glsym_eglSwapBuffersWithDamage)(EGLDisplay a, void *b, const EGLint *d, EGLint c); 144extern unsigned int (*glsym_eglSwapBuffersWithDamage)(EGLDisplay a, void *b, const EGLint *d, EGLint c);
145extern unsigned int (*glsym_eglSetDamageRegionKHR)(EGLDisplay a, EGLSurface b, EGLint *c, EGLint d);
145 146
146#endif 147#endif