diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2015-02-25 19:05:12 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2015-02-27 13:06:09 +0900 |
commit | fddaf62fcc4ea94914bfd8a608eceb2eb4610473 (patch) | |
tree | eb4facee25f1696264badb69689b906b85c05b1b /src/modules/evas/engines/gl_common/evas_gl_polygon.c | |
parent | f298183d4e9ba38c06793b3079f4965eaba8fb63 (diff) |
Evas masking: Add fast path for image-only masks in GL.
This will currently optimize most of the masks when using the
GL engine[1].
This is a very special case that adds a highly optimized path
for masking in GL. It works by creating a virtual image, containing
a pointer to the original image and a new geometry[2].
Instead of creating a new FBO-based surface (image_map_surface),
we refer to the original image and adjust the mask geometry on
the fly.
KNOWN BUGS:
- masking a map with such a scaled image is now broken.
[1] Right now all masks are simple Evas Object Image, so that means
all cases of masking, except masks of masks, or masks of maps,
will be optimized with this new method.
[2] This virtual image mechanism is still quite hackish and may
be improved (for memory usage, refcounting, etc...)
Diffstat (limited to 'src/modules/evas/engines/gl_common/evas_gl_polygon.c')
-rw-r--r-- | src/modules/evas/engines/gl_common/evas_gl_polygon.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/modules/evas/engines/gl_common/evas_gl_polygon.c b/src/modules/evas/engines/gl_common/evas_gl_polygon.c index 0e5dd7f..df87cb7 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_polygon.c +++ b/src/modules/evas/engines/gl_common/evas_gl_polygon.c | |||
@@ -272,7 +272,7 @@ evas_gl_common_poly_draw(Evas_Engine_GL_Context *gc, Evas_GL_Polygon *poly, int | |||
272 | h = 1; | 272 | h = 1; |
273 | evas_gl_common_context_rectangle_push(gc, x, y, w, h, | 273 | evas_gl_common_context_rectangle_push(gc, x, y, w, h, |
274 | cr, cg, cb, ca, | 274 | cr, cg, cb, ca, |
275 | NULL, 0, 0, 0, 0); | 275 | NULL, 0, 0, 0, 0, EINA_FALSE); |
276 | } | 276 | } |
277 | } | 277 | } |
278 | else | 278 | else |
@@ -296,7 +296,7 @@ evas_gl_common_poly_draw(Evas_Engine_GL_Context *gc, Evas_GL_Polygon *poly, int | |||
296 | if ((w > 0) && (h > 0)) | 296 | if ((w > 0) && (h > 0)) |
297 | evas_gl_common_context_rectangle_push(gc, x, y, w, h, | 297 | evas_gl_common_context_rectangle_push(gc, x, y, w, h, |
298 | cr, cg, cb, ca, | 298 | cr, cg, cb, ca, |
299 | NULL, 0, 0, 0, 0); | 299 | NULL, 0, 0, 0, 0, EINA_FALSE); |
300 | } | 300 | } |
301 | } | 301 | } |
302 | } | 302 | } |