Evas masking: Add fast path for image-only masks in GL.
authorJean-Philippe Andre <jp.andre@samsung.com>
Wed, 25 Feb 2015 10:05:12 +0000 (19:05 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Fri, 27 Feb 2015 04:06:09 +0000 (13:06 +0900)
commitfddaf62fcc4ea94914bfd8a608eceb2eb4610473
treeeb4facee25f1696264badb69689b906b85c05b1b
parentf298183d4e9ba38c06793b3079f4965eaba8fb63
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...)
src/lib/evas/canvas/evas_object_image.c
src/lib/evas/canvas/evas_render.c
src/lib/evas/include/evas_private.h
src/modules/evas/engines/gl_common/evas_gl_common.h
src/modules/evas/engines/gl_common/evas_gl_context.c
src/modules/evas/engines/gl_common/evas_gl_font.c
src/modules/evas/engines/gl_common/evas_gl_image.c
src/modules/evas/engines/gl_common/evas_gl_polygon.c
src/modules/evas/engines/gl_common/evas_gl_rectangle.c
src/modules/evas/engines/gl_generic/evas_engine.c
src/modules/evas/engines/software_generic/evas_engine.c