Evas GL common: Factorize shader generation code
authorJean-Philippe Andre <jp.andre@samsung.com>
Wed, 1 Apr 2015 06:15:51 +0000 (15:15 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Fri, 3 Apr 2015 02:26:13 +0000 (11:26 +0900)
Remove all individual shaders, factorize everything into
one vertex and one fragment shader. All previous functionality
has been kept as is[*]. Some new features have been added
(new shader types).

This is a first step in simplifying and improving the shaders system.
Next: simplify shader selection

[*] Yeah, that's quite a bold statement here. Maybe I broke everything.

130 files changed:
src/Makefile_Evas.am
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/shader/.gitignore [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/evas_gl_enum.x
src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x
src/modules/evas/engines/gl_common/shader/font_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/font_mask_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/font_mask_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/font_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/fragment.glsl [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/gen_shaders.sh
src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_12_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_12_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_21_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_21_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_22_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_22_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_bgra_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_bgra_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_bgra_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_bgra_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_mask_bgra_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_mask_bgra_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_mask_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_mask_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_mask_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_mask_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/img_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/map_mask_bgra_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/map_mask_bgra_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/map_mask_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/map_mask_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/map_mask_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/map_mask_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/nv12_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/nv12_mask_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/nv12_mask_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/nv12_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/nv12_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/nv12_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rect_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rect_mask_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rect_mask_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rect_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rgb_a_pair_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rgb_a_pair_mask_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rgb_a_pair_mask_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/rgb_a_pair_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/shaders.txt [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_12_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_12_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_12_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_12_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_21_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_21_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_21_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_21_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_22_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_22_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_22_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_22_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_external_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_external_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_external_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_external_nomul_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_external_nomul_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_external_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_external_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_external_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/tex_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/vertex.glsl [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/yuv_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuv_mask_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuv_mask_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuv_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuv_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuv_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuy2_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuy2_mask_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuy2_mask_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuy2_nomul_frag.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuy2_nomul_vert.shd [deleted file]
src/modules/evas/engines/gl_common/shader/yuy2_vert.shd [deleted file]

index 7e417b0..bd3d377 100644 (file)
@@ -618,135 +618,18 @@ modules/evas/engines/gl_common/evas_gl_3d_renderer.c \
 modules/evas/engines/gl_common/evas_gl_3d_shader.c
 
 GL_SHADERS_GEN = \
-modules/evas/engines/gl_common/shader/font_frag.shd \
-modules/evas/engines/gl_common/shader/font_vert.shd \
-modules/evas/engines/gl_common/shader/font_mask_frag.shd \
-modules/evas/engines/gl_common/shader/font_mask_vert.shd \
-modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd \
-modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd \
-modules/evas/engines/gl_common/shader/img_12_frag.shd \
-modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_12_vert.shd \
-modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd \
-modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd \
-modules/evas/engines/gl_common/shader/img_21_frag.shd \
-modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_21_vert.shd \
-modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd \
-modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd \
-modules/evas/engines/gl_common/shader/img_22_frag.shd \
-modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_22_vert.shd \
-modules/evas/engines/gl_common/shader/img_bgra_frag.shd \
-modules/evas/engines/gl_common/shader/img_bgra_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_bgra_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_bgra_vert.shd \
-modules/evas/engines/gl_common/shader/img_frag.shd \
-modules/evas/engines/gl_common/shader/img_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_vert.shd \
-modules/evas/engines/gl_common/shader/nv12_frag.shd \
-modules/evas/engines/gl_common/shader/nv12_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/nv12_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/nv12_vert.shd \
-modules/evas/engines/gl_common/shader/rect_frag.shd \
-modules/evas/engines/gl_common/shader/rect_vert.shd \
-modules/evas/engines/gl_common/shader/rgb_a_pair_frag.shd \
-modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/rgb_a_pair_vert.shd \
-modules/evas/engines/gl_common/shader/tex_12_frag.shd \
-modules/evas/engines/gl_common/shader/tex_12_vert.shd \
-modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/tex_21_frag.shd \
-modules/evas/engines/gl_common/shader/tex_21_vert.shd \
-modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/tex_22_frag.shd \
-modules/evas/engines/gl_common/shader/tex_22_vert.shd \
-modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/tex_frag.shd \
-modules/evas/engines/gl_common/shader/tex_vert.shd \
-modules/evas/engines/gl_common/shader/tex_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/tex_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/tex_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_afill_vert.shd \
-modules/evas/engines/gl_common/shader/tex_22_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_22_afill_vert.shd \
-modules/evas/engines/gl_common/shader/tex_21_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_21_afill_vert.shd \
-modules/evas/engines/gl_common/shader/tex_12_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_12_afill_vert.shd \
-modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.shd \
-modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.shd \
-modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.shd \
-modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.shd \
-modules/evas/engines/gl_common/shader/yuv_frag.shd \
-modules/evas/engines/gl_common/shader/yuv_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/yuv_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/yuv_vert.shd \
-modules/evas/engines/gl_common/shader/yuy2_frag.shd \
-modules/evas/engines/gl_common/shader/yuy2_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/yuy2_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/yuy2_vert.shd \
-modules/evas/engines/gl_common/shader/img_mask_frag.shd \
-modules/evas/engines/gl_common/shader/img_mask_vert.shd \
-modules/evas/engines/gl_common/shader/img_mask_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_mask_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/img_mask_bgra_frag.shd \
-modules/evas/engines/gl_common/shader/img_mask_bgra_vert.shd \
-modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/yuv_mask_frag.shd \
-modules/evas/engines/gl_common/shader/yuv_mask_vert.shd \
-modules/evas/engines/gl_common/shader/nv12_mask_frag.shd \
-modules/evas/engines/gl_common/shader/nv12_mask_vert.shd \
-modules/evas/engines/gl_common/shader/yuy2_mask_frag.shd \
-modules/evas/engines/gl_common/shader/yuy2_mask_vert.shd \
-modules/evas/engines/gl_common/shader/rgb_a_pair_mask_frag.shd \
-modules/evas/engines/gl_common/shader/rgb_a_pair_mask_vert.shd \
-modules/evas/engines/gl_common/shader/rect_mask_frag.shd \
-modules/evas/engines/gl_common/shader/rect_mask_vert.shd \
-modules/evas/engines/gl_common/shader/map_mask_frag.shd \
-modules/evas/engines/gl_common/shader/map_mask_vert.shd \
-modules/evas/engines/gl_common/shader/map_mask_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/map_mask_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/map_mask_bgra_frag.shd \
-modules/evas/engines/gl_common/shader/map_mask_bgra_vert.shd \
-modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/tex_external_frag.shd \
-modules/evas/engines/gl_common/shader/tex_external_vert.shd \
-modules/evas/engines/gl_common/shader/tex_external_nomul_frag.shd \
-modules/evas/engines/gl_common/shader/tex_external_nomul_vert.shd \
-modules/evas/engines/gl_common/shader/tex_external_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_external_afill_vert.shd \
-modules/evas/engines/gl_common/shader/tex_external_nomul_afill_frag.shd \
-modules/evas/engines/gl_common/shader/tex_external_nomul_afill_vert.shd \
+modules/evas/engines/gl_common/shader/gen_shaders.sh \
+modules/evas/engines/gl_common/shader/shaders.txt \
+modules/evas/engines/gl_common/shader/fragment.glsl \
+modules/evas/engines/gl_common/shader/vertex.glsl \
 $(NULL)
 
-EXTRA_DIST += \
-modules/evas/engines/gl_common/shader/gen_shaders.sh \
-$(GL_SHADERS_GEN)
+EXTRA_DIST += $(GL_SHADERS_GEN)
+EXTRA_lib_evas_libevas_la_DEPENDENCIES = modules/evas/engines/gl_common/shader/evas_gl_enum.x
 
-modules/evas/engines/gl_common/shader/evas_gl_shaders.x: modules/evas/engines/gl_common/shader/gen_shaders.sh $(GL_SHADERS_GEN)
+modules/evas/engines/gl_common/shader/evas_gl_shaders.x: $(GL_SHADERS_GEN)
        @echo "  SHADERS  $@"
-       @$^
+       @$(builddir)/modules/evas/engines/gl_common/shader/gen_shaders.sh
 
 modules/evas/engines/gl_common/shader/evas_gl_enum.x: modules/evas/engines/gl_common/shader/evas_gl_shaders.x
 
index 0747875..1adbf69 100644 (file)
@@ -425,6 +425,8 @@ struct _Evas_GL_Shared
 #define RTYPE_YUY2  6
 #define RTYPE_NV12  7
 #define RTYPE_LINE  8
+#define RTYPE_RGB_A_PAIR 9
+#define RTYPE_TEX_EXTERNAL 10
 #define ARRAY_BUFFER_USE 500
 #define ARRAY_BUFFER_USE_SHIFT 100
 
index 7e3c74c..f1f4f47 100644 (file)
@@ -933,10 +933,10 @@ evas_gl_common_context_new(void)
         SHADER_TEXTURE_ADD(shared, IMG_MASK_NOMUL, tex);
         SHADER_TEXTURE_ADD(shared, IMG_MASK_NOMUL, texm);
 
-        SHADER_TEXTURE_ADD(shared, IMG_MASK_BGRA, tex);
-        SHADER_TEXTURE_ADD(shared, IMG_MASK_BGRA, texm);
-        SHADER_TEXTURE_ADD(shared, IMG_MASK_BGRA_NOMUL, tex);
-        SHADER_TEXTURE_ADD(shared, IMG_MASK_BGRA_NOMUL, texm);
+        SHADER_TEXTURE_ADD(shared, IMG_BGRA_MASK, tex);
+        SHADER_TEXTURE_ADD(shared, IMG_BGRA_MASK, texm);
+        SHADER_TEXTURE_ADD(shared, IMG_BGRA_MASK_NOMUL, tex);
+        SHADER_TEXTURE_ADD(shared, IMG_BGRA_MASK_NOMUL, texm);
 
         SHADER_TEXTURE_ADD(shared, FONT_MASK, tex);
         SHADER_TEXTURE_ADD(shared, FONT_MASK, texm);
@@ -1896,28 +1896,28 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
                {
                   shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                         SHADER_IMG_22_BGRA_NOMUL, SHADER_IMG_22_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_22_BGRA_MASK_NOMUL, SHADER_IMG_22_BGRA_MASK);
                   sam = 1;
                }
              else if ((smooth) && (sw >= (w * 2)))
                {
                   shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                         SHADER_IMG_21_BGRA_NOMUL, SHADER_IMG_21_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                   sam = 1;
                }
              else if ((smooth) && (sh >= (h * 2)))
                {
                   shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                         SHADER_IMG_12_BGRA_NOMUL, SHADER_IMG_12_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                   sam = 1;
                }
              else
                {
                   shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                         SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                }
           }
 #ifdef GL_GLES
@@ -1926,11 +1926,11 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
              if ((!tex->alpha) && (tex->pt->native))
                shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                      SHADER_TEX_EXTERNAL_NOMUL_AFILL, SHADER_TEX_EXTERNAL_AFILL,
-                                                     SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                     SHADER_TEX_EXTERNAL_MASK_NOMUL, SHADER_TEX_EXTERNAL_MASK);
              else
                shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                      SHADER_TEX_EXTERNAL_NOMUL, SHADER_TEX_EXTERNAL,
-                                                     SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                     SHADER_TEX_EXTERNAL_MASK_NOMUL, SHADER_TEX_EXTERNAL_MASK);
           }
 #endif
         else
@@ -1939,48 +1939,48 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
                {
                   if ((!tex->alpha) && (tex->pt->native))
                     shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
-                                                          SHADER_TEX_22_NOMUL_AFILL, SHADER_TEX_22_AFILL,
-                                                          SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                          SHADER_IMG_22_BGRA_NOMUL_AFILL, SHADER_IMG_22_BGRA_AFILL,
+                                                          SHADER_IMG_22_BGRA_MASK_NOMUL, SHADER_IMG_22_BGRA_MASK);
                   else
                     shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
-                                                          SHADER_TEX_22_NOMUL, SHADER_TEX_22,
-                                                          SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                          SHADER_IMG_22_BGRA_NOMUL, SHADER_IMG_22_BGRA,
+                                                          SHADER_IMG_22_BGRA_MASK_NOMUL, SHADER_IMG_22_BGRA_MASK);
                   sam = 1;
                }
              else if ((smooth) && (sw >= (w * 2)))
                {
                   if ((!tex->alpha) && (tex->pt->native))
                     shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
-                                                          SHADER_TEX_21_NOMUL_AFILL, SHADER_TEX_21_AFILL,
-                                                          SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                          SHADER_IMG_21_BGRA_NOMUL_AFILL, SHADER_IMG_21_BGRA_AFILL,
+                                                          SHADER_IMG_21_BGRA_MASK_NOMUL, SHADER_IMG_21_BGRA_MASK);
                   else
                     shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
-                                                          SHADER_TEX_21_NOMUL, SHADER_TEX_21,
-                                                          SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                          SHADER_IMG_21_BGRA_NOMUL, SHADER_IMG_21_BGRA,
+                                                          SHADER_IMG_21_BGRA_MASK_NOMUL, SHADER_IMG_21_BGRA_MASK);
                   sam = 1;
                }
              else if ((smooth) && (sh >= (h * 2)))
                {
                   if ((!tex->alpha) && (tex->pt->native))
                     shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
-                                                          SHADER_TEX_12_NOMUL_AFILL, SHADER_TEX_12_AFILL,
-                                                          SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                          SHADER_IMG_12_BGRA_NOMUL_AFILL, SHADER_IMG_12_BGRA_AFILL,
+                                                          SHADER_IMG_12_BGRA_MASK_NOMUL, SHADER_IMG_12_BGRA_MASK);
                   else
                     shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
-                                                          SHADER_TEX_12_NOMUL, SHADER_TEX_12,
-                                                          SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                          SHADER_IMG_12_BGRA_NOMUL, SHADER_IMG_12_BGRA,
+                                                          SHADER_IMG_12_BGRA_MASK_NOMUL, SHADER_IMG_12_BGRA_MASK);
                   sam = 1;
                }
              else
                {
                   if ((!tex->alpha) && (tex->pt->native))
                     shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
-                                                          SHADER_TEX_NOMUL_AFILL, SHADER_TEX_AFILL,
-                                                          SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                          SHADER_IMG_BGRA_NOMUL_AFILL, SHADER_IMG_BGRA_AFILL,
+                                                          SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                   else
                     shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
-                                                          SHADER_TEX_NOMUL, SHADER_TEX,
-                                                          SHADER_IMG_MASK_NOMUL, SHADER_IMG_MASK);
+                                                          SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA,
+                                                          SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                }
           }
      }
@@ -1992,28 +1992,28 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
                {
                   shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                         SHADER_IMG_22_BGRA_NOMUL, SHADER_IMG_22_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                   sam = 1;
                }
              else if ((smooth) && (sw >= (w * 2)))
                {
                   shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                         SHADER_IMG_21_BGRA_NOMUL, SHADER_IMG_21_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                   sam = 1;
                }
              else if ((smooth) && (sh >= (h * 2)))
                {
                   shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                         SHADER_IMG_12_BGRA_NOMUL, SHADER_IMG_12_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                   sam = 1;
                }
              else
                {
                   shader = evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
                                                         SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                }
           }
         else
@@ -2474,7 +2474,7 @@ evas_gl_common_context_rgb_a_pair_push(Evas_Engine_GL_Context *gc,
    shader = evas_gl_common_shader_choice
      (0, NULL, r, g, b, a, !!mtex,
       SHADER_RGB_A_PAIR_NOMUL, SHADER_RGB_A_PAIR,
-      SHADER_RGB_A_PAIR_MASK, SHADER_RGB_A_PAIR_MASK);
+      SHADER_RGB_A_PAIR_MASK_NOMUL, SHADER_RGB_A_PAIR_MASK);
    prog = gc->shared->shader[shader].prog;
 
    pn = _evas_gl_common_context_push(RTYPE_IMAGE,
@@ -2579,20 +2579,20 @@ evas_gl_common_context_image_map_push(Evas_Engine_GL_Context *gc,
       case EVAS_COLORSPACE_YCBCR422P709_PL:
         shader = evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
                                               SHADER_YUV_NOMUL, SHADER_YUV,
-                                              SHADER_YUV_MASK, SHADER_YUV_MASK);
+                                              SHADER_YUV_MASK_NOMUL, SHADER_YUV_MASK);
         utexture = EINA_TRUE;
         break;
       case EVAS_COLORSPACE_YCBCR422601_PL:
         shader = evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
                                               SHADER_YUY2_NOMUL, SHADER_YUY2,
-                                              SHADER_YUY2_MASK, SHADER_YUY2_MASK);
+                                              SHADER_YUY2_MASK_NOMUL, SHADER_YUY2_MASK);
         uvtexture = EINA_TRUE;
         break;
       case EVAS_COLORSPACE_YCBCR420NV12601_PL:
       case EVAS_COLORSPACE_YCBCR420TM12601_PL:
         shader = evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
                                               SHADER_NV12_NOMUL, SHADER_NV12,
-                                              SHADER_NV12_MASK, SHADER_NV12_MASK);
+                                              SHADER_NV12_MASK_NOMUL, SHADER_NV12_MASK);
         uvtexture = EINA_TRUE;
         break;
 
@@ -2603,13 +2603,13 @@ evas_gl_common_context_image_map_push(Evas_Engine_GL_Context *gc,
                {
                   shader = evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
                                                         SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                }
              else
                {
                   shader = evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
-                                                        SHADER_TEX_NOMUL, SHADER_TEX,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA,
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                }
           }
         else
@@ -2618,7 +2618,7 @@ evas_gl_common_context_image_map_push(Evas_Engine_GL_Context *gc,
                {
                   shader = evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
                                                         SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA,
-                                                        SHADER_IMG_MASK_BGRA_NOMUL, SHADER_IMG_MASK_BGRA);
+                                                        SHADER_IMG_BGRA_MASK_NOMUL, SHADER_IMG_BGRA_MASK);
                }
              else
                {
@@ -3424,7 +3424,7 @@ shader_array_flush(Evas_Engine_GL_Context *gc)
              if (dbgflushnum == 1)
                {
                   const char *types[] =
-                  { "----", "RECT", "IMAG", "FONT", "YUV-", "MAP-", "YUY2", "NV12", "LINE" };
+                  { "----", "RECT", "IMAG", "FONT", "YUV-", "MAP-", "YUY2", "NV12", "LINE", "PAIR", "EXTR" };
                   printf("  DRAW#%3i %4i -> %p[%4ix%4i] @ %4ix%4i -{ tex %4i type %s }-\n",
                          i,
                          gc->pipe[i].array.num / 6,
diff --git a/src/modules/evas/engines/gl_common/shader/.gitignore b/src/modules/evas/engines/gl_common/shader/.gitignore
new file mode 100644 (file)
index 0000000..0074827
--- /dev/null
@@ -0,0 +1 @@
+*.shd
index 3da8ac2..4db60a5 100644 (file)
@@ -1,66 +1,80 @@
 /* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED
- * See: modules/evas/engines/gl_common/shader/gen_shaders.sh */
+ * See: ./modules/evas/engines/gl_common/shader/gen_shaders.sh */
 
 typedef enum {
+   SHADER_RECT,
+   SHADER_RECT_MASK,
    SHADER_FONT,
    SHADER_FONT_MASK,
-   SHADER_IMG_12_BGRA_NOMUL,
-   SHADER_IMG_12_BGRA,
-   SHADER_IMG_12_NOMUL,
+   SHADER_IMG,
+   SHADER_IMG_BGRA,
    SHADER_IMG_12,
-   SHADER_IMG_21_BGRA_NOMUL,
-   SHADER_IMG_21_BGRA,
-   SHADER_IMG_21_NOMUL,
    SHADER_IMG_21,
-   SHADER_IMG_22_BGRA_NOMUL,
-   SHADER_IMG_22_BGRA,
-   SHADER_IMG_22_NOMUL,
    SHADER_IMG_22,
-   SHADER_IMG_BGRA_NOMUL,
-   SHADER_IMG_BGRA,
-   SHADER_IMG_NOMUL,
-   SHADER_IMG,
-   SHADER_NV12_NOMUL,
-   SHADER_NV12,
-   SHADER_RECT,
-   SHADER_RGB_A_PAIR_NOMUL,
-   SHADER_RGB_A_PAIR,
-   SHADER_TEX_12,
-   SHADER_TEX_12_NOMUL,
-   SHADER_TEX_21,
-   SHADER_TEX_21_NOMUL,
-   SHADER_TEX_22,
-   SHADER_TEX_22_NOMUL,
-   SHADER_TEX,
-   SHADER_TEX_NOMUL,
-   SHADER_TEX_AFILL,
-   SHADER_TEX_22_AFILL,
-   SHADER_TEX_21_AFILL,
-   SHADER_TEX_12_AFILL,
-   SHADER_TEX_22_NOMUL_AFILL,
-   SHADER_TEX_21_NOMUL_AFILL,
-   SHADER_TEX_12_NOMUL_AFILL,
-   SHADER_TEX_NOMUL_AFILL,
-   SHADER_YUV_NOMUL,
-   SHADER_YUV,
-   SHADER_YUY2_NOMUL,
-   SHADER_YUY2,
+   SHADER_IMG_12_BGRA,
+   SHADER_IMG_21_BGRA,
+   SHADER_IMG_22_BGRA,
    SHADER_IMG_MASK,
+   SHADER_IMG_BGRA_MASK,
+   SHADER_IMG_12_MASK,
+   SHADER_IMG_21_MASK,
+   SHADER_IMG_22_MASK,
+   SHADER_IMG_12_BGRA_MASK,
+   SHADER_IMG_21_BGRA_MASK,
+   SHADER_IMG_22_BGRA_MASK,
+   SHADER_IMG_NOMUL,
+   SHADER_IMG_BGRA_NOMUL,
+   SHADER_IMG_12_NOMUL,
+   SHADER_IMG_21_NOMUL,
+   SHADER_IMG_22_NOMUL,
+   SHADER_IMG_12_BGRA_NOMUL,
+   SHADER_IMG_21_BGRA_NOMUL,
+   SHADER_IMG_22_BGRA_NOMUL,
    SHADER_IMG_MASK_NOMUL,
-   SHADER_IMG_MASK_BGRA,
-   SHADER_IMG_MASK_BGRA_NOMUL,
-   SHADER_YUV_MASK,
-   SHADER_NV12_MASK,
-   SHADER_YUY2_MASK,
+   SHADER_IMG_BGRA_MASK_NOMUL,
+   SHADER_IMG_12_MASK_NOMUL,
+   SHADER_IMG_21_MASK_NOMUL,
+   SHADER_IMG_22_MASK_NOMUL,
+   SHADER_IMG_12_BGRA_MASK_NOMUL,
+   SHADER_IMG_21_BGRA_MASK_NOMUL,
+   SHADER_IMG_22_BGRA_MASK_NOMUL,
+   SHADER_IMG_AFILL,
+   SHADER_IMG_BGRA_AFILL,
+   SHADER_IMG_NOMUL_AFILL,
+   SHADER_IMG_BGRA_NOMUL_AFILL,
+   SHADER_IMG_12_AFILL,
+   SHADER_IMG_21_AFILL,
+   SHADER_IMG_22_AFILL,
+   SHADER_IMG_12_BGRA_AFILL,
+   SHADER_IMG_21_BGRA_AFILL,
+   SHADER_IMG_22_BGRA_AFILL,
+   SHADER_IMG_12_NOMUL_AFILL,
+   SHADER_IMG_21_NOMUL_AFILL,
+   SHADER_IMG_22_NOMUL_AFILL,
+   SHADER_IMG_12_BGRA_NOMUL_AFILL,
+   SHADER_IMG_21_BGRA_NOMUL_AFILL,
+   SHADER_IMG_22_BGRA_NOMUL_AFILL,
+   SHADER_RGB_A_PAIR,
    SHADER_RGB_A_PAIR_MASK,
-   SHADER_RECT_MASK,
-   SHADER_MAP_MASK,
-   SHADER_MAP_MASK_NOMUL,
-   SHADER_MAP_MASK_BGRA,
-   SHADER_MAP_MASK_BGRA_NOMUL,
+   SHADER_RGB_A_PAIR_NOMUL,
+   SHADER_RGB_A_PAIR_MASK_NOMUL,
    SHADER_TEX_EXTERNAL,
-   SHADER_TEX_EXTERNAL_NOMUL,
    SHADER_TEX_EXTERNAL_AFILL,
+   SHADER_TEX_EXTERNAL_NOMUL,
    SHADER_TEX_EXTERNAL_NOMUL_AFILL,
+   SHADER_TEX_EXTERNAL_MASK,
+   SHADER_TEX_EXTERNAL_MASK_NOMUL,
+   SHADER_YUV,
+   SHADER_YUV_NOMUL,
+   SHADER_YUV_MASK,
+   SHADER_YUV_MASK_NOMUL,
+   SHADER_YUY2,
+   SHADER_YUY2_NOMUL,
+   SHADER_YUY2_MASK,
+   SHADER_YUY2_MASK_NOMUL,
+   SHADER_NV12,
+   SHADER_NV12_NOMUL,
+   SHADER_NV12_MASK,
+   SHADER_NV12_MASK_NOMUL,
    SHADER_LAST
 } Evas_GL_Shader;
index d047c3f..4d18aed 100644 (file)
@@ -1,10 +1,9 @@
 /* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED
- * See: modules/evas/engines/gl_common/shader/gen_shaders.sh */
+ * See: ./modules/evas/engines/gl_common/shader/gen_shaders.sh */
 
 #include "../evas_gl_private.h"
 
-/* Source: modules/evas/engines/gl_common/shader/font_frag.shd */
-static const char const font_frag_glsl[] =
+static const char const rect_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -12,44 +11,42 @@ static const char const font_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
    "varying vec4 col;\n"
-   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy).aaaa * col;\n"
+   "   vec4 c;\n"
+   "   c = vec4(1, 1, 1, 1);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_font_frag_src =
+Evas_GL_Program_Source shader_rect_frag_src =
 {
-   font_frag_glsl,
+   rect_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/font_vert.shd */
-static const char const font_vert_glsl[] =
+static const char const rect_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
-   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
-   "   tex_c = tex_coord;\n"
    "}\n";
-Evas_GL_Program_Source shader_font_vert_src =
+Evas_GL_Program_Source shader_rect_vert_src =
 {
-   font_vert_glsl,
+   rect_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/font_mask_frag.shd */
-static const char const font_mask_frag_glsl[] =
+static const char const rect_mask_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -57,52 +54,49 @@ static const char const font_mask_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
-   "uniform sampler2D texm;\n"
    "varying vec4 col;\n"
-   "varying vec2 tex_c;\n"
+   "uniform sampler2D texm;\n"
    "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy).aaaa * texture2D(texm, tex_m.xy).aaaa * col;\n"
+   "   vec4 c;\n"
+   "   c = vec4(1, 1, 1, 1);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_font_mask_frag_src =
+Evas_GL_Program_Source shader_rect_mask_frag_src =
 {
-   font_mask_frag_glsl,
+   rect_mask_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/font_mask_vert.shd */
-static const char const font_mask_vert_glsl[] =
+static const char const rect_mask_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec4 mask_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
-   "varying vec2 tex_c;\n"
+   "attribute vec4 mask_coord;\n"
    "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
-   "   tex_c = tex_coord;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
    "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
    "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_font_mask_vert_src =
+Evas_GL_Program_Source shader_rect_mask_vert_src =
 {
-   font_mask_vert_glsl,
+   rect_mask_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd */
-static const char const img_12_bgra_frag_glsl[] =
+static const char const font_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -110,105 +104,102 @@ static const char const img_12_bgra_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   gl_FragColor = ((col00 + col01) / div_s) * col;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).aaaa;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_12_bgra_frag_src =
+Evas_GL_Program_Source shader_font_frag_src =
 {
-   img_12_bgra_frag_glsl,
+   font_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd */
-static const char const img_12_bgra_nomul_frag_glsl[] =
+static const char const font_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
-   "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   gl_FragColor = (col00 + col01) / div_s;\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_12_bgra_nomul_frag_src =
+Evas_GL_Program_Source shader_font_vert_src =
 {
-   img_12_bgra_nomul_frag_glsl,
+   font_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd */
-static const char const img_12_bgra_nomul_vert_glsl[] =
+static const char const font_mask_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
-   "uniform mat4 mvp;\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
-   "   tex_s[1] = vec2(0,  tex_sample.y);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).aaaa;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_12_bgra_nomul_vert_src =
+Evas_GL_Program_Source shader_font_mask_frag_src =
 {
-   img_12_bgra_nomul_vert_glsl,
+   font_mask_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd */
-static const char const img_12_bgra_vert_glsl[] =
+static const char const font_mask_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
-   "   tex_s[1] = vec2(0,  tex_sample.y);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_12_bgra_vert_src =
+Evas_GL_Program_Source shader_font_mask_vert_src =
 {
-   img_12_bgra_vert_glsl,
+   font_mask_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_12_frag.shd */
-static const char const img_12_frag_glsl[] =
+static const char const img_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -216,25 +207,47 @@ static const char const img_12_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
+   "varying vec4 col;\n"
    "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_frag_src =
+{
+   img_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
-   "   gl_FragColor = ((col00 + col01) / div_s) * col;\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_12_frag_src =
+Evas_GL_Program_Source shader_img_vert_src =
 {
-   img_12_frag_glsl,
+   img_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd */
-static const char const img_12_nomul_frag_glsl[] =
+static const char const img_bgra_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -242,105 +255,105 @@ static const char const img_12_nomul_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
+   "varying vec4 col;\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
-   "   gl_FragColor = (col00 + col01) / div_s;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).rgba;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_12_nomul_frag_src =
+Evas_GL_Program_Source shader_img_bgra_frag_src =
 {
-   img_12_nomul_frag_glsl,
+   img_bgra_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd */
-static const char const img_12_nomul_vert_glsl[] =
+static const char const img_bgra_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
-   "   tex_s[1] = vec2(0,  tex_sample.y);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_img_12_nomul_vert_src =
+Evas_GL_Program_Source shader_img_bgra_vert_src =
 {
-   img_12_nomul_vert_glsl,
+   img_bgra_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_12_vert.shd */
-static const char const img_12_vert_glsl[] =
+static const char const img_12_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
-   "uniform mat4 mvp;\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
-   "   tex_s[1] = vec2(0,  tex_sample.y);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_12_vert_src =
+Evas_GL_Program_Source shader_img_12_frag_src =
 {
-   img_12_vert_glsl,
+   img_12_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd */
-static const char const img_21_bgra_frag_glsl[] =
+static const char const img_12_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
-   "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   gl_FragColor = ((col00 + col01) / div_s) * col;\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_img_21_bgra_frag_src =
+Evas_GL_Program_Source shader_img_12_vert_src =
 {
-   img_21_bgra_frag_glsl,
+   img_12_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd */
-static const char const img_21_bgra_nomul_frag_glsl[] =
+static const char const img_21_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -348,79 +361,891 @@ static const char const img_21_bgra_nomul_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
+   "varying vec4 col;\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   gl_FragColor = (col00 + col01) / div_s;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_21_bgra_nomul_frag_src =
+Evas_GL_Program_Source shader_img_21_frag_src =
 {
-   img_21_bgra_nomul_frag_glsl,
+   img_21_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd */
-static const char const img_21_bgra_nomul_vert_glsl[] =
+static const char const img_21_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
    "   tex_c = tex_coord;\n"
    "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
    "   tex_s[1] = vec2( tex_sample.x, 0);\n"
    "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_img_21_bgra_nomul_vert_src =
+Evas_GL_Program_Source shader_img_21_vert_src =
 {
-   img_21_bgra_nomul_vert_glsl,
+   img_21_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd */
-static const char const img_21_bgra_vert_glsl[] =
+static const char const img_22_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_22_frag_src =
+{
+   img_22_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_22_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_22_vert_src =
+{
+   img_22_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_12_bgra_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_12_bgra_frag_src =
+{
+   img_12_bgra_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_12_bgra_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_12_bgra_vert_src =
+{
+   img_12_bgra_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_21_bgra_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_21_bgra_frag_src =
+{
+   img_21_bgra_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_21_bgra_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
+   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_21_bgra_vert_src =
+{
+   img_21_bgra_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_22_bgra_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).rgba;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).rgba;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_22_bgra_frag_src =
+{
+   img_22_bgra_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_22_bgra_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_22_bgra_vert_src =
+{
+   img_22_bgra_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_mask_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_mask_frag_src =
+{
+   img_mask_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_mask_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_mask_vert_src =
+{
+   img_mask_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_bgra_mask_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).rgba;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_bgra_mask_frag_src =
+{
+   img_bgra_mask_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_bgra_mask_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_bgra_mask_vert_src =
+{
+   img_bgra_mask_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_12_mask_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_12_mask_frag_src =
+{
+   img_12_mask_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_12_mask_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_12_mask_vert_src =
+{
+   img_12_mask_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_21_mask_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_21_mask_frag_src =
+{
+   img_21_mask_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_21_mask_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
+   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_21_mask_vert_src =
+{
+   img_21_mask_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_22_mask_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_22_mask_frag_src =
+{
+   img_22_mask_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_22_mask_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_22_mask_vert_src =
+{
+   img_22_mask_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_12_bgra_mask_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_12_bgra_mask_frag_src =
+{
+   img_12_bgra_mask_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_12_bgra_mask_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_12_bgra_mask_vert_src =
+{
+   img_12_bgra_mask_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_21_bgra_mask_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_21_bgra_mask_frag_src =
+{
+   img_21_bgra_mask_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_21_bgra_mask_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
+   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_21_bgra_mask_vert_src =
+{
+   img_21_bgra_mask_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_22_bgra_mask_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).rgba;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).rgba;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_22_bgra_mask_frag_src =
+{
+   img_22_bgra_mask_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_22_bgra_mask_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
    "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
    "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_22_bgra_mask_vert_src =
+{
+   img_22_bgra_mask_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_nomul_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_nomul_frag_src =
+{
+   img_nomul_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_nomul_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_c = tex_coord;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_nomul_vert_src =
+{
+   img_nomul_vert_glsl,
+   NULL, 0
+};
+
+static const char const img_bgra_nomul_frag_glsl[] =
+   "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
+   "#endif\n"
+   "#endif\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "void main()\n"
+   "{\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).rgba;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_bgra_nomul_frag_src =
+{
+   img_bgra_nomul_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_bgra_nomul_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
-   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_img_21_bgra_vert_src =
+Evas_GL_Program_Source shader_img_bgra_nomul_vert_src =
 {
-   img_21_bgra_vert_glsl,
+   img_bgra_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_21_frag.shd */
-static const char const img_21_frag_glsl[] =
+static const char const img_12_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -429,23 +1254,50 @@ static const char const img_21_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
+   "   vec4 c;\n"
    "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
    "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
-   "   gl_FragColor = ((col00 + col01) / div_s) * col;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_21_frag_src =
+Evas_GL_Program_Source shader_img_12_nomul_frag_src =
 {
-   img_21_frag_glsl,
+   img_12_nomul_frag_glsl,
+   NULL, 0
+};
+
+static const char const img_12_nomul_vert_glsl[] =
+   "#ifdef GL_ES\n"
+   "precision highp float;\n"
+   "#endif\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "void main()\n"
+   "{\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "}\n";
+Evas_GL_Program_Source shader_img_12_nomul_vert_src =
+{
+   img_12_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd */
 static const char const img_21_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
@@ -456,13 +1308,17 @@ static const char const img_21_nomul_frag_glsl[] =
    "#endif\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
+   "   vec4 c;\n"
    "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
    "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
-   "   gl_FragColor = (col00 + col01) / div_s;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
 Evas_GL_Program_Source shader_img_21_nomul_frag_src =
 {
@@ -470,18 +1326,17 @@ Evas_GL_Program_Source shader_img_21_nomul_frag_src =
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd */
 static const char const img_21_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
@@ -496,65 +1351,64 @@ Evas_GL_Program_Source shader_img_21_nomul_vert_src =
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_21_vert.shd */
-static const char const img_21_vert_glsl[] =
+static const char const img_22_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
-   "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "#endif\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
-   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_21_vert_src =
+Evas_GL_Program_Source shader_img_22_nomul_frag_src =
 {
-   img_21_vert_glsl,
+   img_22_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd */
-static const char const img_22_bgra_frag_glsl[] =
+static const char const img_22_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
-   "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n"
-   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n"
-   "   gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
    "}\n";
-Evas_GL_Program_Source shader_img_22_bgra_frag_src =
+Evas_GL_Program_Source shader_img_22_nomul_vert_src =
 {
-   img_22_bgra_frag_glsl,
+   img_22_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd */
-static const char const img_22_bgra_nomul_frag_glsl[] =
+static const char const img_12_bgra_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -564,83 +1418,50 @@ static const char const img_22_bgra_nomul_frag_glsl[] =
    "#endif\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n"
-   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n"
-   "   gl_FragColor = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_22_bgra_nomul_frag_src =
+Evas_GL_Program_Source shader_img_12_bgra_nomul_frag_src =
 {
-   img_22_bgra_nomul_frag_glsl,
+   img_12_bgra_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd */
-static const char const img_22_bgra_nomul_vert_glsl[] =
+static const char const img_12_bgra_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
-   "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
-   "varying vec4 div_s;\n"
-   "void main()\n"
-   "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);\n"
-   "   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);\n"
-   "   div_s = vec4(4, 4, 4, 4);\n"
-   "}\n";
-Evas_GL_Program_Source shader_img_22_bgra_nomul_vert_src =
-{
-   img_22_bgra_nomul_vert_glsl,
-   NULL, 0
-};
-
-/* Source: modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd */
-static const char const img_22_bgra_vert_glsl[] =
-   "#ifdef GL_ES\n"
-   "precision highp float;\n"
-   "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
    "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
-   "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);\n"
-   "   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);\n"
-   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_img_22_bgra_vert_src =
+Evas_GL_Program_Source shader_img_12_bgra_nomul_vert_src =
 {
-   img_22_bgra_vert_glsl,
+   img_12_bgra_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_22_frag.shd */
-static const char const img_22_frag_glsl[] =
+static const char const img_21_bgra_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -649,112 +1470,108 @@ static const char const img_22_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
-   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n"
-   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n"
-   "   gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_22_frag_src =
+Evas_GL_Program_Source shader_img_21_bgra_nomul_frag_src =
 {
-   img_22_frag_glsl,
+   img_21_bgra_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd */
-static const char const img_22_nomul_frag_glsl[] =
+static const char const img_21_bgra_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
    "#endif\n"
-   "#endif\n"
-   "uniform sampler2D tex;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
-   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n"
-   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n"
-   "   gl_FragColor = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
+   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_img_22_nomul_frag_src =
+Evas_GL_Program_Source shader_img_21_bgra_nomul_vert_src =
 {
-   img_22_nomul_frag_glsl,
+   img_21_bgra_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd */
-static const char const img_22_nomul_vert_glsl[] =
+static const char const img_22_bgra_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
-   "uniform mat4 mvp;\n"
+   "#endif\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);\n"
-   "   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);\n"
-   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).rgba;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).rgba;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_22_nomul_vert_src =
+Evas_GL_Program_Source shader_img_22_bgra_nomul_frag_src =
 {
-   img_22_nomul_vert_glsl,
+   img_22_bgra_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_22_vert.shd */
-static const char const img_22_vert_glsl[] =
+static const char const img_22_bgra_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
    "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
    "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);\n"
-   "   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
    "   div_s = vec4(4, 4, 4, 4);\n"
    "}\n";
-Evas_GL_Program_Source shader_img_22_vert_src =
+Evas_GL_Program_Source shader_img_22_bgra_nomul_vert_src =
 {
-   img_22_vert_glsl,
+   img_22_bgra_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_bgra_frag.shd */
-static const char const img_bgra_frag_glsl[] =
+static const char const img_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -763,84 +1580,98 @@ static const char const img_bgra_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy) * col;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_bgra_frag_src =
+Evas_GL_Program_Source shader_img_mask_nomul_frag_src =
 {
-   img_bgra_frag_glsl,
+   img_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_bgra_nomul_frag.shd */
-static const char const img_bgra_nomul_frag_glsl[] =
+static const char const img_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
    "#endif\n"
-   "#endif\n"
-   "uniform sampler2D tex;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy);\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_c = tex_coord;\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_bgra_nomul_frag_src =
+Evas_GL_Program_Source shader_img_mask_nomul_vert_src =
 {
-   img_bgra_nomul_frag_glsl,
+   img_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_bgra_nomul_vert.shd */
-static const char const img_bgra_nomul_vert_glsl[] =
+static const char const img_bgra_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "uniform mat4 mvp;\n"
+   "#endif\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).rgba;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_bgra_nomul_vert_src =
+Evas_GL_Program_Source shader_img_bgra_mask_nomul_frag_src =
 {
-   img_bgra_nomul_vert_glsl,
+   img_bgra_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_bgra_vert.shd */
-static const char const img_bgra_vert_glsl[] =
+static const char const img_bgra_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_bgra_vert_src =
+Evas_GL_Program_Source shader_img_bgra_mask_nomul_vert_src =
 {
-   img_bgra_vert_glsl,
+   img_bgra_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_frag.shd */
-static const char const img_frag_glsl[] =
+static const char const img_12_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -849,84 +1680,118 @@ static const char const img_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy).bgra * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_frag_src =
+Evas_GL_Program_Source shader_img_12_mask_nomul_frag_src =
 {
-   img_frag_glsl,
+   img_12_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_nomul_frag.shd */
-static const char const img_nomul_frag_glsl[] =
+static const char const img_12_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
    "#endif\n"
-   "#endif\n"
-   "uniform sampler2D tex;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy).bgra;\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_nomul_frag_src =
+Evas_GL_Program_Source shader_img_12_mask_nomul_vert_src =
 {
-   img_nomul_frag_glsl,
+   img_12_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_nomul_vert.shd */
-static const char const img_nomul_vert_glsl[] =
+static const char const img_21_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "uniform mat4 mvp;\n"
+   "#endif\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_nomul_vert_src =
+Evas_GL_Program_Source shader_img_21_mask_nomul_frag_src =
 {
-   img_nomul_vert_glsl,
+   img_21_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_vert.shd */
-static const char const img_vert_glsl[] =
+static const char const img_21_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
+   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_vert_src =
+Evas_GL_Program_Source shader_img_21_mask_nomul_vert_src =
 {
-   img_vert_glsl,
+   img_21_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/nv12_frag.shd */
-static const char const nv12_frag_glsl[] =
+static const char const img_22_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -934,114 +1799,123 @@ static const char const nv12_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texuv;\n"
-   "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_cuv;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "  float y,u,v,vmu,r,g,b;\n"
-   "  y=texture2D(tex,tex_c).g;\n"
-   "  u=texture2D(texuv,tex_cuv).g;\n"
-   "  v=texture2D(texuv,tex_cuv).a;\n"
-   "  u=u-0.5;\n"
-   "  v=v-0.5;\n"
-   "  vmu=v*0.813+u*0.391;\n"
-   "  u=u*2.018;\n"
-   "  v=v*1.596;\n"
-   "  y=(y-0.062)*1.164;\n"
-   "  r=y+v;\n"
-   "  g=y-vmu;\n"
-   "  b=y+u;\n"
-   "  gl_FragColor=vec4(r,g,b,1.0) * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_nv12_frag_src =
+Evas_GL_Program_Source shader_img_22_mask_nomul_frag_src =
 {
-   nv12_frag_glsl,
+   img_22_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/nv12_nomul_frag.shd */
-static const char const nv12_nomul_frag_glsl[] =
+static const char const img_22_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
-   "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texuv;\n"
-   "varying vec2 tex_c, tex_cuv;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "  float y,u,v,vmu,r,g,b;\n"
-   "  y=texture2D(tex,tex_c).g;\n"
-   "  u=texture2D(texuv,tex_cuv).g;\n"
-   "  v=texture2D(texuv,tex_cuv).a;\n"
-   "  u=u-0.5;\n"
-   "  v=v-0.5;\n"
-   "  vmu=v*0.813+u*0.391;\n"
-   "  u=u*2.018;\n"
-   "  v=v*1.596;\n"
-   "  y=(y-0.062)*1.164;\n"
-   "  r=y+v;\n"
-   "  g=y-vmu;\n"
-   "  b=y+u;\n"
-   "  gl_FragColor=vec4(r,g,b,1.0);\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_nv12_nomul_frag_src =
+Evas_GL_Program_Source shader_img_22_mask_nomul_vert_src =
 {
-   nv12_nomul_frag_glsl,
+   img_22_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/nv12_nomul_vert.shd */
-static const char const nv12_nomul_vert_glsl[] =
+static const char const img_12_bgra_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord, tex_coord2;\n"
-   "uniform mat4 mvp;\n"
-   "varying vec2 tex_c, tex_cuv;\n"
+   "#endif\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_cuv = tex_coord2 * 0.5;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_nv12_nomul_vert_src =
+Evas_GL_Program_Source shader_img_12_bgra_mask_nomul_frag_src =
 {
-   nv12_nomul_vert_glsl,
+   img_12_bgra_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/nv12_vert.shd */
-static const char const nv12_vert_glsl[] =
+static const char const img_12_bgra_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord, tex_coord2;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_cuv;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_cuv = tex_coord2 * 0.5;\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_nv12_vert_src =
+Evas_GL_Program_Source shader_img_12_bgra_mask_nomul_vert_src =
 {
-   nv12_vert_glsl,
+   img_12_bgra_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rect_frag.shd */
-static const char const rect_frag_glsl[] =
+static const char const img_21_bgra_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1050,39 +1924,58 @@ static const char const rect_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_rect_frag_src =
+Evas_GL_Program_Source shader_img_21_bgra_mask_nomul_frag_src =
 {
-   rect_frag_glsl,
+   img_21_bgra_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rect_vert.shd */
-static const char const rect_vert_glsl[] =
+static const char const img_21_bgra_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
+   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_rect_vert_src =
+Evas_GL_Program_Source shader_img_21_bgra_mask_nomul_vert_src =
 {
-   rect_vert_glsl,
+   img_21_bgra_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rgb_a_pair_frag.shd */
-static const char const rgb_a_pair_frag_glsl[] =
+static const char const img_22_bgra_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1091,96 +1984,111 @@ static const char const rgb_a_pair_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "uniform sampler2D texa;\n"
-   "varying vec4 col;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 coord_a;\n"
+   "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor.rgb = texture2D(tex, coord_c.xy).rgb * col.rgb * texture2D(texa, coord_a).g;\n"
-   "   gl_FragColor.a = col.a * texture2D(texa, coord_a).g;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).rgba;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).rgba;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_rgb_a_pair_frag_src =
+Evas_GL_Program_Source shader_img_22_bgra_mask_nomul_frag_src =
 {
-   rgb_a_pair_frag_glsl,
+   img_22_bgra_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_frag.shd */
-static const char const rgb_a_pair_nomul_frag_glsl[] =
+static const char const img_22_bgra_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
-   "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
-   "uniform sampler2D texa;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 coord_a;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor.rgb = texture2D(tex, coord_c.xy).rgb * texture2D(texa, coord_a).g;\n"
-   "   gl_FragColor.a   = texture2D(texa, coord_a).g;\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_rgb_a_pair_nomul_frag_src =
+Evas_GL_Program_Source shader_img_22_bgra_mask_nomul_vert_src =
 {
-   rgb_a_pair_nomul_frag_glsl,
+   img_22_bgra_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_vert.shd */
-static const char const rgb_a_pair_nomul_vert_glsl[] =
+static const char const img_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_coorda;\n"
-   "uniform mat4 mvp;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 coord_a;\n"
+   "#endif\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   coord_c = tex_coord;\n"
-   "   coord_a = tex_coorda;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_rgb_a_pair_nomul_vert_src =
+Evas_GL_Program_Source shader_img_afill_frag_src =
 {
-   rgb_a_pair_nomul_vert_glsl,
+   img_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rgb_a_pair_vert.shd */
-static const char const rgb_a_pair_vert_glsl[] =
+static const char const img_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_coorda;\n"
+   "attribute vec4 vertex;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 coord_a;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
-   "   coord_c = tex_coord;\n"
-   "   coord_a = tex_coorda;\n"
+   "   tex_c = tex_coord;\n"
    "}\n";
-Evas_GL_Program_Source shader_rgb_a_pair_vert_src =
+Evas_GL_Program_Source shader_img_afill_vert_src =
 {
-   rgb_a_pair_vert_glsl,
+   img_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_12_frag.shd */
-static const char const tex_12_frag_glsl[] =
+static const char const img_bgra_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1188,54 +2096,48 @@ static const char const tex_12_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   gl_FragColor = ((col00 + col01) / div_s) * col;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).rgba;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_12_frag_src =
+Evas_GL_Program_Source shader_img_bgra_afill_frag_src =
 {
-   tex_12_frag_glsl,
+   img_bgra_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_12_vert.shd */
-static const char const tex_12_vert_glsl[] =
+static const char const img_bgra_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
-   "   tex_s[1] = vec2(0,  tex_sample.y);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_12_vert_src =
+Evas_GL_Program_Source shader_img_bgra_afill_vert_src =
 {
-   tex_12_vert_glsl,
+   img_bgra_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd */
-static const char const tex_12_nomul_frag_glsl[] =
+static const char const img_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1245,48 +2147,41 @@ static const char const tex_12_nomul_frag_glsl[] =
    "#endif\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   gl_FragColor = (col00 + col01) / div_s;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_12_nomul_frag_src =
+Evas_GL_Program_Source shader_img_nomul_afill_frag_src =
 {
-   tex_12_nomul_frag_glsl,
+   img_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd */
-static const char const tex_12_nomul_vert_glsl[] =
+static const char const img_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
-   "   tex_s[1] = vec2(0,  tex_sample.y);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_12_nomul_vert_src =
+Evas_GL_Program_Source shader_img_nomul_afill_vert_src =
 {
-   tex_12_nomul_vert_glsl,
+   img_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_21_frag.shd */
-static const char const tex_21_frag_glsl[] =
+static const char const img_bgra_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1295,53 +2190,42 @@ static const char const tex_21_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   gl_FragColor = ((col00 + col01) / div_s) * col;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).rgba;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_21_frag_src =
+Evas_GL_Program_Source shader_img_bgra_nomul_afill_frag_src =
 {
-   tex_21_frag_glsl,
+   img_bgra_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_21_vert.shd */
-static const char const tex_21_vert_glsl[] =
+static const char const img_bgra_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
-   "varying vec4 div_s;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
-   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_21_vert_src =
+Evas_GL_Program_Source shader_img_bgra_nomul_afill_vert_src =
 {
-   tex_21_vert_glsl,
+   img_bgra_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd */
-static const char const tex_21_nomul_frag_glsl[] =
+static const char const img_12_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1349,50 +2233,58 @@ static const char const tex_21_nomul_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
+   "varying vec4 col;\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   gl_FragColor = (col00 + col01) / div_s;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_21_nomul_frag_src =
+Evas_GL_Program_Source shader_img_12_afill_frag_src =
 {
-   tex_21_nomul_frag_glsl,
+   img_12_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd */
-static const char const tex_21_nomul_vert_glsl[] =
+static const char const img_12_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
-   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
    "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_21_nomul_vert_src =
+Evas_GL_Program_Source shader_img_12_afill_vert_src =
 {
-   tex_21_nomul_vert_glsl,
+   img_12_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_22_frag.shd */
-static const char const tex_22_frag_glsl[] =
+static const char const img_21_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1400,58 +2292,58 @@ static const char const tex_22_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n"
-   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n"
-   "   gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_22_frag_src =
+Evas_GL_Program_Source shader_img_21_afill_frag_src =
 {
-   tex_22_frag_glsl,
+   img_21_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_22_vert.shd */
-static const char const tex_22_vert_glsl[] =
+static const char const img_21_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);\n"
-   "   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);\n"
-   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
+   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_22_vert_src =
+Evas_GL_Program_Source shader_img_21_afill_vert_src =
 {
-   tex_22_vert_glsl,
+   img_21_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd */
-static const char const tex_22_nomul_frag_glsl[] =
+static const char const img_22_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1459,54 +2351,62 @@ static const char const tex_22_nomul_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
+   "varying vec4 col;\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n"
-   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n"
-   "   gl_FragColor = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_22_nomul_frag_src =
+Evas_GL_Program_Source shader_img_22_afill_frag_src =
 {
-   tex_22_nomul_frag_glsl,
+   img_22_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd */
-static const char const tex_22_nomul_vert_glsl[] =
+static const char const img_22_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
    "   tex_c = tex_coord;\n"
    "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
    "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);\n"
-   "   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
    "   div_s = vec4(4, 4, 4, 4);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_22_nomul_vert_src =
+Evas_GL_Program_Source shader_img_22_afill_vert_src =
 {
-   tex_22_nomul_vert_glsl,
+   img_22_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_frag.shd */
-static const char const tex_frag_glsl[] =
+static const char const img_12_bgra_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1514,44 +2414,58 @@ static const char const tex_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy) * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_frag_src =
+Evas_GL_Program_Source shader_img_12_bgra_afill_frag_src =
 {
-   tex_frag_glsl,
+   img_12_bgra_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_vert.shd */
-static const char const tex_vert_glsl[] =
+static const char const img_12_bgra_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
    "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_vert_src =
+Evas_GL_Program_Source shader_img_12_bgra_afill_vert_src =
 {
-   tex_vert_glsl,
+   img_12_bgra_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_nomul_frag.shd */
-static const char const tex_nomul_frag_glsl[] =
+static const char const img_21_bgra_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1559,40 +2473,58 @@ static const char const tex_nomul_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
+   "varying vec4 col;\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy);\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_nomul_frag_src =
+Evas_GL_Program_Source shader_img_21_bgra_afill_frag_src =
 {
-   tex_nomul_frag_glsl,
+   img_21_bgra_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_nomul_vert.shd */
-static const char const tex_nomul_vert_glsl[] =
+static const char const img_21_bgra_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
    "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
+   "   tex_s[1] = vec2( tex_sample.x, 0);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_nomul_vert_src =
+Evas_GL_Program_Source shader_img_21_bgra_afill_vert_src =
 {
-   tex_nomul_vert_glsl,
+   img_21_bgra_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_afill_frag.shd */
-static const char const tex_afill_frag_glsl[] =
+static const char const img_22_bgra_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1600,45 +2532,62 @@ static const char const tex_afill_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
-   "   vec4 c = texture2D(tex, tex_c.xy);\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).rgba;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).rgba;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_afill_frag_src =
+Evas_GL_Program_Source shader_img_22_bgra_afill_frag_src =
 {
-   tex_afill_frag_glsl,
+   img_22_bgra_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_afill_vert.shd */
-static const char const tex_afill_vert_glsl[] =
+static const char const img_22_bgra_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_sample;\n"
+   "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
    "   tex_c = tex_coord;\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_afill_vert_src =
+Evas_GL_Program_Source shader_img_22_bgra_afill_vert_src =
 {
-   tex_afill_vert_glsl,
+   img_22_bgra_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_22_afill_frag.shd */
-static const char const tex_22_afill_frag_glsl[] =
+static const char const img_12_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1647,58 +2596,52 @@ static const char const tex_22_afill_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n"
-   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n"
-   "   vec4 c = (col00 + col01 + col10 + col11) / div_s;\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_22_afill_frag_src =
+Evas_GL_Program_Source shader_img_12_nomul_afill_frag_src =
 {
-   tex_22_afill_frag_glsl,
+   img_12_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_22_afill_vert.shd */
-static const char const tex_22_afill_vert_glsl[] =
+static const char const img_12_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);\n"
-   "   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);\n"
-   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_22_afill_vert_src =
+Evas_GL_Program_Source shader_img_12_nomul_afill_vert_src =
 {
-   tex_22_afill_vert_glsl,
+   img_12_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_21_afill_frag.shd */
-static const char const tex_21_afill_frag_glsl[] =
+static const char const img_21_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1707,54 +2650,52 @@ static const char const tex_21_afill_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 c = (col00 + col01) / div_s;\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_21_afill_frag_src =
+Evas_GL_Program_Source shader_img_21_nomul_afill_frag_src =
 {
-   tex_21_afill_frag_glsl,
+   img_21_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_21_afill_vert.shd */
-static const char const tex_21_afill_vert_glsl[] =
+static const char const img_21_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
    "   tex_s[0] = vec2(-tex_sample.x, 0);\n"
    "   tex_s[1] = vec2( tex_sample.x, 0);\n"
    "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_21_afill_vert_src =
+Evas_GL_Program_Source shader_img_21_nomul_afill_vert_src =
 {
-   tex_21_afill_vert_glsl,
+   img_21_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_12_afill_frag.shd */
-static const char const tex_12_afill_frag_glsl[] =
+static const char const img_22_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1763,54 +2704,56 @@ static const char const tex_12_afill_frag_glsl[] =
    "#endif\n"
    "#endif\n"
    "uniform sampler2D tex;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 c = (col00 + col01) / div_s;\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_12_afill_frag_src =
+Evas_GL_Program_Source shader_img_22_nomul_afill_frag_src =
 {
-   tex_12_afill_frag_glsl,
+   img_22_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_12_afill_vert.shd */
-static const char const tex_12_afill_vert_glsl[] =
+static const char const img_22_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
-   "   tex_s[1] = vec2(0,  tex_sample.y);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_12_afill_vert_src =
+Evas_GL_Program_Source shader_img_22_nomul_afill_vert_src =
 {
-   tex_12_afill_vert_glsl,
+   img_22_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.shd */
-static const char const tex_22_nomul_afill_frag_glsl[] =
+static const char const img_12_bgra_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1820,53 +2763,51 @@ static const char const tex_22_nomul_afill_frag_glsl[] =
    "#endif\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n"
-   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n"
-   "   vec4 c = (col00 + col01 + col10 + col11) / div_s;\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1);\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_22_nomul_afill_frag_src =
+Evas_GL_Program_Source shader_img_12_bgra_nomul_afill_frag_src =
 {
-   tex_22_nomul_afill_frag_glsl,
+   img_12_bgra_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.shd */
-static const char const tex_22_nomul_afill_vert_glsl[] =
+static const char const img_12_bgra_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[4];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
-   "   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);\n"
-   "   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);\n"
-   "   div_s = vec4(4, 4, 4, 4);\n"
+   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
+   "   tex_s[1] = vec2(0, tex_sample.y);\n"
+   "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_22_nomul_afill_vert_src =
+Evas_GL_Program_Source shader_img_12_bgra_nomul_afill_vert_src =
 {
-   tex_22_nomul_afill_vert_glsl,
+   img_12_bgra_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.shd */
-static const char const tex_21_nomul_afill_frag_glsl[] =
+static const char const img_21_bgra_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1876,33 +2817,36 @@ static const char const tex_21_nomul_afill_frag_glsl[] =
    "#endif\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 c = (col00 + col01) / div_s;\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1);\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   c = (col00 + col01) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_21_nomul_afill_frag_src =
+Evas_GL_Program_Source shader_img_21_bgra_nomul_afill_frag_src =
 {
-   tex_21_nomul_afill_frag_glsl,
+   img_21_bgra_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.shd */
-static const char const tex_21_nomul_afill_vert_glsl[] =
+static const char const img_21_bgra_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[2];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
@@ -1911,14 +2855,13 @@ static const char const tex_21_nomul_afill_vert_glsl[] =
    "   tex_s[1] = vec2( tex_sample.x, 0);\n"
    "   div_s = vec4(2, 2, 2, 2);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_21_nomul_afill_vert_src =
+Evas_GL_Program_Source shader_img_21_bgra_nomul_afill_vert_src =
 {
-   tex_21_nomul_afill_vert_glsl,
+   img_21_bgra_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.shd */
-static const char const tex_12_nomul_afill_frag_glsl[] =
+static const char const img_22_bgra_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1928,49 +2871,55 @@ static const char const tex_12_nomul_afill_frag_glsl[] =
    "#endif\n"
    "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
-   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n"
-   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n"
-   "   vec4 c = (col00 + col01) / div_s;\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1);\n"
+   "   vec4 c;\n"
+   "   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).rgba;\n"
+   "   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).rgba;\n"
+   "   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).rgba;\n"
+   "   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).rgba;\n"
+   "   c = (col00 + col01 + col10 + col11) / div_s;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_12_nomul_afill_frag_src =
+Evas_GL_Program_Source shader_img_22_bgra_nomul_afill_frag_src =
 {
-   tex_12_nomul_afill_frag_glsl,
+   img_22_bgra_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.shd */
-static const char const tex_12_nomul_afill_vert_glsl[] =
+static const char const img_22_bgra_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_sample;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
-   "varying vec2 tex_s[2];\n"
+   "attribute vec2 tex_sample;\n"
    "varying vec4 div_s;\n"
+   "varying vec2 tex_s[4];\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_s[0] = vec2(0, -tex_sample.y);\n"
-   "   tex_s[1] = vec2(0,  tex_sample.y);\n"
-   "   div_s = vec4(2, 2, 2, 2);\n"
+   "   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n"
+   "   tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n"
+   "   tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n"
+   "   div_s = vec4(4, 4, 4, 4);\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_12_nomul_afill_vert_src =
+Evas_GL_Program_Source shader_img_22_bgra_nomul_afill_vert_src =
 {
-   tex_12_nomul_afill_vert_glsl,
+   img_22_bgra_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.shd */
-static const char const tex_nomul_afill_frag_glsl[] =
+static const char const rgb_a_pair_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -1978,41 +2927,48 @@ static const char const tex_nomul_afill_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex;\n"
-   "varying vec2 tex_c;\n"
+   "varying vec4 col;\n"
+   "uniform sampler2D texa;\n"
+   "varying vec2 tex_a;\n"
    "void main()\n"
    "{\n"
-   "   vec4 c = texture2D(tex, tex_c.xy);\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1);\n"
+   "   vec4 c;\n"
+   "   c = vec4(1, 1, 1, 1);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texa, tex_a).r\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_nomul_afill_frag_src =
+Evas_GL_Program_Source shader_rgb_a_pair_frag_src =
 {
-   tex_nomul_afill_frag_glsl,
+   rgb_a_pair_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.shd */
-static const char const tex_nomul_afill_vert_glsl[] =
+static const char const rgb_a_pair_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
-   "varying vec2 tex_c;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coorda;\n"
+   "varying vec2 tex_a;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
+   "   col = color;\n"
+   "   tex_a = tex_coorda;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_nomul_afill_vert_src =
+Evas_GL_Program_Source shader_rgb_a_pair_vert_src =
 {
-   tex_nomul_afill_vert_glsl,
+   rgb_a_pair_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuv_frag.shd */
-static const char const yuv_frag_glsl[] =
+static const char const rgb_a_pair_mask_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2020,109 +2976,99 @@ static const char const yuv_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texu, texv;\n"
    "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_c2, tex_c3;\n"
+   "uniform sampler2D texa;\n"
+   "varying vec2 tex_a;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   float r, g, b, y, u, v;\n"
-   "   y = texture2D(tex, tex_c.xy).r;\n"
-   "   u = texture2D(texu, tex_c2.xy).r;\n"
-   "   v = texture2D(texv, tex_c3.xy).r;\n"
-   "   y = (y - 0.0625) * 1.164;\n"
-   "   u = u - 0.5;\n"
-   "   v = v - 0.5;\n"
-   "   r = y + (1.402   * v);\n"
-   "   g = y - (0.34414 * u) - (0.71414 * v);\n"
-   "   b = y + (1.772   * u);\n"
-   "   gl_FragColor = vec4(r, g, b, 1.0) * col;\n"
+   "   vec4 c;\n"
+   "   c = vec4(1, 1, 1, 1);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "     * texture2D(texa, tex_a).r\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuv_frag_src =
+Evas_GL_Program_Source shader_rgb_a_pair_mask_frag_src =
 {
-   yuv_frag_glsl,
+   rgb_a_pair_mask_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuv_nomul_frag.shd */
-static const char const yuv_nomul_frag_glsl[] =
+static const char const rgb_a_pair_mask_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
-   "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texu, texv;\n"
-   "varying vec2 tex_c, tex_c2, tex_c3;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
+   "attribute vec2 tex_coorda;\n"
+   "varying vec2 tex_a;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   float r, g, b, y, u, v;\n"
-   "   y = texture2D(tex, tex_c.xy).r;\n"
-   "   u = texture2D(texu, tex_c2.xy).r;\n"
-   "   v = texture2D(texv, tex_c3.xy).r;\n"
-   "   y = (y - 0.0625) * 1.164;\n"
-   "   u = u - 0.5;\n"
-   "   v = v - 0.5;\n"
-   "   r = y + (1.402   * v);\n"
-   "   g = y - (0.34414 * u) - (0.71414 * v);\n"
-   "   b = y + (1.772   * u);\n"
-   "   gl_FragColor = vec4(r, g, b, 1.0);\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   col = color;\n"
+   "   tex_a = tex_coorda;\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuv_nomul_frag_src =
+Evas_GL_Program_Source shader_rgb_a_pair_mask_vert_src =
 {
-   yuv_nomul_frag_glsl,
+   rgb_a_pair_mask_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuv_nomul_vert.shd */
-static const char const yuv_nomul_vert_glsl[] =
+static const char const rgb_a_pair_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "#else\n"
+   "precision mediump float;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord, tex_coord2, tex_coord3;\n"
-   "uniform mat4 mvp;\n"
-   "varying vec2 tex_c, tex_c2, tex_c3;\n"
+   "#endif\n"
+   "uniform sampler2D texa;\n"
+   "varying vec2 tex_a;\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_c2 = tex_coord2;\n"
-   "   tex_c3 = tex_coord3;\n"
+   "   vec4 c;\n"
+   "   c = vec4(1, 1, 1, 1);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texa, tex_a).r\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuv_nomul_vert_src =
+Evas_GL_Program_Source shader_rgb_a_pair_nomul_frag_src =
 {
-   yuv_nomul_vert_glsl,
+   rgb_a_pair_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuv_vert.shd */
-static const char const yuv_vert_glsl[] =
+static const char const rgb_a_pair_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord, tex_coord2, tex_coord3;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_c2, tex_c3;\n"
+   "attribute vec2 tex_coorda;\n"
+   "varying vec2 tex_a;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_c2 = tex_coord2;\n"
-   "   tex_c3 = tex_coord3;\n"
+   "   tex_a = tex_coorda;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuv_vert_src =
+Evas_GL_Program_Source shader_rgb_a_pair_nomul_vert_src =
 {
-   yuv_vert_glsl,
+   rgb_a_pair_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuy2_frag.shd */
-static const char const yuy2_frag_glsl[] =
+static const char const rgb_a_pair_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2130,378 +3076,351 @@ static const char const yuy2_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texuv;\n"
-   "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_cuv;\n"
+   "uniform sampler2D texa;\n"
+   "varying vec2 tex_a;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "  float y,u,v,vmu,r,g,b;\n"
-   "  y=texture2D(tex,tex_c).r;\n"
-   "  u=texture2D(texuv,tex_cuv).g;\n"
-   "  v=texture2D(texuv,tex_cuv).a;\n"
-   "  u=u-0.5;\n"
-   "  v=v-0.5;\n"
-   "  vmu=v*0.813+u*0.391;\n"
-   "  u=u*2.018;\n"
-   "  v=v*1.596;\n"
-   "  r=y+v;\n"
-   "  g=y-vmu;\n"
-   "  b=y+u;\n"
-   "  gl_FragColor=vec4(r,g,b,1.0) * col;\n"
+   "   vec4 c;\n"
+   "   c = vec4(1, 1, 1, 1);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "     * texture2D(texa, tex_a).r\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuy2_frag_src =
+Evas_GL_Program_Source shader_rgb_a_pair_mask_nomul_frag_src =
 {
-   yuy2_frag_glsl,
+   rgb_a_pair_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuy2_nomul_frag.shd */
-static const char const yuy2_nomul_frag_glsl[] =
+static const char const rgb_a_pair_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
-   "precision mediump float;\n"
-   "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texuv;\n"
-   "varying vec2 tex_c, tex_cuv;\n"
+   "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coorda;\n"
+   "varying vec2 tex_a;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "  float y,u,v,vmu,r,g,b;\n"
-   "  y=texture2D(tex,tex_c).r;\n"
-   "  u=texture2D(texuv,tex_cuv).g;\n"
-   "  v=texture2D(texuv,tex_cuv).a;\n"
-   "  u=u-0.5;\n"
-   "  v=v-0.5;\n"
-   "  vmu=v*0.813+u*0.391;\n"
-   "  u=u*2.018;\n"
-   "  v=v*1.596;\n"
-   "  y=(y-0.062)*1.164;\n"
-   "  r=y+v;\n"
-   "  g=y-vmu;\n"
-   "  b=y+u;\n"
-   "  gl_FragColor=vec4(r,g,b,1.0);\n"
+   "   gl_Position = mvp * vertex;\n"
+   "   tex_a = tex_coorda;\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuy2_nomul_frag_src =
+Evas_GL_Program_Source shader_rgb_a_pair_mask_nomul_vert_src =
 {
-   yuy2_nomul_frag_glsl,
+   rgb_a_pair_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuy2_nomul_vert.shd */
-static const char const yuy2_nomul_vert_glsl[] =
+static const char const tex_external_frag_glsl[] =
    "#ifdef GL_ES\n"
+   "# extension GL_OES_EGL_image_external : require\n"
+   "# ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
+   "# else\n"
+   "precision mediump float;\n"
+   "# endif\n"
+   "uniform samplerExternalOES tex;\n"
+   "#else\n"
+   "uniform sampler2D tex;\n"
    "#endif\n"
-   "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord, tex_coord2;\n"
-   "uniform mat4 mvp;\n"
-   "varying vec2 tex_c, tex_cuv;\n"
+   "varying vec4 col;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
-   "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_cuv = vec2(tex_coord2.x * 0.5, tex_coord2.y);\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuy2_nomul_vert_src =
+Evas_GL_Program_Source shader_tex_external_frag_src =
 {
-   yuy2_nomul_vert_glsl,
+   tex_external_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuy2_vert.shd */
-static const char const yuy2_vert_glsl[] =
+static const char const tex_external_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord, tex_coord2;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_cuv;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_cuv = vec2(tex_coord2.x * 0.5, tex_coord2.y);\n"
    "}\n";
-Evas_GL_Program_Source shader_yuy2_vert_src =
+Evas_GL_Program_Source shader_tex_external_vert_src =
 {
-   yuy2_vert_glsl,
+   tex_external_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_mask_frag.shd */
-static const char const img_mask_frag_glsl[] =
+static const char const tex_external_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "# extension GL_OES_EGL_image_external : require\n"
+   "# ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
+   "# else\n"
    "precision mediump float;\n"
-   "#endif\n"
-   "#endif\n"
+   "# endif\n"
+   "uniform samplerExternalOES tex;\n"
+   "#else\n"
    "uniform sampler2D tex;\n"
-   "uniform sampler2D texm;\n"
+   "#endif\n"
    "varying vec4 col;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 tex_m;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(texm, tex_m.xy).a * texture2D(tex, coord_c.xy).bgra * col;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_mask_frag_src =
+Evas_GL_Program_Source shader_tex_external_afill_frag_src =
 {
-   img_mask_frag_glsl,
+   tex_external_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_mask_vert.shd */
-static const char const img_mask_vert_glsl[] =
+static const char const tex_external_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec4 mask_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 tex_m;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
-   "   coord_c = tex_coord;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
-   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
-   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_mask_vert_src =
+Evas_GL_Program_Source shader_tex_external_afill_vert_src =
 {
-   img_mask_vert_glsl,
+   tex_external_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_mask_nomul_frag.shd */
-static const char const img_mask_nomul_frag_glsl[] =
+static const char const tex_external_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "# extension GL_OES_EGL_image_external : require\n"
+   "# ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
+   "# else\n"
    "precision mediump float;\n"
-   "#endif\n"
-   "#endif\n"
+   "# endif\n"
+   "uniform samplerExternalOES tex;\n"
+   "#else\n"
    "uniform sampler2D tex;\n"
-   "uniform sampler2D texm;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 tex_m;\n"
+   "#endif\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, coord_c.xy) * texture2D(texm, tex_m).a;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_mask_nomul_frag_src =
+Evas_GL_Program_Source shader_tex_external_nomul_frag_src =
 {
-   img_mask_nomul_frag_glsl,
+   tex_external_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_mask_nomul_vert.shd */
-static const char const img_mask_nomul_vert_glsl[] =
+static const char const tex_external_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec4 mask_coord;\n"
    "uniform mat4 mvp;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 tex_m;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   coord_c = tex_coord;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
-   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
-   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_mask_nomul_vert_src =
+Evas_GL_Program_Source shader_tex_external_nomul_vert_src =
 {
-   img_mask_nomul_vert_glsl,
+   tex_external_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_mask_bgra_frag.shd */
-static const char const img_mask_bgra_frag_glsl[] =
+static const char const tex_external_nomul_afill_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "# extension GL_OES_EGL_image_external : require\n"
+   "# ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
+   "# else\n"
    "precision mediump float;\n"
-   "#endif\n"
-   "#endif\n"
+   "# endif\n"
+   "uniform samplerExternalOES tex;\n"
+   "#else\n"
    "uniform sampler2D tex;\n"
-   "uniform sampler2D texm;\n"
-   "varying vec4 col;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 tex_m;\n"
+   "#endif\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(texm, tex_m.xy).a * texture2D(tex, coord_c.xy) * col;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
+   "   gl_FragColor.a = 1.0;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_mask_bgra_frag_src =
+Evas_GL_Program_Source shader_tex_external_nomul_afill_frag_src =
 {
-   img_mask_bgra_frag_glsl,
+   tex_external_nomul_afill_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_mask_bgra_vert.shd */
-static const char const img_mask_bgra_vert_glsl[] =
+static const char const tex_external_nomul_afill_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
-   "attribute vec4 mask_coord;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 tex_m;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
-   "   coord_c = tex_coord;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
-   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
-   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_mask_bgra_vert_src =
+Evas_GL_Program_Source shader_tex_external_nomul_afill_vert_src =
 {
-   img_mask_bgra_vert_glsl,
+   tex_external_nomul_afill_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_frag.shd */
-static const char const img_mask_bgra_nomul_frag_glsl[] =
+static const char const tex_external_mask_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "# extension GL_OES_EGL_image_external : require\n"
+   "# ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
+   "# else\n"
    "precision mediump float;\n"
-   "#endif\n"
-   "#endif\n"
+   "# endif\n"
+   "uniform samplerExternalOES tex;\n"
+   "#else\n"
    "uniform sampler2D tex;\n"
+   "#endif\n"
+   "varying vec4 col;\n"
    "uniform sampler2D texm;\n"
-   "varying vec2 coord_c;\n"
    "varying vec2 tex_m;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(texm, tex_m.xy).a * texture2D(tex, coord_c.xy);\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_mask_bgra_nomul_frag_src =
+Evas_GL_Program_Source shader_tex_external_mask_frag_src =
 {
-   img_mask_bgra_nomul_frag_glsl,
+   tex_external_mask_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_vert.shd */
-static const char const img_mask_bgra_nomul_vert_glsl[] =
+static const char const tex_external_mask_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
+   "varying vec4 col;\n"
    "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
    "attribute vec4 mask_coord;\n"
-   "uniform mat4 mvp;\n"
-   "varying vec2 coord_c;\n"
    "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   coord_c = tex_coord;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
+   "   col = color;\n"
    "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
    "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_img_mask_bgra_nomul_vert_src =
+Evas_GL_Program_Source shader_tex_external_mask_vert_src =
 {
-   img_mask_bgra_nomul_vert_glsl,
+   tex_external_mask_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuv_mask_frag.shd */
-static const char const yuv_mask_frag_glsl[] =
+static const char const tex_external_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+   "# extension GL_OES_EGL_image_external : require\n"
+   "# ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
-   "#else\n"
+   "# else\n"
    "precision mediump float;\n"
+   "# endif\n"
+   "uniform samplerExternalOES tex;\n"
+   "#else\n"
+   "uniform sampler2D tex;\n"
    "#endif\n"
-   "#endif\n"
-   "uniform sampler2D tex, texu, texv, texm;\n"
-   "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_c2, tex_c3, tex_m;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
+   "varying vec2 tex_c;\n"
    "void main()\n"
    "{\n"
-   "   float r, g, b, y, u, v;\n"
-   "   y = texture2D(tex, tex_c.xy).r;\n"
-   "   u = texture2D(texu, tex_c2.xy).r;\n"
-   "   v = texture2D(texv, tex_c3.xy).r;\n"
-   "   y = (y - 0.0625) * 1.164;\n"
-   "   u = u - 0.5;\n"
-   "   v = v - 0.5;\n"
-   "   r = y + (1.402   * v);\n"
-   "   g = y - (0.34414 * u) - (0.71414 * v);\n"
-   "   b = y + (1.772   * u);\n"
-   "   gl_FragColor = vec4(r, g, b, 1.0) * texture2D(texm, tex_m.xy).a * col;\n"
+   "   vec4 c;\n"
+   "   c = texture2D(tex, tex_c).bgra;\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuv_mask_frag_src =
+Evas_GL_Program_Source shader_tex_external_mask_nomul_frag_src =
 {
-   yuv_mask_frag_glsl,
+   tex_external_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuv_mask_vert.shd */
-static const char const yuv_mask_vert_glsl[] =
+static const char const tex_external_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec4 mask_coord;\n"
-   "attribute vec2 tex_coord, tex_coord2, tex_coord3;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_c2, tex_c3, tex_m;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
-   "   tex_c = tex_coord;\n"
-   "   tex_c2 = tex_coord2;\n"
-   "   tex_c3 = tex_coord3;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
    "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
    "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuv_mask_vert_src =
+Evas_GL_Program_Source shader_tex_external_mask_nomul_vert_src =
 {
-   yuv_mask_vert_glsl,
+   tex_external_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/nv12_mask_frag.shd */
-static const char const nv12_mask_frag_glsl[] =
+static const char const yuv_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2509,63 +3428,67 @@ static const char const nv12_mask_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texuv, texm;\n"
    "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_cuv, tex_m;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texu;\n"
+   "uniform sampler2D texv;\n"
+   "varying vec2 tex_c2;\n"
+   "varying vec2 tex_c3;\n"
    "void main()\n"
    "{\n"
-   "  float y,u,v,vmu,r,g,b;\n"
-   "  y=texture2D(tex,tex_c).g;\n"
-   "  u=texture2D(texuv,tex_cuv).g;\n"
-   "  v=texture2D(texuv,tex_cuv).a;\n"
-   "  u=u-0.5;\n"
-   "  v=v-0.5;\n"
-   "  vmu=v*0.813+u*0.391;\n"
-   "  u=u*2.018;\n"
-   "  v=v*1.596;\n"
-   "  y=(y-0.062)*1.164;\n"
-   "  r=y+v;\n"
-   "  g=y-vmu;\n"
-   "  b=y+u;\n"
-   "  gl_FragColor = vec4(r,g,b,1.0) * texture2D(tex, tex_m.xy).a * col;\n"
+   "   vec4 c;\n"
+   "   float r, g, b, y, u, v;\n"
+   "   y = texture2D(tex, tex_c).r;\n"
+   "   u = texture2D(texu, tex_c2).r;\n"
+   "   v = texture2D(texv, tex_c3).r;\n"
+   "   y = (y - 0.0625) * 1.164;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   r = y + (1.402 * v);\n"
+   "   g = y - (0.34414 * u) - (0.71414 * v);\n"
+   "   b = y + (1.772 * u);\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_nv12_mask_frag_src =
+Evas_GL_Program_Source shader_yuv_frag_src =
 {
-   nv12_mask_frag_glsl,
+   yuv_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/nv12_mask_vert.shd */
-static const char const nv12_mask_vert_glsl[] =
+static const char const yuv_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec4 mask_coord;\n"
-   "attribute vec2 tex_coord, tex_coord2;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_cuv, tex_m;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
+   "attribute vec2 tex_coord3;\n"
+   "varying vec2 tex_c3;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_cuv = tex_coord2 * 0.5;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
-   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
-   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "   tex_c2 = tex_coord2;\n"
+   "   tex_c3 = tex_coord3;\n"
    "}\n";
-Evas_GL_Program_Source shader_nv12_mask_vert_src =
+Evas_GL_Program_Source shader_yuv_vert_src =
 {
-   nv12_mask_vert_glsl,
+   yuv_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuy2_mask_frag.shd */
-static const char const yuy2_mask_frag_glsl[] =
+static const char const yuv_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2573,62 +3496,62 @@ static const char const yuy2_mask_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texuv, texm;\n"
-   "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_cuv, tex_m;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texu;\n"
+   "uniform sampler2D texv;\n"
+   "varying vec2 tex_c2;\n"
+   "varying vec2 tex_c3;\n"
    "void main()\n"
    "{\n"
-   "  float y,u,v,vmu,r,g,b;\n"
-   "  y=texture2D(tex,tex_c).r;\n"
-   "  u=texture2D(texuv,tex_cuv).g;\n"
-   "  v=texture2D(texuv,tex_cuv).a;\n"
-   "  u=u-0.5;\n"
-   "  v=v-0.5;\n"
-   "  vmu=v*0.813+u*0.391;\n"
-   "  u=u*2.018;\n"
-   "  v=v*1.596;\n"
-   "  r=y+v;\n"
-   "  g=y-vmu;\n"
-   "  b=y+u;\n"
-   "  gl_FragColor = vec4(r,g,b,1.0) * texture2D(texm, tex_m.xy).a * col;\n"
+   "   vec4 c;\n"
+   "   float r, g, b, y, u, v;\n"
+   "   y = texture2D(tex, tex_c).r;\n"
+   "   u = texture2D(texu, tex_c2).r;\n"
+   "   v = texture2D(texv, tex_c3).r;\n"
+   "   y = (y - 0.0625) * 1.164;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   r = y + (1.402 * v);\n"
+   "   g = y - (0.34414 * u) - (0.71414 * v);\n"
+   "   b = y + (1.772 * u);\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuy2_mask_frag_src =
+Evas_GL_Program_Source shader_yuv_nomul_frag_src =
 {
-   yuy2_mask_frag_glsl,
+   yuv_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/yuy2_mask_vert.shd */
-static const char const yuy2_mask_vert_glsl[] =
+static const char const yuv_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec4 mask_coord;\n"
-   "attribute vec2 tex_coord, tex_coord2;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
-   "varying vec2 tex_c, tex_cuv, tex_m;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
+   "attribute vec2 tex_coord3;\n"
+   "varying vec2 tex_c3;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
    "   tex_c = tex_coord;\n"
-   "   tex_cuv = vec2(tex_coord2.x * 0.5, tex_coord2.y);\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
-   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
-   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "   tex_c2 = tex_coord2;\n"
+   "   tex_c3 = tex_coord3;\n"
    "}\n";
-Evas_GL_Program_Source shader_yuy2_mask_vert_src =
+Evas_GL_Program_Source shader_yuv_nomul_vert_src =
 {
-   yuy2_mask_vert_glsl,
+   yuv_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rgb_a_pair_mask_frag.shd */
-static const char const rgb_a_pair_mask_frag_glsl[] =
+static const char const yuv_mask_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2636,58 +3559,74 @@ static const char const rgb_a_pair_mask_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
+   "varying vec4 col;\n"
    "uniform sampler2D tex;\n"
-   "uniform sampler2D texa;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texu;\n"
+   "uniform sampler2D texv;\n"
+   "varying vec2 tex_c2;\n"
+   "varying vec2 tex_c3;\n"
    "uniform sampler2D texm;\n"
-   "varying vec4 col;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 coord_a;\n"
    "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor.rgb = texture2D(tex, coord_c.xy).rgb * col.rgb * texture2D(texa, coord_a).g * texture2D(texm, tex_m.xy).a;\n"
-   "   gl_FragColor.a = col.a * texture2D(texa, coord_a).g * texture2D(texm, tex_m.xy).a;\n"
+   "   vec4 c;\n"
+   "   float r, g, b, y, u, v;\n"
+   "   y = texture2D(tex, tex_c).r;\n"
+   "   u = texture2D(texu, tex_c2).r;\n"
+   "   v = texture2D(texv, tex_c3).r;\n"
+   "   y = (y - 0.0625) * 1.164;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   r = y + (1.402 * v);\n"
+   "   g = y - (0.34414 * u) - (0.71414 * v);\n"
+   "   b = y + (1.772 * u);\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_rgb_a_pair_mask_frag_src =
+Evas_GL_Program_Source shader_yuv_mask_frag_src =
 {
-   rgb_a_pair_mask_frag_glsl,
+   yuv_mask_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rgb_a_pair_mask_vert.shd */
-static const char const rgb_a_pair_mask_vert_glsl[] =
+static const char const yuv_mask_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
+   "uniform mat4 mvp;\n"
    "attribute vec4 color;\n"
+   "varying vec4 col;\n"
    "attribute vec2 tex_coord;\n"
-   "attribute vec2 tex_coorda;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
+   "attribute vec2 tex_coord3;\n"
+   "varying vec2 tex_c3;\n"
    "attribute vec4 mask_coord;\n"
-   "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
-   "varying vec2 coord_c;\n"
-   "varying vec2 coord_a;\n"
    "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
-   "   coord_c = tex_coord;\n"
-   "   coord_a = tex_coorda;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_c2 = tex_coord2;\n"
+   "   tex_c3 = tex_coord3;\n"
    "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
    "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_rgb_a_pair_mask_vert_src =
+Evas_GL_Program_Source shader_yuv_mask_vert_src =
 {
-   rgb_a_pair_mask_vert_glsl,
+   yuv_mask_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rect_mask_frag.shd */
-static const char const rect_mask_frag_glsl[] =
+static const char const yuv_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2695,47 +3634,69 @@ static const char const rect_mask_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texu;\n"
+   "uniform sampler2D texv;\n"
+   "varying vec2 tex_c2;\n"
+   "varying vec2 tex_c3;\n"
    "uniform sampler2D texm;\n"
-   "varying vec4 col;\n"
    "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(texm, tex_m.xy).a * col;\n"
+   "   vec4 c;\n"
+   "   float r, g, b, y, u, v;\n"
+   "   y = texture2D(tex, tex_c).r;\n"
+   "   u = texture2D(texu, tex_c2).r;\n"
+   "   v = texture2D(texv, tex_c3).r;\n"
+   "   y = (y - 0.0625) * 1.164;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   r = y + (1.402 * v);\n"
+   "   g = y - (0.34414 * u) - (0.71414 * v);\n"
+   "   b = y + (1.772 * u);\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_rect_mask_frag_src =
+Evas_GL_Program_Source shader_yuv_mask_nomul_frag_src =
 {
-   rect_mask_frag_glsl,
+   yuv_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/rect_mask_vert.shd */
-static const char const rect_mask_vert_glsl[] =
+static const char const yuv_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec4 mask_coord;\n"
    "uniform mat4 mvp;\n"
-   "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
+   "attribute vec2 tex_coord3;\n"
+   "varying vec2 tex_c3;\n"
+   "attribute vec4 mask_coord;\n"
    "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   col = color;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_c2 = tex_coord2;\n"
+   "   tex_c3 = tex_coord3;\n"
    "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
    "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_rect_mask_vert_src =
+Evas_GL_Program_Source shader_yuv_mask_nomul_vert_src =
 {
-   rect_mask_vert_glsl,
+   yuv_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/map_mask_frag.shd */
-static const char const map_mask_frag_glsl[] =
+static const char const yuy2_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2743,48 +3704,64 @@ static const char const map_mask_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texm;\n"
-   "varying vec2 tex_c, tex_m;\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texuv;\n"
+   "varying vec2 tex_c2;\n"
    "void main()\n"
    "{\n"
-   "   // FIXME: Fix Mach band effect using proper 4-point color interpolation\n"
-   "   gl_FragColor = texture2D(tex, tex_c).bgra * texture2D(texm, tex_m).a *  col;\n"
+   "   vec4 c;\n"
+   "   float y, u, v, vmu, r, g, b;\n"
+   "   y = texture2D(tex, tex_c).g;\n"
+   "   u = texture2D(texuv, tex_c2).g;\n"
+   "   v = texture2D(texuv, tex_c2).a;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   vmu = v * 0.813 + u * 0.391;\n"
+   "   u = u * 2.018;\n"
+   "   v = v * 1.596;\n"
+   "   r = y + v;\n"
+   "   g = y - vmu;\n"
+   "   b = y + u;\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_map_mask_frag_src =
+Evas_GL_Program_Source shader_yuy2_frag_src =
 {
-   map_mask_frag_glsl,
+   yuy2_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/map_mask_vert.shd */
-static const char const map_mask_vert_glsl[] =
+static const char const yuy2_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
-   "attribute vec4 vertex, color, mask_coord;\n"
-   "attribute vec2 tex_coord;\n"
+   "attribute vec4 vertex;\n"
    "uniform mat4 mvp;\n"
-   "varying vec2 tex_c, tex_m;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
    "   col = color;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
-   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
-   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_c2 = vec2(tex_coord2.x * 0.5, tex_coord2.y);\n"
    "}\n";
-Evas_GL_Program_Source shader_map_mask_vert_src =
+Evas_GL_Program_Source shader_yuy2_vert_src =
 {
-   map_mask_vert_glsl,
+   yuy2_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/map_mask_nomul_frag.shd */
-static const char const map_mask_nomul_frag_glsl[] =
+static const char const yuy2_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2792,44 +3769,59 @@ static const char const map_mask_nomul_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texm;\n"
-   "varying vec2 tex_c, tex_m;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texuv;\n"
+   "varying vec2 tex_c2;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c).bgra * texture2D(texm, tex_m).a;\n"
+   "   vec4 c;\n"
+   "   float y, u, v, vmu, r, g, b;\n"
+   "   y = texture2D(tex, tex_c).g;\n"
+   "   u = texture2D(texuv, tex_c2).g;\n"
+   "   v = texture2D(texuv, tex_c2).a;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   vmu = v * 0.813 + u * 0.391;\n"
+   "   u = u * 2.018;\n"
+   "   v = v * 1.596;\n"
+   "   r = y + v;\n"
+   "   g = y - vmu;\n"
+   "   b = y + u;\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_map_mask_nomul_frag_src =
+Evas_GL_Program_Source shader_yuy2_nomul_frag_src =
 {
-   map_mask_nomul_frag_glsl,
+   yuy2_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/map_mask_nomul_vert.shd */
-static const char const map_mask_nomul_vert_glsl[] =
+static const char const yuy2_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
-   "attribute vec4 vertex, mask_coord;\n"
-   "attribute vec2 tex_coord;\n"
+   "attribute vec4 vertex;\n"
    "uniform mat4 mvp;\n"
-   "varying vec2 tex_c, tex_m;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   tex_c = tex_coord;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
-   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
-   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
+   "   tex_c2 = vec2(tex_coord2.x * 0.5, tex_coord2.y);\n"
    "}\n";
-Evas_GL_Program_Source shader_map_mask_nomul_vert_src =
+Evas_GL_Program_Source shader_yuy2_nomul_vert_src =
 {
-   map_mask_nomul_vert_glsl,
+   yuy2_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/map_mask_bgra_frag.shd */
-static const char const map_mask_bgra_frag_glsl[] =
+static const char const yuy2_mask_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2837,48 +3829,71 @@ static const char const map_mask_bgra_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texm;\n"
-   "varying vec2 tex_c, tex_m;\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texuv;\n"
+   "varying vec2 tex_c2;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   // FIXME: Fix Mach band effect using proper 4-point color interpolation\n"
-   "   gl_FragColor = texture2D(tex, tex_c) * texture2D(texm, tex_m).a *  col;\n"
+   "   vec4 c;\n"
+   "   float y, u, v, vmu, r, g, b;\n"
+   "   y = texture2D(tex, tex_c).g;\n"
+   "   u = texture2D(texuv, tex_c2).g;\n"
+   "   v = texture2D(texuv, tex_c2).a;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   vmu = v * 0.813 + u * 0.391;\n"
+   "   u = u * 2.018;\n"
+   "   v = v * 1.596;\n"
+   "   r = y + v;\n"
+   "   g = y - vmu;\n"
+   "   b = y + u;\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_map_mask_bgra_frag_src =
+Evas_GL_Program_Source shader_yuy2_mask_frag_src =
 {
-   map_mask_bgra_frag_glsl,
+   yuy2_mask_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/map_mask_bgra_vert.shd */
-static const char const map_mask_bgra_vert_glsl[] =
+static const char const yuy2_mask_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
-   "attribute vec4 vertex, color, mask_coord;\n"
-   "attribute vec2 tex_coord;\n"
+   "attribute vec4 vertex;\n"
    "uniform mat4 mvp;\n"
-   "varying vec2 tex_c, tex_m;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
-   "   tex_c = tex_coord;\n"
    "   col = color;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
+   "   tex_c = tex_coord;\n"
+   "   tex_c2 = vec2(tex_coord2.x * 0.5, tex_coord2.y);\n"
    "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
    "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_map_mask_bgra_vert_src =
+Evas_GL_Program_Source shader_yuy2_mask_vert_src =
 {
-   map_mask_bgra_vert_glsl,
+   yuy2_mask_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_frag.shd */
-static const char const map_mask_bgra_nomul_frag_glsl[] =
+static const char const yuy2_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
@@ -2886,293 +3901,427 @@ static const char const map_mask_bgra_nomul_frag_glsl[] =
    "precision mediump float;\n"
    "#endif\n"
    "#endif\n"
-   "uniform sampler2D tex, texm;\n"
-   "varying vec2 tex_c, tex_m;\n"
+   "uniform sampler2D tex;\n"
+   "varying vec2 tex_c;\n"
+   "uniform sampler2D texuv;\n"
+   "varying vec2 tex_c2;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c) * texture2D(texm, tex_m).a;\n"
+   "   vec4 c;\n"
+   "   float y, u, v, vmu, r, g, b;\n"
+   "   y = texture2D(tex, tex_c).g;\n"
+   "   u = texture2D(texuv, tex_c2).g;\n"
+   "   v = texture2D(texuv, tex_c2).a;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   vmu = v * 0.813 + u * 0.391;\n"
+   "   u = u * 2.018;\n"
+   "   v = v * 1.596;\n"
+   "   r = y + v;\n"
+   "   g = y - vmu;\n"
+   "   b = y + u;\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_map_mask_bgra_nomul_frag_src =
+Evas_GL_Program_Source shader_yuy2_mask_nomul_frag_src =
 {
-   map_mask_bgra_nomul_frag_glsl,
+   yuy2_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_vert.shd */
-static const char const map_mask_bgra_nomul_vert_glsl[] =
+static const char const yuy2_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
-   "attribute vec4 vertex, mask_coord;\n"
-   "attribute vec2 tex_coord;\n"
+   "attribute vec4 vertex;\n"
    "uniform mat4 mvp;\n"
-   "varying vec2 tex_c, tex_m;\n"
+   "attribute vec2 tex_coord;\n"
+   "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   tex_c = tex_coord;\n"
-   "   // mask_coord.w contains the Y-invert flag\n"
-   "   // position on screen in [0..1] range of current pixel\n"
+   "   tex_c2 = vec2(tex_coord2.x * 0.5, tex_coord2.y);\n"
    "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
    "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_map_mask_bgra_nomul_vert_src =
+Evas_GL_Program_Source shader_yuy2_mask_nomul_vert_src =
 {
-   map_mask_bgra_nomul_vert_glsl,
+   yuy2_mask_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_external_frag.shd */
-static const char const tex_external_frag_glsl[] =
+static const char const nv12_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#extension GL_OES_EGL_image_external : require\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
    "#else\n"
    "precision mediump float;\n"
    "#endif\n"
-   "uniform samplerExternalOES tex;\n"
-   "#else\n"
-   "uniform sampler2D tex;\n"
    "#endif\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "uniform sampler2D texuv;\n"
+   "varying vec2 tex_c2;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy) * col;\n"
+   "   vec4 c;\n"
+   "   float y, u, v, vmu, r, g, b;\n"
+   "   y = texture2D(tex, tex_c).g;\n"
+   "   u = texture2D(texuv, tex_c2).g;\n"
+   "   v = texture2D(texuv, tex_c2).a;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   vmu = v * 0.813 + u * 0.391;\n"
+   "   u = u * 2.018;\n"
+   "   v = v * 1.596;\n"
+   "   y = (y - 0.062) * 1.164;\n"
+   "   r = y + v;\n"
+   "   g = y - vmu;\n"
+   "   b = y + u;\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_external_frag_src =
+Evas_GL_Program_Source shader_nv12_frag_src =
 {
-   tex_external_frag_glsl,
+   nv12_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_external_vert.shd */
-static const char const tex_external_vert_glsl[] =
+static const char const nv12_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
    "   tex_c = tex_coord;\n"
+   "   tex_c2 = tex_coord2 * 0.5;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_external_vert_src =
+Evas_GL_Program_Source shader_nv12_vert_src =
 {
-   tex_external_vert_glsl,
+   nv12_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_external_nomul_frag.shd */
-static const char const tex_external_nomul_frag_glsl[] =
+static const char const nv12_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#extension GL_OES_EGL_image_external : require\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
    "#else\n"
    "precision mediump float;\n"
    "#endif\n"
-   "uniform samplerExternalOES tex;\n"
-   "#else\n"
-   "uniform sampler2D tex;\n"
    "#endif\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "uniform sampler2D texuv;\n"
+   "varying vec2 tex_c2;\n"
    "void main()\n"
    "{\n"
-   "   gl_FragColor = texture2D(tex, tex_c.xy);\n"
+   "   vec4 c;\n"
+   "   float y, u, v, vmu, r, g, b;\n"
+   "   y = texture2D(tex, tex_c).g;\n"
+   "   u = texture2D(texuv, tex_c2).g;\n"
+   "   v = texture2D(texuv, tex_c2).a;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   vmu = v * 0.813 + u * 0.391;\n"
+   "   u = u * 2.018;\n"
+   "   v = v * 1.596;\n"
+   "   y = (y - 0.062) * 1.164;\n"
+   "   r = y + v;\n"
+   "   g = y - vmu;\n"
+   "   b = y + u;\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_external_nomul_frag_src =
+Evas_GL_Program_Source shader_nv12_nomul_frag_src =
 {
-   tex_external_nomul_frag_glsl,
+   nv12_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_external_nomul_vert.shd */
-static const char const tex_external_nomul_vert_glsl[] =
+static const char const nv12_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   tex_c = tex_coord;\n"
+   "   tex_c2 = tex_coord2 * 0.5;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_external_nomul_vert_src =
+Evas_GL_Program_Source shader_nv12_nomul_vert_src =
 {
-   tex_external_nomul_vert_glsl,
+   nv12_nomul_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_external_afill_frag.shd */
-static const char const tex_external_afill_frag_glsl[] =
+static const char const nv12_mask_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#extension GL_OES_EGL_image_external : require\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
    "#else\n"
    "precision mediump float;\n"
    "#endif\n"
-   "uniform samplerExternalOES tex;\n"
-   "#else\n"
-   "uniform sampler2D tex;\n"
    "#endif\n"
    "varying vec4 col;\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "uniform sampler2D texuv;\n"
+   "varying vec2 tex_c2;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   vec4 c = texture2D(tex, tex_c.xy);\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;\n"
+   "   vec4 c;\n"
+   "   float y, u, v, vmu, r, g, b;\n"
+   "   y = texture2D(tex, tex_c).g;\n"
+   "   u = texture2D(texuv, tex_c2).g;\n"
+   "   v = texture2D(texuv, tex_c2).a;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   vmu = v * 0.813 + u * 0.391;\n"
+   "   u = u * 2.018;\n"
+   "   v = v * 1.596;\n"
+   "   y = (y - 0.062) * 1.164;\n"
+   "   r = y + v;\n"
+   "   g = y - vmu;\n"
+   "   b = y + u;\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * col\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_external_afill_frag_src =
+Evas_GL_Program_Source shader_nv12_mask_frag_src =
 {
-   tex_external_afill_frag_glsl,
+   nv12_mask_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_external_afill_vert.shd */
-static const char const tex_external_afill_vert_glsl[] =
+static const char const nv12_mask_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec4 color;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec4 color;\n"
    "varying vec4 col;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   col = color;\n"
    "   tex_c = tex_coord;\n"
+   "   tex_c2 = tex_coord2 * 0.5;\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_external_afill_vert_src =
+Evas_GL_Program_Source shader_nv12_mask_vert_src =
 {
-   tex_external_afill_vert_glsl,
+   nv12_mask_vert_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_external_nomul_afill_frag.shd */
-static const char const tex_external_nomul_afill_frag_glsl[] =
+static const char const nv12_mask_nomul_frag_glsl[] =
    "#ifdef GL_ES\n"
-   "#extension GL_OES_EGL_image_external : require\n"
    "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
    "precision highp float;\n"
    "#else\n"
    "precision mediump float;\n"
    "#endif\n"
-   "uniform samplerExternalOES tex;\n"
-   "#else\n"
-   "uniform sampler2D tex;\n"
    "#endif\n"
+   "uniform sampler2D tex;\n"
    "varying vec2 tex_c;\n"
+   "uniform sampler2D texuv;\n"
+   "varying vec2 tex_c2;\n"
+   "uniform sampler2D texm;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
-   "   vec4 c = texture2D(tex, tex_c.xy);\n"
-   "   gl_FragColor = vec4(c.r, c.g, c.b, 1);\n"
+   "   vec4 c;\n"
+   "   float y, u, v, vmu, r, g, b;\n"
+   "   y = texture2D(tex, tex_c).g;\n"
+   "   u = texture2D(texuv, tex_c2).g;\n"
+   "   v = texture2D(texuv, tex_c2).a;\n"
+   "   u = u - 0.5;\n"
+   "   v = v - 0.5;\n"
+   "   vmu = v * 0.813 + u * 0.391;\n"
+   "   u = u * 2.018;\n"
+   "   v = v * 1.596;\n"
+   "   y = (y - 0.062) * 1.164;\n"
+   "   r = y + v;\n"
+   "   g = y - vmu;\n"
+   "   b = y + u;\n"
+   "   c = vec4(r, g, b, 1.0);\n"
+   "   gl_FragColor =\n"
+   "       c\n"
+   "     * texture2D(texm, tex_m).a\n"
+   "   ;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_external_nomul_afill_frag_src =
+Evas_GL_Program_Source shader_nv12_mask_nomul_frag_src =
 {
-   tex_external_nomul_afill_frag_glsl,
+   nv12_mask_nomul_frag_glsl,
    NULL, 0
 };
 
-/* Source: modules/evas/engines/gl_common/shader/tex_external_nomul_afill_vert.shd */
-static const char const tex_external_nomul_afill_vert_glsl[] =
+static const char const nv12_mask_nomul_vert_glsl[] =
    "#ifdef GL_ES\n"
    "precision highp float;\n"
    "#endif\n"
    "attribute vec4 vertex;\n"
-   "attribute vec2 tex_coord;\n"
    "uniform mat4 mvp;\n"
+   "attribute vec2 tex_coord;\n"
    "varying vec2 tex_c;\n"
+   "attribute vec2 tex_coord2;\n"
+   "varying vec2 tex_c2;\n"
+   "attribute vec4 mask_coord;\n"
+   "varying vec2 tex_m;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = mvp * vertex;\n"
    "   tex_c = tex_coord;\n"
+   "   tex_c2 = tex_coord2 * 0.5;\n"
+   "   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n"
+   "   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n"
    "}\n";
-Evas_GL_Program_Source shader_tex_external_nomul_afill_vert_src =
+Evas_GL_Program_Source shader_nv12_mask_nomul_vert_src =
 {
-   tex_external_nomul_afill_vert_glsl,
+   nv12_mask_nomul_vert_glsl,
    NULL, 0
 };
 
+
+typedef enum _Shader_Sampling Shader_Sampling;
+enum _Shader_Sampling {
+   SHADER_SAM11,
+   SHADER_SAM12,
+   SHADER_SAM21,
+   SHADER_SAM22
+};
+
 static const struct {
    Evas_GL_Shader id;
    Evas_GL_Program_Source *vert;
    Evas_GL_Program_Source *frag;
    const char *name;
+   unsigned char type; // RTYPE
+   Shader_Sampling sam;
+   Eina_Bool bgra : 1;
+   Eina_Bool mask : 1;
+   Eina_Bool nomul : 1;
+   Eina_Bool afill : 1;
 } _shaders_source[] = {
-   { SHADER_FONT, &(shader_font_vert_src), &(shader_font_frag_src), "font" },
-   { SHADER_FONT_MASK, &(shader_font_mask_vert_src), &(shader_font_mask_frag_src), "font_mask" },
-   { SHADER_IMG_12_BGRA_NOMUL, &(shader_img_12_bgra_nomul_vert_src), &(shader_img_12_bgra_nomul_frag_src), "img_12_bgra_nomul" },
-   { SHADER_IMG_12_BGRA, &(shader_img_12_bgra_vert_src), &(shader_img_12_bgra_frag_src), "img_12_bgra" },
-   { SHADER_IMG_12_NOMUL, &(shader_img_12_nomul_vert_src), &(shader_img_12_nomul_frag_src), "img_12_nomul" },
-   { SHADER_IMG_12, &(shader_img_12_vert_src), &(shader_img_12_frag_src), "img_12" },
-   { SHADER_IMG_21_BGRA_NOMUL, &(shader_img_21_bgra_nomul_vert_src), &(shader_img_21_bgra_nomul_frag_src), "img_21_bgra_nomul" },
-   { SHADER_IMG_21_BGRA, &(shader_img_21_bgra_vert_src), &(shader_img_21_bgra_frag_src), "img_21_bgra" },
-   { SHADER_IMG_21_NOMUL, &(shader_img_21_nomul_vert_src), &(shader_img_21_nomul_frag_src), "img_21_nomul" },
-   { SHADER_IMG_21, &(shader_img_21_vert_src), &(shader_img_21_frag_src), "img_21" },
-   { SHADER_IMG_22_BGRA_NOMUL, &(shader_img_22_bgra_nomul_vert_src), &(shader_img_22_bgra_nomul_frag_src), "img_22_bgra_nomul" },
-   { SHADER_IMG_22_BGRA, &(shader_img_22_bgra_vert_src), &(shader_img_22_bgra_frag_src), "img_22_bgra" },
-   { SHADER_IMG_22_NOMUL, &(shader_img_22_nomul_vert_src), &(shader_img_22_nomul_frag_src), "img_22_nomul" },
-   { SHADER_IMG_22, &(shader_img_22_vert_src), &(shader_img_22_frag_src), "img_22" },
-   { SHADER_IMG_BGRA_NOMUL, &(shader_img_bgra_nomul_vert_src), &(shader_img_bgra_nomul_frag_src), "img_bgra_nomul" },
-   { SHADER_IMG_BGRA, &(shader_img_bgra_vert_src), &(shader_img_bgra_frag_src), "img_bgra" },
-   { SHADER_IMG_NOMUL, &(shader_img_nomul_vert_src), &(shader_img_nomul_frag_src), "img_nomul" },
-   { SHADER_IMG, &(shader_img_vert_src), &(shader_img_frag_src), "img" },
-   { SHADER_NV12_NOMUL, &(shader_nv12_nomul_vert_src), &(shader_nv12_nomul_frag_src), "nv12_nomul" },
-   { SHADER_NV12, &(shader_nv12_vert_src), &(shader_nv12_frag_src), "nv12" },
-   { SHADER_RECT, &(shader_rect_vert_src), &(shader_rect_frag_src), "rect" },
-   { SHADER_RGB_A_PAIR_NOMUL, &(shader_rgb_a_pair_nomul_vert_src), &(shader_rgb_a_pair_nomul_frag_src), "rgb_a_pair_nomul" },
-   { SHADER_RGB_A_PAIR, &(shader_rgb_a_pair_vert_src), &(shader_rgb_a_pair_frag_src), "rgb_a_pair" },
-   { SHADER_TEX_12, &(shader_tex_12_vert_src), &(shader_tex_12_frag_src), "tex_12" },
-   { SHADER_TEX_12_NOMUL, &(shader_tex_12_nomul_vert_src), &(shader_tex_12_nomul_frag_src), "tex_12_nomul" },
-   { SHADER_TEX_21, &(shader_tex_21_vert_src), &(shader_tex_21_frag_src), "tex_21" },
-   { SHADER_TEX_21_NOMUL, &(shader_tex_21_nomul_vert_src), &(shader_tex_21_nomul_frag_src), "tex_21_nomul" },
-   { SHADER_TEX_22, &(shader_tex_22_vert_src), &(shader_tex_22_frag_src), "tex_22" },
-   { SHADER_TEX_22_NOMUL, &(shader_tex_22_nomul_vert_src), &(shader_tex_22_nomul_frag_src), "tex_22_nomul" },
-   { SHADER_TEX, &(shader_tex_vert_src), &(shader_tex_frag_src), "tex" },
-   { SHADER_TEX_NOMUL, &(shader_tex_nomul_vert_src), &(shader_tex_nomul_frag_src), "tex_nomul" },
-   { SHADER_TEX_AFILL, &(shader_tex_afill_vert_src), &(shader_tex_afill_frag_src), "tex_afill" },
-   { SHADER_TEX_22_AFILL, &(shader_tex_22_afill_vert_src), &(shader_tex_22_afill_frag_src), "tex_22_afill" },
-   { SHADER_TEX_21_AFILL, &(shader_tex_21_afill_vert_src), &(shader_tex_21_afill_frag_src), "tex_21_afill" },
-   { SHADER_TEX_12_AFILL, &(shader_tex_12_afill_vert_src), &(shader_tex_12_afill_frag_src), "tex_12_afill" },
-   { SHADER_TEX_22_NOMUL_AFILL, &(shader_tex_22_nomul_afill_vert_src), &(shader_tex_22_nomul_afill_frag_src), "tex_22_nomul_afill" },
-   { SHADER_TEX_21_NOMUL_AFILL, &(shader_tex_21_nomul_afill_vert_src), &(shader_tex_21_nomul_afill_frag_src), "tex_21_nomul_afill" },
-   { SHADER_TEX_12_NOMUL_AFILL, &(shader_tex_12_nomul_afill_vert_src), &(shader_tex_12_nomul_afill_frag_src), "tex_12_nomul_afill" },
-   { SHADER_TEX_NOMUL_AFILL, &(shader_tex_nomul_afill_vert_src), &(shader_tex_nomul_afill_frag_src), "tex_nomul_afill" },
-   { SHADER_YUV_NOMUL, &(shader_yuv_nomul_vert_src), &(shader_yuv_nomul_frag_src), "yuv_nomul" },
-   { SHADER_YUV, &(shader_yuv_vert_src), &(shader_yuv_frag_src), "yuv" },
-   { SHADER_YUY2_NOMUL, &(shader_yuy2_nomul_vert_src), &(shader_yuy2_nomul_frag_src), "yuy2_nomul" },
-   { SHADER_YUY2, &(shader_yuy2_vert_src), &(shader_yuy2_frag_src), "yuy2" },
-   { SHADER_IMG_MASK, &(shader_img_mask_vert_src), &(shader_img_mask_frag_src), "img_mask" },
-   { SHADER_IMG_MASK_NOMUL, &(shader_img_mask_nomul_vert_src), &(shader_img_mask_nomul_frag_src), "img_mask_nomul" },
-   { SHADER_IMG_MASK_BGRA, &(shader_img_mask_bgra_vert_src), &(shader_img_mask_bgra_frag_src), "img_mask_bgra" },
-   { SHADER_IMG_MASK_BGRA_NOMUL, &(shader_img_mask_bgra_nomul_vert_src), &(shader_img_mask_bgra_nomul_frag_src), "img_mask_bgra_nomul" },
-   { SHADER_YUV_MASK, &(shader_yuv_mask_vert_src), &(shader_yuv_mask_frag_src), "yuv_mask" },
-   { SHADER_NV12_MASK, &(shader_nv12_mask_vert_src), &(shader_nv12_mask_frag_src), "nv12_mask" },
-   { SHADER_YUY2_MASK, &(shader_yuy2_mask_vert_src), &(shader_yuy2_mask_frag_src), "yuy2_mask" },
-   { SHADER_RGB_A_PAIR_MASK, &(shader_rgb_a_pair_mask_vert_src), &(shader_rgb_a_pair_mask_frag_src), "rgb_a_pair_mask" },
-   { SHADER_RECT_MASK, &(shader_rect_mask_vert_src), &(shader_rect_mask_frag_src), "rect_mask" },
-   { SHADER_MAP_MASK, &(shader_map_mask_vert_src), &(shader_map_mask_frag_src), "map_mask" },
-   { SHADER_MAP_MASK_NOMUL, &(shader_map_mask_nomul_vert_src), &(shader_map_mask_nomul_frag_src), "map_mask_nomul" },
-   { SHADER_MAP_MASK_BGRA, &(shader_map_mask_bgra_vert_src), &(shader_map_mask_bgra_frag_src), "map_mask_bgra" },
-   { SHADER_MAP_MASK_BGRA_NOMUL, &(shader_map_mask_bgra_nomul_vert_src), &(shader_map_mask_bgra_nomul_frag_src), "map_mask_bgra_nomul" },
-   { SHADER_TEX_EXTERNAL, &(shader_tex_external_vert_src), &(shader_tex_external_frag_src), "tex_external" },
-   { SHADER_TEX_EXTERNAL_NOMUL, &(shader_tex_external_nomul_vert_src), &(shader_tex_external_nomul_frag_src), "tex_external_nomul" },
-   { SHADER_TEX_EXTERNAL_AFILL, &(shader_tex_external_afill_vert_src), &(shader_tex_external_afill_frag_src), "tex_external_afill" },
-   { SHADER_TEX_EXTERNAL_NOMUL_AFILL, &(shader_tex_external_nomul_afill_vert_src), &(shader_tex_external_nomul_afill_frag_src), "tex_external_nomul_afill" },
+   { SHADER_RECT, &(shader_rect_vert_src), &(shader_rect_frag_src), "rect", RTYPE_RECT, SHADER_SAM11, 0, 0, 0, 0 },
+   { SHADER_RECT_MASK, &(shader_rect_mask_vert_src), &(shader_rect_mask_frag_src), "rect_mask", RTYPE_RECT, SHADER_SAM11, 0, 1, 0, 0 },
+   { SHADER_FONT, &(shader_font_vert_src), &(shader_font_frag_src), "font", RTYPE_FONT, SHADER_SAM11, 0, 0, 0, 0 },
+   { SHADER_FONT_MASK, &(shader_font_mask_vert_src), &(shader_font_mask_frag_src), "font_mask", RTYPE_FONT, SHADER_SAM11, 0, 1, 0, 0 },
+   { SHADER_IMG, &(shader_img_vert_src), &(shader_img_frag_src), "img", RTYPE_IMAGE, SHADER_SAM11, 0, 0, 0, 0 },
+   { SHADER_IMG_BGRA, &(shader_img_bgra_vert_src), &(shader_img_bgra_frag_src), "img_bgra", RTYPE_IMAGE, SHADER_SAM11, 1, 0, 0, 0 },
+   { SHADER_IMG_12, &(shader_img_12_vert_src), &(shader_img_12_frag_src), "img_12", RTYPE_IMAGE, SHADER_SAM12, 0, 0, 0, 0 },
+   { SHADER_IMG_21, &(shader_img_21_vert_src), &(shader_img_21_frag_src), "img_21", RTYPE_IMAGE, SHADER_SAM21, 0, 0, 0, 0 },
+   { SHADER_IMG_22, &(shader_img_22_vert_src), &(shader_img_22_frag_src), "img_22", RTYPE_IMAGE, SHADER_SAM22, 0, 0, 0, 0 },
+   { SHADER_IMG_12_BGRA, &(shader_img_12_bgra_vert_src), &(shader_img_12_bgra_frag_src), "img_12_bgra", RTYPE_IMAGE, SHADER_SAM12, 1, 0, 0, 0 },
+   { SHADER_IMG_21_BGRA, &(shader_img_21_bgra_vert_src), &(shader_img_21_bgra_frag_src), "img_21_bgra", RTYPE_IMAGE, SHADER_SAM21, 1, 0, 0, 0 },
+   { SHADER_IMG_22_BGRA, &(shader_img_22_bgra_vert_src), &(shader_img_22_bgra_frag_src), "img_22_bgra", RTYPE_IMAGE, SHADER_SAM22, 1, 0, 0, 0 },
+   { SHADER_IMG_MASK, &(shader_img_mask_vert_src), &(shader_img_mask_frag_src), "img_mask", RTYPE_IMAGE, SHADER_SAM11, 0, 1, 0, 0 },
+   { SHADER_IMG_BGRA_MASK, &(shader_img_bgra_mask_vert_src), &(shader_img_bgra_mask_frag_src), "img_bgra_mask", RTYPE_IMAGE, SHADER_SAM11, 1, 1, 0, 0 },
+   { SHADER_IMG_12_MASK, &(shader_img_12_mask_vert_src), &(shader_img_12_mask_frag_src), "img_12_mask", RTYPE_IMAGE, SHADER_SAM12, 0, 1, 0, 0 },
+   { SHADER_IMG_21_MASK, &(shader_img_21_mask_vert_src), &(shader_img_21_mask_frag_src), "img_21_mask", RTYPE_IMAGE, SHADER_SAM21, 0, 1, 0, 0 },
+   { SHADER_IMG_22_MASK, &(shader_img_22_mask_vert_src), &(shader_img_22_mask_frag_src), "img_22_mask", RTYPE_IMAGE, SHADER_SAM22, 0, 1, 0, 0 },
+   { SHADER_IMG_12_BGRA_MASK, &(shader_img_12_bgra_mask_vert_src), &(shader_img_12_bgra_mask_frag_src), "img_12_bgra_mask", RTYPE_IMAGE, SHADER_SAM12, 1, 1, 0, 0 },
+   { SHADER_IMG_21_BGRA_MASK, &(shader_img_21_bgra_mask_vert_src), &(shader_img_21_bgra_mask_frag_src), "img_21_bgra_mask", RTYPE_IMAGE, SHADER_SAM21, 1, 1, 0, 0 },
+   { SHADER_IMG_22_BGRA_MASK, &(shader_img_22_bgra_mask_vert_src), &(shader_img_22_bgra_mask_frag_src), "img_22_bgra_mask", RTYPE_IMAGE, SHADER_SAM22, 1, 1, 0, 0 },
+   { SHADER_IMG_NOMUL, &(shader_img_nomul_vert_src), &(shader_img_nomul_frag_src), "img_nomul", RTYPE_IMAGE, SHADER_SAM11, 0, 0, 1, 0 },
+   { SHADER_IMG_BGRA_NOMUL, &(shader_img_bgra_nomul_vert_src), &(shader_img_bgra_nomul_frag_src), "img_bgra_nomul", RTYPE_IMAGE, SHADER_SAM11, 1, 0, 1, 0 },
+   { SHADER_IMG_12_NOMUL, &(shader_img_12_nomul_vert_src), &(shader_img_12_nomul_frag_src), "img_12_nomul", RTYPE_IMAGE, SHADER_SAM12, 0, 0, 1, 0 },
+   { SHADER_IMG_21_NOMUL, &(shader_img_21_nomul_vert_src), &(shader_img_21_nomul_frag_src), "img_21_nomul", RTYPE_IMAGE, SHADER_SAM21, 0, 0, 1, 0 },
+   { SHADER_IMG_22_NOMUL, &(shader_img_22_nomul_vert_src), &(shader_img_22_nomul_frag_src), "img_22_nomul", RTYPE_IMAGE, SHADER_SAM22, 0, 0, 1, 0 },
+   { SHADER_IMG_12_BGRA_NOMUL, &(shader_img_12_bgra_nomul_vert_src), &(shader_img_12_bgra_nomul_frag_src), "img_12_bgra_nomul", RTYPE_IMAGE, SHADER_SAM12, 1, 0, 1, 0 },
+   { SHADER_IMG_21_BGRA_NOMUL, &(shader_img_21_bgra_nomul_vert_src), &(shader_img_21_bgra_nomul_frag_src), "img_21_bgra_nomul", RTYPE_IMAGE, SHADER_SAM21, 1, 0, 1, 0 },
+   { SHADER_IMG_22_BGRA_NOMUL, &(shader_img_22_bgra_nomul_vert_src), &(shader_img_22_bgra_nomul_frag_src), "img_22_bgra_nomul", RTYPE_IMAGE, SHADER_SAM22, 1, 0, 1, 0 },
+   { SHADER_IMG_MASK_NOMUL, &(shader_img_mask_nomul_vert_src), &(shader_img_mask_nomul_frag_src), "img_mask_nomul", RTYPE_IMAGE, SHADER_SAM11, 0, 1, 1, 0 },
+   { SHADER_IMG_BGRA_MASK_NOMUL, &(shader_img_bgra_mask_nomul_vert_src), &(shader_img_bgra_mask_nomul_frag_src), "img_bgra_mask_nomul", RTYPE_IMAGE, SHADER_SAM11, 1, 1, 1, 0 },
+   { SHADER_IMG_12_MASK_NOMUL, &(shader_img_12_mask_nomul_vert_src), &(shader_img_12_mask_nomul_frag_src), "img_12_mask_nomul", RTYPE_IMAGE, SHADER_SAM12, 0, 1, 1, 0 },
+   { SHADER_IMG_21_MASK_NOMUL, &(shader_img_21_mask_nomul_vert_src), &(shader_img_21_mask_nomul_frag_src), "img_21_mask_nomul", RTYPE_IMAGE, SHADER_SAM21, 0, 1, 1, 0 },
+   { SHADER_IMG_22_MASK_NOMUL, &(shader_img_22_mask_nomul_vert_src), &(shader_img_22_mask_nomul_frag_src), "img_22_mask_nomul", RTYPE_IMAGE, SHADER_SAM22, 0, 1, 1, 0 },
+   { SHADER_IMG_12_BGRA_MASK_NOMUL, &(shader_img_12_bgra_mask_nomul_vert_src), &(shader_img_12_bgra_mask_nomul_frag_src), "img_12_bgra_mask_nomul", RTYPE_IMAGE, SHADER_SAM12, 1, 1, 1, 0 },
+   { SHADER_IMG_21_BGRA_MASK_NOMUL, &(shader_img_21_bgra_mask_nomul_vert_src), &(shader_img_21_bgra_mask_nomul_frag_src), "img_21_bgra_mask_nomul", RTYPE_IMAGE, SHADER_SAM21, 1, 1, 1, 0 },
+   { SHADER_IMG_22_BGRA_MASK_NOMUL, &(shader_img_22_bgra_mask_nomul_vert_src), &(shader_img_22_bgra_mask_nomul_frag_src), "img_22_bgra_mask_nomul", RTYPE_IMAGE, SHADER_SAM22, 1, 1, 1, 0 },
+   { SHADER_IMG_AFILL, &(shader_img_afill_vert_src), &(shader_img_afill_frag_src), "img_afill", RTYPE_IMAGE, SHADER_SAM11, 0, 0, 0, 1 },
+   { SHADER_IMG_BGRA_AFILL, &(shader_img_bgra_afill_vert_src), &(shader_img_bgra_afill_frag_src), "img_bgra_afill", RTYPE_IMAGE, SHADER_SAM11, 1, 0, 0, 1 },
+   { SHADER_IMG_NOMUL_AFILL, &(shader_img_nomul_afill_vert_src), &(shader_img_nomul_afill_frag_src), "img_nomul_afill", RTYPE_IMAGE, SHADER_SAM11, 0, 0, 1, 1 },
+   { SHADER_IMG_BGRA_NOMUL_AFILL, &(shader_img_bgra_nomul_afill_vert_src), &(shader_img_bgra_nomul_afill_frag_src), "img_bgra_nomul_afill", RTYPE_IMAGE, SHADER_SAM11, 1, 0, 1, 1 },
+   { SHADER_IMG_12_AFILL, &(shader_img_12_afill_vert_src), &(shader_img_12_afill_frag_src), "img_12_afill", RTYPE_IMAGE, SHADER_SAM12, 0, 0, 0, 1 },
+   { SHADER_IMG_21_AFILL, &(shader_img_21_afill_vert_src), &(shader_img_21_afill_frag_src), "img_21_afill", RTYPE_IMAGE, SHADER_SAM21, 0, 0, 0, 1 },
+   { SHADER_IMG_22_AFILL, &(shader_img_22_afill_vert_src), &(shader_img_22_afill_frag_src), "img_22_afill", RTYPE_IMAGE, SHADER_SAM22, 0, 0, 0, 1 },
+   { SHADER_IMG_12_BGRA_AFILL, &(shader_img_12_bgra_afill_vert_src), &(shader_img_12_bgra_afill_frag_src), "img_12_bgra_afill", RTYPE_IMAGE, SHADER_SAM12, 1, 0, 0, 1 },
+   { SHADER_IMG_21_BGRA_AFILL, &(shader_img_21_bgra_afill_vert_src), &(shader_img_21_bgra_afill_frag_src), "img_21_bgra_afill", RTYPE_IMAGE, SHADER_SAM21, 1, 0, 0, 1 },
+   { SHADER_IMG_22_BGRA_AFILL, &(shader_img_22_bgra_afill_vert_src), &(shader_img_22_bgra_afill_frag_src), "img_22_bgra_afill", RTYPE_IMAGE, SHADER_SAM22, 1, 0, 0, 1 },
+   { SHADER_IMG_12_NOMUL_AFILL, &(shader_img_12_nomul_afill_vert_src), &(shader_img_12_nomul_afill_frag_src), "img_12_nomul_afill", RTYPE_IMAGE, SHADER_SAM12, 0, 0, 1, 1 },
+   { SHADER_IMG_21_NOMUL_AFILL, &(shader_img_21_nomul_afill_vert_src), &(shader_img_21_nomul_afill_frag_src), "img_21_nomul_afill", RTYPE_IMAGE, SHADER_SAM21, 0, 0, 1, 1 },
+   { SHADER_IMG_22_NOMUL_AFILL, &(shader_img_22_nomul_afill_vert_src), &(shader_img_22_nomul_afill_frag_src), "img_22_nomul_afill", RTYPE_IMAGE, SHADER_SAM22, 0, 0, 1, 1 },
+   { SHADER_IMG_12_BGRA_NOMUL_AFILL, &(shader_img_12_bgra_nomul_afill_vert_src), &(shader_img_12_bgra_nomul_afill_frag_src), "img_12_bgra_nomul_afill", RTYPE_IMAGE, SHADER_SAM12, 1, 0, 1, 1 },
+   { SHADER_IMG_21_BGRA_NOMUL_AFILL, &(shader_img_21_bgra_nomul_afill_vert_src), &(shader_img_21_bgra_nomul_afill_frag_src), "img_21_bgra_nomul_afill", RTYPE_IMAGE, SHADER_SAM21, 1, 0, 1, 1 },
+   { SHADER_IMG_22_BGRA_NOMUL_AFILL, &(shader_img_22_bgra_nomul_afill_vert_src), &(shader_img_22_bgra_nomul_afill_frag_src), "img_22_bgra_nomul_afill", RTYPE_IMAGE, SHADER_SAM22, 1, 0, 1, 1 },
+   { SHADER_RGB_A_PAIR, &(shader_rgb_a_pair_vert_src), &(shader_rgb_a_pair_frag_src), "rgb_a_pair", RTYPE_RGB_A_PAIR, SHADER_SAM11, 0, 0, 0, 0 },
+   { SHADER_RGB_A_PAIR_MASK, &(shader_rgb_a_pair_mask_vert_src), &(shader_rgb_a_pair_mask_frag_src), "rgb_a_pair_mask", RTYPE_RGB_A_PAIR, SHADER_SAM11, 0, 1, 0, 0 },
+   { SHADER_RGB_A_PAIR_NOMUL, &(shader_rgb_a_pair_nomul_vert_src), &(shader_rgb_a_pair_nomul_frag_src), "rgb_a_pair_nomul", RTYPE_RGB_A_PAIR, SHADER_SAM11, 0, 0, 1, 0 },
+   { SHADER_RGB_A_PAIR_MASK_NOMUL, &(shader_rgb_a_pair_mask_nomul_vert_src), &(shader_rgb_a_pair_mask_nomul_frag_src), "rgb_a_pair_mask_nomul", RTYPE_RGB_A_PAIR, SHADER_SAM11, 0, 1, 1, 0 },
+   { SHADER_TEX_EXTERNAL, &(shader_tex_external_vert_src), &(shader_tex_external_frag_src), "tex_external", RTYPE_TEX_EXTERNAL, SHADER_SAM11, 0, 0, 0, 0 },
+   { SHADER_TEX_EXTERNAL_AFILL, &(shader_tex_external_afill_vert_src), &(shader_tex_external_afill_frag_src), "tex_external_afill", RTYPE_TEX_EXTERNAL, SHADER_SAM11, 0, 0, 0, 1 },
+   { SHADER_TEX_EXTERNAL_NOMUL, &(shader_tex_external_nomul_vert_src), &(shader_tex_external_nomul_frag_src), "tex_external_nomul", RTYPE_TEX_EXTERNAL, SHADER_SAM11, 0, 0, 1, 0 },
+   { SHADER_TEX_EXTERNAL_NOMUL_AFILL, &(shader_tex_external_nomul_afill_vert_src), &(shader_tex_external_nomul_afill_frag_src), "tex_external_nomul_afill", RTYPE_TEX_EXTERNAL, SHADER_SAM11, 0, 0, 1, 1 },
+   { SHADER_TEX_EXTERNAL_MASK, &(shader_tex_external_mask_vert_src), &(shader_tex_external_mask_frag_src), "tex_external_mask", RTYPE_TEX_EXTERNAL, SHADER_SAM11, 0, 1, 0, 0 },
+   { SHADER_TEX_EXTERNAL_MASK_NOMUL, &(shader_tex_external_mask_nomul_vert_src), &(shader_tex_external_mask_nomul_frag_src), "tex_external_mask_nomul", RTYPE_TEX_EXTERNAL, SHADER_SAM11, 0, 1, 1, 0 },
+   { SHADER_YUV, &(shader_yuv_vert_src), &(shader_yuv_frag_src), "yuv", RTYPE_YUV, SHADER_SAM11, 0, 0, 0, 0 },
+   { SHADER_YUV_NOMUL, &(shader_yuv_nomul_vert_src), &(shader_yuv_nomul_frag_src), "yuv_nomul", RTYPE_YUV, SHADER_SAM11, 0, 0, 1, 0 },
+   { SHADER_YUV_MASK, &(shader_yuv_mask_vert_src), &(shader_yuv_mask_frag_src), "yuv_mask", RTYPE_YUV, SHADER_SAM11, 0, 1, 0, 0 },
+   { SHADER_YUV_MASK_NOMUL, &(shader_yuv_mask_nomul_vert_src), &(shader_yuv_mask_nomul_frag_src), "yuv_mask_nomul", RTYPE_YUV, SHADER_SAM11, 0, 1, 1, 0 },
+   { SHADER_YUY2, &(shader_yuy2_vert_src), &(shader_yuy2_frag_src), "yuy2", RTYPE_YUY2, SHADER_SAM11, 0, 0, 0, 0 },
+   { SHADER_YUY2_NOMUL, &(shader_yuy2_nomul_vert_src), &(shader_yuy2_nomul_frag_src), "yuy2_nomul", RTYPE_YUY2, SHADER_SAM11, 0, 0, 1, 0 },
+   { SHADER_YUY2_MASK, &(shader_yuy2_mask_vert_src), &(shader_yuy2_mask_frag_src), "yuy2_mask", RTYPE_YUY2, SHADER_SAM11, 0, 1, 0, 0 },
+   { SHADER_YUY2_MASK_NOMUL, &(shader_yuy2_mask_nomul_vert_src), &(shader_yuy2_mask_nomul_frag_src), "yuy2_mask_nomul", RTYPE_YUY2, SHADER_SAM11, 0, 1, 1, 0 },
+   { SHADER_NV12, &(shader_nv12_vert_src), &(shader_nv12_frag_src), "nv12", RTYPE_NV12, SHADER_SAM11, 0, 0, 0, 0 },
+   { SHADER_NV12_NOMUL, &(shader_nv12_nomul_vert_src), &(shader_nv12_nomul_frag_src), "nv12_nomul", RTYPE_NV12, SHADER_SAM11, 0, 0, 1, 0 },
+   { SHADER_NV12_MASK, &(shader_nv12_mask_vert_src), &(shader_nv12_mask_frag_src), "nv12_mask", RTYPE_NV12, SHADER_SAM11, 0, 1, 0, 0 },
+   { SHADER_NV12_MASK_NOMUL, &(shader_nv12_mask_nomul_vert_src), &(shader_nv12_mask_nomul_frag_src), "nv12_mask_nomul", RTYPE_NV12, SHADER_SAM11, 0, 1, 1, 0 },
 };
 
diff --git a/src/modules/evas/engines/gl_common/shader/font_frag.shd b/src/modules/evas/engines/gl_common/shader/font_frag.shd
deleted file mode 100644 (file)
index a8eb9b7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy).aaaa * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/font_mask_frag.shd b/src/modules/evas/engines/gl_common/shader/font_mask_frag.shd
deleted file mode 100644 (file)
index 48c926c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-uniform sampler2D texm;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy).aaaa * texture2D(texm, tex_m.xy).aaaa * col;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/font_mask_vert.shd b/src/modules/evas/engines/gl_common/shader/font_mask_vert.shd
deleted file mode 100644 (file)
index f1c9c7b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec4 mask_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/font_vert.shd b/src/modules/evas/engines/gl_common/shader/font_vert.shd
deleted file mode 100644 (file)
index 606c297..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/fragment.glsl b/src/modules/evas/engines/gl_common/shader/fragment.glsl
new file mode 100644 (file)
index 0000000..1ebecbb
--- /dev/null
@@ -0,0 +1,142 @@
+/* General-purpose fragment shader for all operations in Evas.
+ * This file can either be used directly by evas at runtime to
+ * generate its shaders with the appropriate #defines, or passed
+ * through cpp first (in which case the precision must be manually added).
+ */
+
+#ifdef GL_ES
+#ifdef GL_FRAGMENT_PRECISION_HIGH
+precision highp float;
+#else
+precision mediump float;
+#endif
+#endif
+
+#ifndef SHD_NOMUL
+varying vec4 col;
+#endif
+
+#ifdef SHD_TEX
+uniform sampler2D tex;
+varying vec2 tex_c;
+#endif
+
+#if defined(SHD_NV12) || defined(SHD_YUY2)
+uniform sampler2D texuv;
+varying vec2 tex_c2;
+#endif
+
+#if defined(SHD_YUV)
+uniform sampler2D texu;
+uniform sampler2D texv;
+varying vec2 tex_c2;
+varying vec2 tex_c3;
+#endif
+
+#ifdef SHD_TEXA
+uniform sampler2D texa;
+varying vec2 tex_a;
+#endif
+
+#if defined(SHD_SAM12) || defined(SHD_SAM21) || defined(SHD_SAM22)
+varying vec4 div_s;
+# if defined(SHD_SAM12) || defined(SHD_SAM21)
+varying vec2 tex_s[2];
+# else
+varying vec2 tex_s[4];
+# endif
+#endif
+
+#ifdef SHD_MASK
+uniform sampler2D texm;
+varying vec2 tex_m;
+#endif
+
+#ifdef SHD_EXTERNAL
+# define SHD_TEX
+// uniform samplerExternalOES tex;
+varying vec2 tex_c;
+#endif
+
+#ifdef SHD_ALPHA
+# define SWZ aaaa
+#else
+# ifndef SHD_BGRA
+#  define SWZ bgra
+# else
+#  define SWZ rgba
+# endif
+#endif
+
+void main()
+{
+   vec4 c;
+
+#if defined(SHD_YUV)
+   float r, g, b, y, u, v;
+   y = texture2D(tex, tex_c).r;
+   u = texture2D(texu, tex_c2).r;
+   v = texture2D(texv, tex_c3).r;
+   y = (y - 0.0625) * 1.164;
+   u = u - 0.5;
+   v = v - 0.5;
+   r = y + (1.402   * v);
+   g = y - (0.34414 * u) - (0.71414 * v);
+   b = y + (1.772   * u);
+   c = vec4(r, g, b, 1.0);
+
+#elif defined(SHD_NV12) || defined(SHD_YUY2)
+   float y, u, v, vmu, r, g, b;
+   y = texture2D(tex, tex_c).g;
+   u = texture2D(texuv, tex_c2).g;
+   v = texture2D(texuv, tex_c2).a;
+   u = u - 0.5;
+   v = v - 0.5;
+   vmu = v * 0.813 + u * 0.391;
+   u = u * 2.018;
+   v = v * 1.596;
+# ifdef SHD_NV12
+   y = (y - 0.062) * 1.164;
+# endif
+   r = y + v;
+   g = y - vmu;
+   b = y + u;
+   c = vec4(r, g, b, 1.0);
+
+#elif defined(SHD_SAM12) || defined(SHD_SAM21)
+   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).SWZ;
+   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).SWZ;
+   c = (col00 + col01) / div_s;
+
+#elif defined(SHD_SAM22)
+   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).SWZ;
+   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).SWZ;
+   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).SWZ;
+   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).SWZ;
+   c = (col00 + col01 + col10 + col11) / div_s;
+
+#elif defined(SHD_TEX)
+   c = texture2D(tex, tex_c).SWZ;
+
+#else
+   c = vec4(1, 1, 1, 1);
+#endif
+
+   gl_FragColor =
+       c
+#ifndef SHD_NOMUL
+     * col
+#endif
+#ifdef SHD_MASK
+     * texture2D(texm, tex_m).a
+#endif
+#ifdef SHD_TEXA
+     * texture2D(texa, tex_a).r
+#endif
+   ;
+
+#ifdef SHD_AFILL
+   gl_FragColor.a = 1.0;
+#endif
+}
+
index fa0bd40..92be634 100755 (executable)
 #!/bin/bash
 
-# This script will generate a C file containing all the shaders used by Evas.
-# This C file should be checked-in Git and not modified.
+set -e
 
 DIR=`dirname $0`
-
 OUTPUT=${DIR}/evas_gl_shaders.x
 OUTPUT_ENUM=${DIR}/evas_gl_enum.x
-
-#SHADERS=${DIR}/*.shd
-SHADERS="$@"
-
-# Redirect output to ${OUTPUT}
-exec 1<&-
-exec 1>${OUTPUT}
+CPP="cpp -P"
+
+VTX_HEADER="#ifdef GL_ES
+precision highp float;
+#endif
+"
+
+FGM_HEADER="#ifdef GL_ES
+#ifdef GL_FRAGMENT_PRECISION_HIGH
+precision highp float;
+#else
+precision mediump float;
+#endif
+#endif
+"
+
+# Hack
+FGM_HEADER_OES="#ifdef GL_ES
+# extension GL_OES_EGL_image_external : require
+# ifdef GL_FRAGMENT_PRECISION_HIGH
+precision highp float;
+# else
+precision mediump float;
+# endif
+uniform samplerExternalOES tex;
+#else
+uniform sampler2D tex;
+#endif
+"
+
+function upper() {
+  echo $@ |tr '[:lower:]' '[:upper:]'
+}
+
+function run() {
+  [ "$V" = "1" ] && echo "$@"
+  "$@"
+}
+
+# Urgh
+OIFS=$IFS
+IFS=$'\n' SHADERS=(`cat ${DIR}/shaders.txt`)
+IFS=$OIFS
 
 # Write header
-printf "/* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED\n * See: $0 */\n\n"
+printf "/* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED\n * See: $0 */\n\n" > ${OUTPUT}
 
 # Including private for hilights and stuff :)
-printf "#include \"../evas_gl_private.h\"\n\n"
+printf "#include \"../evas_gl_private.h\"\n\n" >> ${OUTPUT}
 
 # Prepare list of shaders:
 shaders_source=""
 shaders_enum=""
-
-# Reading with the following code breaks indents:
-#  while read -r line ; do
-#  done < ${shd}
-# So we use some cat & IFS hack instead.
-
-for shd in ${SHADERS} ; do
-  lname=`basename ${shd} .shd`
-  UNAME=`echo ${lname} |tr "[:lower:]" "[:upper:]"`
-
-  printf "/* Source: $shd */\n"
-
-  OIFS=$IFS
-  IFS=$'\n'
-  printf "static const char const ${lname}_glsl[] ="
-  for line in `cat ${shd}` ; do
-    printf "\n   \"${line}\\\n\""
+shaders_type=(frag vert)
+
+# Generate SHD files
+LIST=""
+for (( i = 0; i < ${#SHADERS[@]} ; i++ )) ; do
+  s=${SHADERS[$i]}
+  if [[ $s == \#* ]] ; then continue ; fi
+
+  name=`echo $s |cut -d ':' -f 1`
+  opts=`echo $s |cut -d ':' -f 2 |tr ',' '\n'`
+
+  echo "  SHADER   $name"
+  UNAME=`echo ${name} |tr "[:lower:]" "[:upper:]"`
+  OPTS=""
+  FGM=${FGM_HEADER}
+  TYPE=`echo ${name} |cut -d '_' -f 1 |tr '[:lower:]' '[:upper:]'`
+  bgra=0
+  mask=0
+  nomul=0
+  afill=0
+  sam="SAM11"
+
+  # Urgh. Some fixups
+  case $TYPE in
+   IMG) TYPE="IMAGE";;
+   RGB) TYPE="RGB_A_PAIR";;
+   TEX) TYPE="TEX_EXTERNAL";;
+  esac
+
+  for opt in $opts ; do
+    UP=`upper $opt`
+    OPTS="$OPTS -DSHD_${UP}"
+    case $opt in
+     bgra) bgra=1;;
+     mask) mask=1;;
+     nomul) nomul=1;;
+     afill) afill=1;;
+     external) FGM=${FGM_HEADER_OES};;
+     sam12) sam="SAM12";;
+     sam21) sam="SAM21";;
+     sam22) sam="SAM22";;
+    esac
   done
-  printf ";\n"
-  IFS=${OIFS}
 
-  printf "Evas_GL_Program_Source shader_${lname}_src =\n{\n   ${lname}_glsl,\n   NULL, 0\n};\n\n"
+  # vertex shader
+  filev=${DIR}/${name}_vert.shd
+  printf "${VTX_HEADER}" >| ${filev}
+  run $CPP $OPTS ${DIR}/vertex.glsl >> ${filev}
+
+  # fragment shader
+  filef=${DIR}/${name}_frag.shd
+  printf "${FGM}" >| ${filef}
+  run $CPP $OPTS ${DIR}/fragment.glsl >> ${filef}
+
+  k=0
+  for shd in ${filef} ${filev} ; do
+    shdname=${name}_${shaders_type[$k]}
+    k=$(($k + 1))
+
+    OIFS=$IFS
+    IFS=$'\n'
+    printf "static const char const ${shdname}_glsl[] =" >> ${OUTPUT}
+    for line in `cat ${shd}` ; do
+      printf "\n   \"${line}\\\n\"" >> ${OUTPUT}
+    done
+    printf ";\n" >> ${OUTPUT}
+    IFS=${OIFS}
+
+    printf "Evas_GL_Program_Source shader_${shdname}_src =\n{\n   ${shdname}_glsl,\n   NULL, 0\n};\n\n" >> ${OUTPUT}
+  done
 
-  if echo ${lname} |grep vert 2>&1 >> /dev/null ; then
-    name=`echo ${lname} |sed -e 's/_vert//'`
-    SHADER=`echo ${UNAME} |sed -e 's/_VERT//'`
-    shaders_source="${shaders_source}   { SHADER_${SHADER}, &(shader_${name}_vert_src), &(shader_${name}_frag_src), \"${name}\" },\n"
-    shaders_enum="${shaders_enum}   SHADER_${SHADER},\n"
-  fi
+  shaders_source="${shaders_source}   { SHADER_${UNAME}, &(shader_${name}_vert_src), &(shader_${name}_frag_src), \"${name}\", RTYPE_${TYPE}, SHADER_${sam}, ${bgra}, ${mask}, ${nomul}, ${afill} },\n"
+  shaders_enum="${shaders_enum}   SHADER_${UNAME},\n"
 done
 
-printf "static const struct {
+printf "
+typedef enum _Shader_Sampling Shader_Sampling;
+enum _Shader_Sampling {
+   SHADER_SAM11,
+   SHADER_SAM12,
+   SHADER_SAM21,
+   SHADER_SAM22
+};
+
+static const struct {
    Evas_GL_Shader id;
    Evas_GL_Program_Source *vert;
    Evas_GL_Program_Source *frag;
    const char *name;
-} _shaders_source[] = {\n"
+   unsigned char type; // RTYPE
+   Shader_Sampling sam;
+   Eina_Bool bgra : 1;
+   Eina_Bool mask : 1;
+   Eina_Bool nomul : 1;
+   Eina_Bool afill : 1;
+} _shaders_source[] = {\n" >> ${OUTPUT}
 
-printf "${shaders_source}};\n\n"
+printf "${shaders_source}};\n\n" >> ${OUTPUT}
 
 printf "/* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED\n * See: $0 */
 
@@ -71,3 +164,6 @@ ${shaders_enum}   SHADER_LAST
 } Evas_GL_Shader;
 " >| ${OUTPUT_ENUM}
 
+# You can remove the files now
+#rm -f ${LIST}
+
diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd
deleted file mode 100644 (file)
index d23e17b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   gl_FragColor = ((col00 + col01) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd
deleted file mode 100644 (file)
index 4d29510..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   gl_FragColor = (col00 + col01) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd
deleted file mode 100644 (file)
index 40144aa..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(0, -tex_sample.y);
-   tex_s[1] = vec2(0,  tex_sample.y);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd
deleted file mode 100644 (file)
index 810d73a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(0, -tex_sample.y);
-   tex_s[1] = vec2(0,  tex_sample.y);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_12_frag.shd b/src/modules/evas/engines/gl_common/shader/img_12_frag.shd
deleted file mode 100644 (file)
index 2647ab2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;
-   gl_FragColor = ((col00 + col01) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd
deleted file mode 100644 (file)
index 49872cf..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;
-   gl_FragColor = (col00 + col01) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd
deleted file mode 100644 (file)
index 40144aa..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(0, -tex_sample.y);
-   tex_s[1] = vec2(0,  tex_sample.y);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_12_vert.shd b/src/modules/evas/engines/gl_common/shader/img_12_vert.shd
deleted file mode 100644 (file)
index 810d73a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(0, -tex_sample.y);
-   tex_s[1] = vec2(0,  tex_sample.y);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd
deleted file mode 100644 (file)
index d23e17b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   gl_FragColor = ((col00 + col01) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd
deleted file mode 100644 (file)
index 4d29510..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   gl_FragColor = (col00 + col01) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd
deleted file mode 100644 (file)
index a6b149f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, 0);
-   tex_s[1] = vec2( tex_sample.x, 0);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd
deleted file mode 100644 (file)
index 98d9154..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, 0);
-   tex_s[1] = vec2( tex_sample.x, 0);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_21_frag.shd b/src/modules/evas/engines/gl_common/shader/img_21_frag.shd
deleted file mode 100644 (file)
index 2647ab2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;
-   gl_FragColor = ((col00 + col01) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd
deleted file mode 100644 (file)
index 49872cf..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;
-   gl_FragColor = (col00 + col01) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd
deleted file mode 100644 (file)
index a6b149f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, 0);
-   tex_s[1] = vec2( tex_sample.x, 0);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_21_vert.shd b/src/modules/evas/engines/gl_common/shader/img_21_vert.shd
deleted file mode 100644 (file)
index 98d9154..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, 0);
-   tex_s[1] = vec2( tex_sample.x, 0);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd
deleted file mode 100644 (file)
index ab1b121..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);
-   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);
-   gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd
deleted file mode 100644 (file)
index 3f380ea..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);
-   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);
-   gl_FragColor = (col00 + col01 + col10 + col11) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd
deleted file mode 100644 (file)
index e6303d7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
-   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
-   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
-   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
-   div_s = vec4(4, 4, 4, 4);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd
deleted file mode 100644 (file)
index e964ea1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
-   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
-   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
-   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
-   div_s = vec4(4, 4, 4, 4);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_22_frag.shd b/src/modules/evas/engines/gl_common/shader/img_22_frag.shd
deleted file mode 100644 (file)
index 1ff5ccc..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;
-   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;
-   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;
-   gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd
deleted file mode 100644 (file)
index 3b87c09..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;
-   vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;
-   vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;
-   gl_FragColor = (col00 + col01 + col10 + col11) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd
deleted file mode 100644 (file)
index e6303d7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
-   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
-   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
-   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
-   div_s = vec4(4, 4, 4, 4);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_22_vert.shd b/src/modules/evas/engines/gl_common/shader/img_22_vert.shd
deleted file mode 100644 (file)
index e964ea1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
-   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
-   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
-   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
-   div_s = vec4(4, 4, 4, 4);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/img_bgra_frag.shd
deleted file mode 100644 (file)
index 2bc8d79..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_bgra_nomul_frag.shd
deleted file mode 100644 (file)
index 877df62..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_bgra_nomul_vert.shd
deleted file mode 100644 (file)
index 74f3207..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/img_bgra_vert.shd
deleted file mode 100644 (file)
index 606c297..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_frag.shd b/src/modules/evas/engines/gl_common/shader/img_frag.shd
deleted file mode 100644 (file)
index 9faa414..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy).bgra * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_mask_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/img_mask_bgra_frag.shd
deleted file mode 100644 (file)
index 5412d69..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-uniform sampler2D texm;
-varying vec4 col;
-varying vec2 coord_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_FragColor = texture2D(texm, tex_m.xy).a * texture2D(tex, coord_c.xy) * col;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_frag.shd
deleted file mode 100644 (file)
index f2f3ff1..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-uniform sampler2D texm;
-varying vec2 coord_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_FragColor = texture2D(texm, tex_m.xy).a * texture2D(tex, coord_c.xy);
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_mask_bgra_nomul_vert.shd
deleted file mode 100644 (file)
index 0804133..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec4 mask_coord;
-uniform mat4 mvp;
-varying vec2 coord_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   coord_c = tex_coord;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/img_mask_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/img_mask_bgra_vert.shd
deleted file mode 100644 (file)
index 456e01f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec4 mask_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 coord_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   coord_c = tex_coord;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/img_mask_frag.shd b/src/modules/evas/engines/gl_common/shader/img_mask_frag.shd
deleted file mode 100644 (file)
index d0c9f0a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-uniform sampler2D texm;
-varying vec4 col;
-varying vec2 coord_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_FragColor = texture2D(texm, tex_m.xy).a * texture2D(tex, coord_c.xy).bgra * col;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/img_mask_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_mask_nomul_frag.shd
deleted file mode 100644 (file)
index cb309ad..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-uniform sampler2D texm;
-varying vec2 coord_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_FragColor = texture2D(tex, coord_c.xy) * texture2D(texm, tex_m).a;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/img_mask_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_mask_nomul_vert.shd
deleted file mode 100644 (file)
index 0804133..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec4 mask_coord;
-uniform mat4 mvp;
-varying vec2 coord_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   coord_c = tex_coord;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/img_mask_vert.shd b/src/modules/evas/engines/gl_common/shader/img_mask_vert.shd
deleted file mode 100644 (file)
index 456e01f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec4 mask_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 coord_c;
-varying vec2 tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   coord_c = tex_coord;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/img_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_nomul_frag.shd
deleted file mode 100644 (file)
index 222d635..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy).bgra;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_nomul_vert.shd
deleted file mode 100644 (file)
index 74f3207..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/img_vert.shd b/src/modules/evas/engines/gl_common/shader/img_vert.shd
deleted file mode 100644 (file)
index 606c297..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/map_mask_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/map_mask_bgra_frag.shd
deleted file mode 100644 (file)
index be952b7..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texm;
-varying vec2 tex_c, tex_m;
-varying vec4 col;
-void main()
-{
-   // FIXME: Fix Mach band effect using proper 4-point color interpolation
-   gl_FragColor = texture2D(tex, tex_c) * texture2D(texm, tex_m).a *  col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_frag.shd
deleted file mode 100644 (file)
index a1ce622..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texm;
-varying vec2 tex_c, tex_m;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c) * texture2D(texm, tex_m).a;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/map_mask_bgra_nomul_vert.shd
deleted file mode 100644 (file)
index c04a5a4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex, mask_coord;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c, tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/map_mask_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/map_mask_bgra_vert.shd
deleted file mode 100644 (file)
index 6bc3697..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex, color, mask_coord;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c, tex_m;
-varying vec4 col;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   col = color;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/map_mask_frag.shd b/src/modules/evas/engines/gl_common/shader/map_mask_frag.shd
deleted file mode 100644 (file)
index 17e91f4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texm;
-varying vec2 tex_c, tex_m;
-varying vec4 col;
-void main()
-{
-   // FIXME: Fix Mach band effect using proper 4-point color interpolation
-   gl_FragColor = texture2D(tex, tex_c).bgra * texture2D(texm, tex_m).a *  col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/map_mask_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/map_mask_nomul_frag.shd
deleted file mode 100644 (file)
index 0720d58..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texm;
-varying vec2 tex_c, tex_m;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c).bgra * texture2D(texm, tex_m).a;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/map_mask_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/map_mask_nomul_vert.shd
deleted file mode 100644 (file)
index c04a5a4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex, mask_coord;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c, tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/map_mask_vert.shd b/src/modules/evas/engines/gl_common/shader/map_mask_vert.shd
deleted file mode 100644 (file)
index 6bc3697..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex, color, mask_coord;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c, tex_m;
-varying vec4 col;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   col = color;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/nv12_frag.shd b/src/modules/evas/engines/gl_common/shader/nv12_frag.shd
deleted file mode 100644 (file)
index 34748fc..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texuv;
-varying vec4 col;
-varying vec2 tex_c, tex_cuv;
-void main()
-{
-  float y,u,v,vmu,r,g,b;
-  y=texture2D(tex,tex_c).g;
-  u=texture2D(texuv,tex_cuv).g;
-  v=texture2D(texuv,tex_cuv).a;
-
-  u=u-0.5;
-  v=v-0.5;
-  vmu=v*0.813+u*0.391;
-  u=u*2.018;
-  v=v*1.596;
-  y=(y-0.062)*1.164;
-
-  r=y+v;
-  g=y-vmu;
-  b=y+u;
-
-  gl_FragColor=vec4(r,g,b,1.0) * col;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/nv12_mask_frag.shd b/src/modules/evas/engines/gl_common/shader/nv12_mask_frag.shd
deleted file mode 100644 (file)
index aa221d1..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texuv, texm;
-varying vec4 col;
-varying vec2 tex_c, tex_cuv, tex_m;
-void main()
-{
-  float y,u,v,vmu,r,g,b;
-  y=texture2D(tex,tex_c).g;
-  u=texture2D(texuv,tex_cuv).g;
-  v=texture2D(texuv,tex_cuv).a;
-
-  u=u-0.5;
-  v=v-0.5;
-  vmu=v*0.813+u*0.391;
-  u=u*2.018;
-  v=v*1.596;
-  y=(y-0.062)*1.164;
-
-  r=y+v;
-  g=y-vmu;
-  b=y+u;
-
-  gl_FragColor = vec4(r,g,b,1.0) * texture2D(tex, tex_m.xy).a * col;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/nv12_mask_vert.shd b/src/modules/evas/engines/gl_common/shader/nv12_mask_vert.shd
deleted file mode 100644 (file)
index d17555a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec4 mask_coord;
-attribute vec2 tex_coord, tex_coord2;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c, tex_cuv, tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_cuv = tex_coord2 * 0.5;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/nv12_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/nv12_nomul_frag.shd
deleted file mode 100644 (file)
index 6910933..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texuv;
-varying vec2 tex_c, tex_cuv;
-void main()
-{
-  float y,u,v,vmu,r,g,b;
-  y=texture2D(tex,tex_c).g;
-  u=texture2D(texuv,tex_cuv).g;
-  v=texture2D(texuv,tex_cuv).a;
-
-  u=u-0.5;
-  v=v-0.5;
-  vmu=v*0.813+u*0.391;
-  u=u*2.018;
-  v=v*1.596;
-  y=(y-0.062)*1.164;
-
-  r=y+v;
-  g=y-vmu;
-  b=y+u;
-
-  gl_FragColor=vec4(r,g,b,1.0);
-}
-
-
diff --git a/src/modules/evas/engines/gl_common/shader/nv12_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/nv12_nomul_vert.shd
deleted file mode 100644 (file)
index ddd0d6e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord, tex_coord2;
-uniform mat4 mvp;
-varying vec2 tex_c, tex_cuv;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_cuv = tex_coord2 * 0.5;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/nv12_vert.shd b/src/modules/evas/engines/gl_common/shader/nv12_vert.shd
deleted file mode 100644 (file)
index ee9238c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord, tex_coord2;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c, tex_cuv;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_cuv = tex_coord2 * 0.5;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rect_frag.shd b/src/modules/evas/engines/gl_common/shader/rect_frag.shd
deleted file mode 100644 (file)
index 02251ee..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-void main()
-{
-   gl_FragColor = col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rect_mask_frag.shd b/src/modules/evas/engines/gl_common/shader/rect_mask_frag.shd
deleted file mode 100644 (file)
index 9af029d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D texm;
-varying vec4 col;
-varying vec2 tex_m;
-void main()
-{
-   gl_FragColor = texture2D(texm, tex_m.xy).a * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rect_mask_vert.shd b/src/modules/evas/engines/gl_common/shader/rect_mask_vert.shd
deleted file mode 100644 (file)
index 5065209..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec4 mask_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rect_vert.shd b/src/modules/evas/engines/gl_common/shader/rect_vert.shd
deleted file mode 100644 (file)
index 63fea5d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-uniform mat4 mvp;
-varying vec4 col;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rgb_a_pair_frag.shd b/src/modules/evas/engines/gl_common/shader/rgb_a_pair_frag.shd
deleted file mode 100644 (file)
index 5a352e8..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-uniform sampler2D texa;
-varying vec4 col;
-varying vec2 coord_c;
-varying vec2 coord_a;
-void main()
-{
-   gl_FragColor.rgb = texture2D(tex, coord_c.xy).rgb * col.rgb * texture2D(texa, coord_a).g;
-   gl_FragColor.a = col.a * texture2D(texa, coord_a).g;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rgb_a_pair_mask_frag.shd b/src/modules/evas/engines/gl_common/shader/rgb_a_pair_mask_frag.shd
deleted file mode 100644 (file)
index daa185a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-uniform sampler2D texa;
-uniform sampler2D texm;
-varying vec4 col;
-varying vec2 coord_c;
-varying vec2 coord_a;
-varying vec2 tex_m;
-void main()
-{
-   gl_FragColor.rgb = texture2D(tex, coord_c.xy).rgb * col.rgb * texture2D(texa, coord_a).g * texture2D(texm, tex_m.xy).a;
-   gl_FragColor.a = col.a * texture2D(texa, coord_a).g * texture2D(texm, tex_m.xy).a;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rgb_a_pair_mask_vert.shd b/src/modules/evas/engines/gl_common/shader/rgb_a_pair_mask_vert.shd
deleted file mode 100644 (file)
index ba575d6..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_coorda;
-attribute vec4 mask_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 coord_c;
-varying vec2 coord_a;
-varying vec2 tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   coord_c = tex_coord;
-   coord_a = tex_coorda;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_frag.shd
deleted file mode 100644 (file)
index 68be9d4..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-uniform sampler2D texa;
-varying vec2 coord_c;
-varying vec2 coord_a;
-void main()
-{
-   gl_FragColor.rgb = texture2D(tex, coord_c.xy).rgb * texture2D(texa, coord_a).g;
-   gl_FragColor.a   = texture2D(texa, coord_a).g;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/rgb_a_pair_nomul_vert.shd
deleted file mode 100644 (file)
index 1c0af0a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_coorda;
-uniform mat4 mvp;
-varying vec2 coord_c;
-varying vec2 coord_a;
-void main()
-{
-   gl_Position = mvp * vertex;
-   coord_c = tex_coord;
-   coord_a = tex_coorda;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/rgb_a_pair_vert.shd b/src/modules/evas/engines/gl_common/shader/rgb_a_pair_vert.shd
deleted file mode 100644 (file)
index 06ab513..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_coorda;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 coord_c;
-varying vec2 coord_a;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   coord_c = tex_coord;
-   coord_a = tex_coorda;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/shaders.txt b/src/modules/evas/engines/gl_common/shader/shaders.txt
new file mode 100644 (file)
index 0000000..6dd7f12
--- /dev/null
@@ -0,0 +1,113 @@
+# All supported shaders, format is (no spaces allowed):
+# name:opt1,opt2,opt3
+
+# Convention for names:
+# type[_SAM[_bgra[_mask[_nomul[_afill]]]]]
+
+
+# Rectangles, lines & polygons
+rect:
+rect_mask:mask
+
+
+# Fonts (alpha only)
+font:tex,alpha
+font_mask:tex,mask,alpha
+
+
+# Images: color version
+img:tex
+img_bgra:tex,bgra
+img_12:tex,sam12
+img_21:tex,sam21
+img_22:tex,sam22
+img_12_bgra:tex,sam12,bgra
+img_21_bgra:tex,sam21,bgra
+img_22_bgra:tex,sam22,bgra
+
+img_mask:tex,mask
+img_bgra_mask:tex,mask,bgra
+img_12_mask:tex,mask,sam12
+img_21_mask:tex,mask,sam21
+img_22_mask:tex,mask,sam22
+img_12_bgra_mask:tex,mask,sam12,bgra
+img_21_bgra_mask:tex,mask,sam21,bgra
+img_22_bgra_mask:tex,mask,sam22,bgra
+
+
+# Images: nomul version (copy above with extra nomul flag)
+img_nomul:tex,nomul
+img_bgra_nomul:tex,nomul,bgra
+img_12_nomul:tex,sam12,nomul
+img_21_nomul:tex,sam21,nomul
+img_22_nomul:tex,sam22,nomul
+img_12_bgra_nomul:tex,sam12,bgra,nomul
+img_21_bgra_nomul:tex,sam21,bgra,nomul
+img_22_bgra_nomul:tex,sam22,bgra,nomul
+
+img_mask_nomul:tex,mask,nomul
+img_bgra_mask_nomul:tex,mask,nomul,bgra
+img_12_mask_nomul:tex,mask,sam12,nomul
+img_21_mask_nomul:tex,mask,sam21,nomul
+img_22_mask_nomul:tex,mask,sam22,nomul
+img_12_bgra_mask_nomul:tex,mask,sam12,bgra,nomul
+img_21_bgra_mask_nomul:tex,mask,sam21,bgra,nomul
+img_22_bgra_mask_nomul:tex,mask,sam22,bgra,nomul
+
+
+
+# Some AFILL versions
+img_afill:tex,afill
+img_bgra_afill:tex,afill,bgra
+img_nomul_afill:tex,nomul,afill
+img_bgra_nomul_afill:tex,nomul,afill,bgra
+img_12_afill:tex,sam12,afill
+img_21_afill:tex,sam21,afill
+img_22_afill:tex,sam22,afill
+img_12_bgra_afill:tex,sam12,bgra,afill
+img_21_bgra_afill:tex,sam21,bgra,afill
+img_22_bgra_afill:tex,sam22,bgra,afill
+img_12_nomul_afill:tex,sam12,nomul,afill
+img_21_nomul_afill:tex,sam21,nomul,afill
+img_22_nomul_afill:tex,sam22,nomul,afill
+img_12_bgra_nomul_afill:tex,sam12,bgra,nomul,afill
+img_21_bgra_nomul_afill:tex,sam21,bgra,nomul,afill
+img_22_bgra_nomul_afill:tex,sam22,bgra,nomul,afill
+
+
+
+# RGB+A. We can add more!
+rgb_a_pair:texa
+rgb_a_pair_mask:texa,mask
+rgb_a_pair_nomul:texa,nomul
+rgb_a_pair_mask_nomul:texa,mask,nomul
+#rgb_a_pair_afill:texa,afill
+#rgb_a_pair_nomul_afill:texa,nomul,afill
+
+
+
+# External texture (GLES, OES)
+tex_external:external
+tex_external_afill:external,afill
+tex_external_nomul:external,nomul
+tex_external_nomul_afill:external,nomul,afill
+tex_external_mask:external,mask
+tex_external_mask_nomul:external,mask,nomul
+
+
+# YUV stuff (no need for AFILL)
+yuv:tex,yuv
+yuv_nomul:tex,yuv,nomul
+yuv_mask:tex,yuv,mask
+yuv_mask_nomul:tex,yuv,mask,nomul
+
+yuy2:tex,yuy2
+yuy2_nomul:tex,yuy2,nomul
+yuy2_mask:tex,yuy2,mask
+yuy2_mask_nomul:tex,yuy2,mask,nomul
+
+nv12:tex,nv12
+nv12_nomul:tex,nv12,nomul
+nv12_mask:tex,nv12,mask
+nv12_mask_nomul:tex,nv12,mask,nomul
+
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_12_afill_frag.shd
deleted file mode 100644 (file)
index ee15fdd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 c = (col00 + col01) / div_s;
-   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_12_afill_vert.shd
deleted file mode 100644 (file)
index 810d73a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(0, -tex_sample.y);
-   tex_s[1] = vec2(0,  tex_sample.y);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_12_frag.shd
deleted file mode 100644 (file)
index d23e17b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   gl_FragColor = ((col00 + col01) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.shd
deleted file mode 100644 (file)
index a7bff98..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 c = (col00 + col01) / div_s;
-   gl_FragColor = vec4(c.r, c.g, c.b, 1);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.shd
deleted file mode 100644 (file)
index 40144aa..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(0, -tex_sample.y);
-   tex_s[1] = vec2(0,  tex_sample.y);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd
deleted file mode 100644 (file)
index 4d29510..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   gl_FragColor = (col00 + col01) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd
deleted file mode 100644 (file)
index 40144aa..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(0, -tex_sample.y);
-   tex_s[1] = vec2(0,  tex_sample.y);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_12_vert.shd
deleted file mode 100644 (file)
index 810d73a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(0, -tex_sample.y);
-   tex_s[1] = vec2(0,  tex_sample.y);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_21_afill_frag.shd
deleted file mode 100644 (file)
index ee15fdd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 c = (col00 + col01) / div_s;
-   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_21_afill_vert.shd
deleted file mode 100644 (file)
index 98d9154..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, 0);
-   tex_s[1] = vec2( tex_sample.x, 0);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_21_frag.shd
deleted file mode 100644 (file)
index d23e17b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   gl_FragColor = ((col00 + col01) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.shd
deleted file mode 100644 (file)
index a7bff98..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 c = (col00 + col01) / div_s;
-   gl_FragColor = vec4(c.r, c.g, c.b, 1);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.shd
deleted file mode 100644 (file)
index a6b149f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, 0);
-   tex_s[1] = vec2( tex_sample.x, 0);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd
deleted file mode 100644 (file)
index 4d29510..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   gl_FragColor = (col00 + col01) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd
deleted file mode 100644 (file)
index a6b149f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, 0);
-   tex_s[1] = vec2( tex_sample.x, 0);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_21_vert.shd
deleted file mode 100644 (file)
index 98d9154..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[2];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, 0);
-   tex_s[1] = vec2( tex_sample.x, 0);
-   div_s = vec4(2, 2, 2, 2);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_22_afill_frag.shd
deleted file mode 100644 (file)
index cb2dd2b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);
-   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);
-   vec4 c = (col00 + col01 + col10 + col11) / div_s;
-   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_22_afill_vert.shd
deleted file mode 100644 (file)
index e964ea1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
-   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
-   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
-   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
-   div_s = vec4(4, 4, 4, 4);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_22_frag.shd
deleted file mode 100644 (file)
index ab1b121..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);
-   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);
-   gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.shd
deleted file mode 100644 (file)
index c017c31..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);
-   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);
-   vec4 c = (col00 + col01 + col10 + col11) / div_s;
-   gl_FragColor = vec4(c.r, c.g, c.b, 1);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.shd
deleted file mode 100644 (file)
index e6303d7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
-   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
-   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
-   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
-   div_s = vec4(4, 4, 4, 4);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd
deleted file mode 100644 (file)
index 3f380ea..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   vec4 col00 = texture2D(tex, tex_c + tex_s[0]);
-   vec4 col01 = texture2D(tex, tex_c + tex_s[1]);
-   vec4 col10 = texture2D(tex, tex_c + tex_s[2]);
-   vec4 col11 = texture2D(tex, tex_c + tex_s[3]);
-   gl_FragColor = (col00 + col01 + col10 + col11) / div_s;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd
deleted file mode 100644 (file)
index e6303d7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
-   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
-   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
-   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
-   div_s = vec4(4, 4, 4, 4);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_22_vert.shd
deleted file mode 100644 (file)
index e964ea1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-attribute vec2 tex_sample;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-varying vec2 tex_s[4];
-varying vec4 div_s;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
-   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
-   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
-   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
-   div_s = vec4(4, 4, 4, 4);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_afill_frag.shd
deleted file mode 100644 (file)
index 9ee0c37..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   vec4 c = texture2D(tex, tex_c.xy);
-   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_afill_vert.shd
deleted file mode 100644 (file)
index 606c297..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_external_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_external_afill_frag.shd
deleted file mode 100644 (file)
index 790911e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifdef GL_ES
-#extension GL_OES_EGL_image_external : require
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-uniform samplerExternalOES tex;
-#else
-uniform sampler2D tex;
-#endif
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   vec4 c = texture2D(tex, tex_c.xy);
-   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_external_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_external_afill_vert.shd
deleted file mode 100644 (file)
index 606c297..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_external_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_external_frag.shd
deleted file mode 100644 (file)
index 48a6626..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#extension GL_OES_EGL_image_external : require
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-uniform samplerExternalOES tex;
-#else
-uniform sampler2D tex;
-#endif
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_external_nomul_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_external_nomul_afill_frag.shd
deleted file mode 100644 (file)
index 93e8aa0..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-#extension GL_OES_EGL_image_external : require
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-uniform samplerExternalOES tex;
-#else
-uniform sampler2D tex;
-#endif
-varying vec2 tex_c;
-void main()
-{
-   vec4 c = texture2D(tex, tex_c.xy);
-   gl_FragColor = vec4(c.r, c.g, c.b, 1);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_external_nomul_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_external_nomul_afill_vert.shd
deleted file mode 100644 (file)
index 74f3207..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_external_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_external_nomul_frag.shd
deleted file mode 100644 (file)
index f852d17..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef GL_ES
-#extension GL_OES_EGL_image_external : require
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-uniform samplerExternalOES tex;
-#else
-uniform sampler2D tex;
-#endif
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_external_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_external_nomul_vert.shd
deleted file mode 100644 (file)
index 74f3207..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_external_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_external_vert.shd
deleted file mode 100644 (file)
index 606c297..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_frag.shd
deleted file mode 100644 (file)
index 2bc8d79..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.shd
deleted file mode 100644 (file)
index 569c32e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-void main()
-{
-   vec4 c = texture2D(tex, tex_c.xy);
-   gl_FragColor = vec4(c.r, c.g, c.b, 1);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.shd
deleted file mode 100644 (file)
index 74f3207..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_nomul_frag.shd
deleted file mode 100644 (file)
index 877df62..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex;
-varying vec2 tex_c;
-void main()
-{
-   gl_FragColor = texture2D(tex, tex_c.xy);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_nomul_vert.shd
deleted file mode 100644 (file)
index 74f3207..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/tex_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_vert.shd
deleted file mode 100644 (file)
index 606c297..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/vertex.glsl b/src/modules/evas/engines/gl_common/shader/vertex.glsl
new file mode 100644 (file)
index 0000000..fda6a00
--- /dev/null
@@ -0,0 +1,117 @@
+/* General-purpose vertex shader for all operations in Evas.
+ * This file can either be used directly by evas at runtime to
+ * generate its shaders with the appropriate #defines, or passed
+ * through cpp first (in which case the precision must be manually added).
+ */
+
+#ifdef GL_ES
+precision highp float;
+#endif
+
+attribute vec4 vertex;
+uniform mat4 mvp;
+
+
+/* All except nomul */
+#ifndef SHD_NOMUL
+attribute vec4 color;
+varying vec4 col;
+#endif
+
+/* All images & fonts */
+#if defined(SHD_TEX) || defined(SHD_EXTERNAL)
+attribute vec2 tex_coord;
+varying vec2 tex_c;
+#endif
+
+/* NV12, YUY2 */
+#if defined(SHD_NV12) || defined(SHD_YUY2) || defined(SHD_YUV)
+attribute vec2 tex_coord2;
+varying vec2 tex_c2;
+#endif
+
+/* YUV */
+#ifdef SHD_YUV
+attribute vec2 tex_coord3;
+varying vec2 tex_c3;
+#endif
+
+/* RGB+A */
+#ifdef SHD_TEXA
+attribute vec2 tex_coorda;
+varying vec2 tex_a;
+#endif
+
+/* Sampling */
+#if defined(SHD_SAM12) || defined(SHD_SAM21) || defined(SHD_SAM22)
+attribute vec2 tex_sample;
+varying vec4 div_s;
+# if defined(SHD_SAM12) || defined(SHD_SAM21)
+varying vec2 tex_s[2];
+# else
+varying vec2 tex_s[4];
+# endif
+#endif
+
+/* Masking */
+#ifdef SHD_MASK
+attribute vec4 mask_coord;
+varying vec2 tex_m;
+#endif
+
+
+void main()
+{
+   gl_Position = mvp * vertex;
+
+#ifndef SHD_NOMUL
+   col = color;
+#endif
+
+#ifdef SHD_TEX
+   tex_c = tex_coord;
+#endif
+
+#ifdef SHD_NV12
+   tex_c2 = tex_coord2 * 0.5;
+#endif
+
+#ifdef SHD_YUY2
+   tex_c2 = vec2(tex_coord2.x * 0.5, tex_coord2.y);
+#endif
+
+#ifdef SHD_YUV
+   tex_c2 = tex_coord2;
+   tex_c3 = tex_coord3;
+#endif
+
+#ifdef SHD_TEXA
+   tex_a = tex_coorda;
+#endif
+
+#if defined(SHD_SAM12) || defined(SHD_SAM21) || defined(SHD_SAM22)
+# if defined(SHD_SAM12)
+   tex_s[0] = vec2(0, -tex_sample.y);
+   tex_s[1] = vec2(0,  tex_sample.y);
+   div_s = vec4(2, 2, 2, 2);
+# elif defined(SHD_SAM21)
+   tex_s[0] = vec2(-tex_sample.x, 0);
+   tex_s[1] = vec2( tex_sample.x, 0);
+   div_s = vec4(2, 2, 2, 2);
+# else
+   tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);
+   tex_s[1] = vec2( tex_sample.x, -tex_sample.y);
+   tex_s[2] = vec2( tex_sample.x,  tex_sample.y);
+   tex_s[3] = vec2(-tex_sample.x,  tex_sample.y);
+   div_s = vec4(4, 4, 4, 4);
+# endif
+#endif
+
+#ifdef SHD_MASK
+   // mask_coord.w contains the Y-invert flag
+   // position on screen in [0..1] range of current pixel
+   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
+   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
+#endif
+}
+
diff --git a/src/modules/evas/engines/gl_common/shader/yuv_frag.shd b/src/modules/evas/engines/gl_common/shader/yuv_frag.shd
deleted file mode 100644 (file)
index 367fb55..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texu, texv;
-varying vec4 col;
-varying vec2 tex_c, tex_c2, tex_c3;
-void main()
-{
-   float r, g, b, y, u, v;
-   y = texture2D(tex, tex_c.xy).r;
-   u = texture2D(texu, tex_c2.xy).r;
-   v = texture2D(texv, tex_c3.xy).r;
-   y = (y - 0.0625) * 1.164;
-   u = u - 0.5;
-   v = v - 0.5;
-   r = y + (1.402   * v);
-   g = y - (0.34414 * u) - (0.71414 * v);
-   b = y + (1.772   * u);
-   gl_FragColor = vec4(r, g, b, 1.0) * col;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/yuv_mask_frag.shd b/src/modules/evas/engines/gl_common/shader/yuv_mask_frag.shd
deleted file mode 100644 (file)
index 3f2185a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texu, texv, texm;
-varying vec4 col;
-varying vec2 tex_c, tex_c2, tex_c3, tex_m;
-void main()
-{
-   float r, g, b, y, u, v;
-   y = texture2D(tex, tex_c.xy).r;
-   u = texture2D(texu, tex_c2.xy).r;
-   v = texture2D(texv, tex_c3.xy).r;
-   y = (y - 0.0625) * 1.164;
-   u = u - 0.5;
-   v = v - 0.5;
-   r = y + (1.402   * v);
-   g = y - (0.34414 * u) - (0.71414 * v);
-   b = y + (1.772   * u);
-   gl_FragColor = vec4(r, g, b, 1.0) * texture2D(texm, tex_m.xy).a * col;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/yuv_mask_vert.shd b/src/modules/evas/engines/gl_common/shader/yuv_mask_vert.shd
deleted file mode 100644 (file)
index 8962d9b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec4 mask_coord;
-attribute vec2 tex_coord, tex_coord2, tex_coord3;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c, tex_c2, tex_c3, tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_c2 = tex_coord2;
-   tex_c3 = tex_coord3;
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/yuv_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/yuv_nomul_frag.shd
deleted file mode 100644 (file)
index ce24622..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texu, texv;
-varying vec2 tex_c, tex_c2, tex_c3;
-void main()
-{
-   float r, g, b, y, u, v;
-   y = texture2D(tex, tex_c.xy).r;
-   u = texture2D(texu, tex_c2.xy).r;
-   v = texture2D(texv, tex_c3.xy).r;
-   y = (y - 0.0625) * 1.164;
-   u = u - 0.5;
-   v = v - 0.5;
-   r = y + (1.402   * v);
-   g = y - (0.34414 * u) - (0.71414 * v);
-   b = y + (1.772   * u);
-   gl_FragColor = vec4(r, g, b, 1.0);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/yuv_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/yuv_nomul_vert.shd
deleted file mode 100644 (file)
index a83d505..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord, tex_coord2, tex_coord3;
-uniform mat4 mvp;
-varying vec2 tex_c, tex_c2, tex_c3;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_c2 = tex_coord2;
-   tex_c3 = tex_coord3;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/yuv_vert.shd b/src/modules/evas/engines/gl_common/shader/yuv_vert.shd
deleted file mode 100644 (file)
index 0ea0b2f..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord, tex_coord2, tex_coord3;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c, tex_c2, tex_c3;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_c2 = tex_coord2;
-   tex_c3 = tex_coord3;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/yuy2_frag.shd b/src/modules/evas/engines/gl_common/shader/yuy2_frag.shd
deleted file mode 100644 (file)
index 98dd91b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texuv;
-varying vec4 col;
-varying vec2 tex_c, tex_cuv;
-void main()
-{
-  float y,u,v,vmu,r,g,b;
-  y=texture2D(tex,tex_c).r;
-  u=texture2D(texuv,tex_cuv).g;
-  v=texture2D(texuv,tex_cuv).a;
-
-  u=u-0.5;
-  v=v-0.5;
-  vmu=v*0.813+u*0.391;
-  u=u*2.018;
-  v=v*1.596;
-
-  r=y+v;
-  g=y-vmu;
-  b=y+u;
-
-  gl_FragColor=vec4(r,g,b,1.0) * col;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/yuy2_mask_frag.shd b/src/modules/evas/engines/gl_common/shader/yuy2_mask_frag.shd
deleted file mode 100644 (file)
index 899ac1e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texuv, texm;
-varying vec4 col;
-varying vec2 tex_c, tex_cuv, tex_m;
-void main()
-{
-  float y,u,v,vmu,r,g,b;
-  y=texture2D(tex,tex_c).r;
-  u=texture2D(texuv,tex_cuv).g;
-  v=texture2D(texuv,tex_cuv).a;
-
-  u=u-0.5;
-  v=v-0.5;
-  vmu=v*0.813+u*0.391;
-  u=u*2.018;
-  v=v*1.596;
-
-  r=y+v;
-  g=y-vmu;
-  b=y+u;
-
-  gl_FragColor = vec4(r,g,b,1.0) * texture2D(texm, tex_m.xy).a * col;
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/yuy2_mask_vert.shd b/src/modules/evas/engines/gl_common/shader/yuy2_mask_vert.shd
deleted file mode 100644 (file)
index a4c5cb6..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec4 mask_coord;
-attribute vec2 tex_coord, tex_coord2;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c, tex_cuv, tex_m;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_cuv = vec2(tex_coord2.x * 0.5, tex_coord2.y);
-
-   // mask_coord.w contains the Y-invert flag
-   // position on screen in [0..1] range of current pixel
-   vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);
-   tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;
-}
diff --git a/src/modules/evas/engines/gl_common/shader/yuy2_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/yuy2_nomul_frag.shd
deleted file mode 100644 (file)
index fd82e2a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifdef GL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-uniform sampler2D tex, texuv;
-varying vec2 tex_c, tex_cuv;
-void main()
-{
-  float y,u,v,vmu,r,g,b;
-  y=texture2D(tex,tex_c).r;
-  u=texture2D(texuv,tex_cuv).g;
-  v=texture2D(texuv,tex_cuv).a;
-
-  u=u-0.5;
-  v=v-0.5;
-  vmu=v*0.813+u*0.391;
-  u=u*2.018;
-  v=v*1.596;
-  y=(y-0.062)*1.164;
-
-  r=y+v;
-  g=y-vmu;
-  b=y+u;
-
-  gl_FragColor=vec4(r,g,b,1.0);
-}
-
diff --git a/src/modules/evas/engines/gl_common/shader/yuy2_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/yuy2_nomul_vert.shd
deleted file mode 100644 (file)
index 05acc9c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec2 tex_coord, tex_coord2;
-uniform mat4 mvp;
-varying vec2 tex_c, tex_cuv;
-void main()
-{
-   gl_Position = mvp * vertex;
-   tex_c = tex_coord;
-   tex_cuv = vec2(tex_coord2.x * 0.5, tex_coord2.y);
-}
diff --git a/src/modules/evas/engines/gl_common/shader/yuy2_vert.shd b/src/modules/evas/engines/gl_common/shader/yuy2_vert.shd
deleted file mode 100644 (file)
index 54efb1e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef GL_ES
-precision highp float;
-#endif
-attribute vec4 vertex;
-attribute vec4 color;
-attribute vec2 tex_coord, tex_coord2;
-uniform mat4 mvp;
-varying vec4 col;
-varying vec2 tex_c, tex_cuv;
-void main()
-{
-   gl_Position = mvp * vertex;
-   col = color;
-   tex_c = tex_coord;
-   tex_cuv = vec2(tex_coord2.x * 0.5, tex_coord2.y);
-}