Work around new intel Mesa/xorg bug where alpha
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 13 Apr 2013 16:12:35 +0000 (01:12 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 13 Apr 2013 16:14:58 +0000 (01:14 +0900)
channel in NON-ARGB windows is not filled in with 0xff
even if all the code does things right.

39 files changed:
ChangeLog
NEWS
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/evas_gl_shader.c
src/modules/evas/engines/gl_common/shader/compile.sh
src/modules/evas/engines/gl_common/shader/tex_12_afill_frag.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_12_afill_frag.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_12_afill_vert.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_12_afill_vert.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_21_afill_frag.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_21_afill_frag.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_21_afill_vert.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_21_afill_vert.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_22_afill_frag.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_22_afill_frag.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_22_afill_vert.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_22_afill_vert.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_afill_frag.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_afill_frag.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_afill_vert.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_afill_vert.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.shd [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.h [new file with mode: 0644]
src/modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.shd [new file with mode: 0644]

index a7c165d..463da60 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-04-14  Carsten Haitzler (The Rasterman)
+
+        * Evas: Work around new intel Mesa/xorg bug where alpha
+        channel in NON-ARGB windows is not filled in with 0xff even if all the
+        code does things right.
+
 2013-04-13  ChunEon Park
 
         * Evas: Don't be crashed even if the map image size is 0.
diff --git a/NEWS b/NEWS
index 17d5993..dd591e2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -149,6 +149,7 @@ Improvements:
     * Edje: use Eina_Cow to reduce memory usage.
     * Embryo: use eina_file_mkstemp().
     * Evas textblock : Added split cursor for BiDi text
+    * Evas works around MESA/intel xorg bug where alpha channel of non-argb windows is not filled in with 0xff.
 
 Fixes:
     * Fix a memory leak in ecore_con_dns when using ecore_con_server_connect
index fda1fef..ae87ce7 100644 (file)
@@ -501,6 +501,22 @@ modules/evas/engines/gl_common/shader/tex_frag.h \
 modules/evas/engines/gl_common/shader/tex_nomul_frag.h \
 modules/evas/engines/gl_common/shader/tex_nomul_vert.h \
 modules/evas/engines/gl_common/shader/tex_vert.h \
+modules/evas/engines/gl_common/shader/tex_12_afill_frag.h \
+modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.h \
+modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.h \
+modules/evas/engines/gl_common/shader/tex_12_afill_vert.h \
+modules/evas/engines/gl_common/shader/tex_21_afill_frag.h \
+modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.h \
+modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.h \
+modules/evas/engines/gl_common/shader/tex_21_afill_vert.h \
+modules/evas/engines/gl_common/shader/tex_22_afill_frag.h \
+modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.h \
+modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.h \
+modules/evas/engines/gl_common/shader/tex_22_afill_vert.h \
+modules/evas/engines/gl_common/shader/tex_afill_frag.h \
+modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.h \
+modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.h \
+modules/evas/engines/gl_common/shader/tex_afill_vert.h \
 modules/evas/engines/gl_common/shader/yuv_frag.h \
 modules/evas/engines/gl_common/shader/yuv_nomul_frag.h \
 modules/evas/engines/gl_common/shader/yuv_nomul_vert.h \
index 93c0b83..1bffda5 100644 (file)
@@ -157,6 +157,8 @@ typedef enum {
   SHADER_IMG_BGRA_NOMUL,
   SHADER_TEX,
   SHADER_TEX_NOMUL,
+  SHADER_TEX_AFILL,
+  SHADER_TEX_NOMUL_AFILL,
    
   SHADER_IMG_21,
   SHADER_IMG_21_NOMUL,
@@ -164,6 +166,8 @@ typedef enum {
   SHADER_IMG_21_BGRA_NOMUL,
   SHADER_TEX_21,
   SHADER_TEX_21_NOMUL,
+  SHADER_TEX_21_AFILL,
+  SHADER_TEX_21_NOMUL_AFILL,
    
   SHADER_IMG_12,
   SHADER_IMG_12_NOMUL,
@@ -171,6 +175,8 @@ typedef enum {
   SHADER_IMG_12_BGRA_NOMUL,
   SHADER_TEX_12,
   SHADER_TEX_12_NOMUL,
+  SHADER_TEX_12_AFILL,
+  SHADER_TEX_12_NOMUL_AFILL,
    
   SHADER_IMG_22,
   SHADER_IMG_22_NOMUL,
@@ -178,6 +184,8 @@ typedef enum {
   SHADER_IMG_22_BGRA_NOMUL,
   SHADER_TEX_22,
   SHADER_TEX_22_NOMUL,
+  SHADER_TEX_22_AFILL,
+  SHADER_TEX_22_NOMUL_AFILL,
    
   SHADER_YUV,
   SHADER_YUV_NOMUL,
index 30571b8..f936bc3 100644 (file)
@@ -1574,26 +1574,42 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
           {
              if ((smooth) && ((sw >= (w * 2)) && (sh >= (h * 2))))
                {
-                  prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
-                                                                         SHADER_TEX_22_NOMUL, SHADER_TEX_22)].prog;
+                  if ((!tex->alpha) && (tex->pt->native))
+                    prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
+                                                                           SHADER_TEX_22_NOMUL_AFILL, SHADER_TEX_22_AFILL)].prog;
+                  else
+                    prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
+                                                                           SHADER_TEX_22_NOMUL, SHADER_TEX_22)].prog;
                   sam = 1;
                }
              else if ((smooth) && (sw >= (w * 2)))
                {
-                  prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
-                                                                         SHADER_TEX_21_NOMUL, SHADER_TEX_21)].prog;
+                  if ((!tex->alpha) && (tex->pt->native))
+                    prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
+                                                                           SHADER_TEX_21_NOMUL_AFILL, SHADER_TEX_21_AFILL)].prog;
+                  else
+                    prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
+                                                                           SHADER_TEX_21_NOMUL, SHADER_TEX_21)].prog;
                   sam = 1;
                }
              else if ((smooth) && (sh >= (h * 2)))
                {
-                  prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
-                                                                         SHADER_TEX_12_NOMUL, SHADER_TEX_12)].prog;
+                  if ((!tex->alpha) && (tex->pt->native))
+                    prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
+                                                                           SHADER_TEX_12_NOMUL_AFILL, SHADER_TEX_12_AFILL)].prog;
+                  else
+                    prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
+                                                                           SHADER_TEX_12_NOMUL, SHADER_TEX_12)].prog;
                   sam = 1;
                }
              else
                {
-                  prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
-                                                                         SHADER_TEX_NOMUL, SHADER_TEX)].prog;
+                  if ((!tex->alpha) && (tex->pt->native))
+                    prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
+                                                                           SHADER_TEX_NOMUL_AFILL, SHADER_TEX_AFILL)].prog;
+                  else
+                    prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a,
+                                                                           SHADER_TEX_NOMUL, SHADER_TEX)].prog;
                }
           }
      }
index 76402fc..5d6bceb 100644 (file)
@@ -159,6 +159,25 @@ Evas_GL_Program_Source shader_tex_vert_src =
 };
 
 /////////////////////////////////////////////
+const char tex_afill_frag_glsl[] =
+#include "shader/tex_afill_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_afill_frag_src =
+{
+   tex_afill_frag_glsl,
+   NULL, 0
+};
+
+const char tex_afill_vert_glsl[] =
+#include "shader/tex_afill_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_afill_vert_src =
+{
+   tex_afill_vert_glsl,
+   NULL, 0
+};
+
+/////////////////////////////////////////////
 const char tex_nomul_frag_glsl[] =
 #include "shader/tex_nomul_frag.h"
   ;
@@ -177,6 +196,25 @@ Evas_GL_Program_Source shader_tex_nomul_vert_src =
    NULL, 0
 };
 
+/////////////////////////////////////////////
+const char tex_nomul_afill_frag_glsl[] =
+#include "shader/tex_nomul_afill_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_nomul_afill_frag_src =
+{
+   tex_nomul_afill_frag_glsl,
+   NULL, 0
+};
+
+const char tex_nomul_afill_vert_glsl[] =
+#include "shader/tex_nomul_afill_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_nomul_afill_vert_src =
+{
+   tex_nomul_afill_vert_glsl,
+   NULL, 0
+};
+
 
 
 
@@ -276,6 +314,25 @@ Evas_GL_Program_Source shader_tex_21_vert_src =
 };
 
 /////////////////////////////////////////////
+const char tex_21_afill_frag_glsl[] =
+#include "shader/tex_21_afill_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_21_afill_frag_src =
+{
+   tex_21_afill_frag_glsl,
+   NULL, 0
+};
+
+const char tex_21_afill_vert_glsl[] =
+#include "shader/tex_21_afill_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_21_afill_vert_src =
+{
+   tex_21_afill_vert_glsl,
+   NULL, 0
+};
+
+/////////////////////////////////////////////
 const char tex_21_nomul_frag_glsl[] =
 #include "shader/tex_21_nomul_frag.h"
   ;
@@ -294,6 +351,25 @@ Evas_GL_Program_Source shader_tex_21_nomul_vert_src =
    NULL, 0
 };
 
+/////////////////////////////////////////////
+const char tex_21_nomul_afill_frag_glsl[] =
+#include "shader/tex_21_nomul_afill_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_21_nomul_afill_frag_src =
+{
+   tex_21_nomul_afill_frag_glsl,
+   NULL, 0
+};
+
+const char tex_21_nomul_afill_vert_glsl[] =
+#include "shader/tex_21_nomul_afill_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_21_nomul_afill_vert_src =
+{
+   tex_21_nomul_afill_vert_glsl,
+   NULL, 0
+};
+
 
 
 
@@ -393,6 +469,25 @@ Evas_GL_Program_Source shader_tex_12_vert_src =
 };
 
 /////////////////////////////////////////////
+const char tex_12_afill_frag_glsl[] =
+#include "shader/tex_12_afill_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_12_afill_frag_src =
+{
+   tex_12_afill_frag_glsl,
+   NULL, 0
+};
+
+const char tex_12_afill_vert_glsl[] =
+#include "shader/tex_12_afill_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_12_afill_vert_src =
+{
+   tex_12_afill_vert_glsl,
+   NULL, 0
+};
+
+/////////////////////////////////////////////
 const char tex_12_nomul_frag_glsl[] =
 #include "shader/tex_12_nomul_frag.h"
   ;
@@ -411,6 +506,25 @@ Evas_GL_Program_Source shader_tex_12_nomul_vert_src =
    NULL, 0
 };
 
+/////////////////////////////////////////////
+const char tex_12_nomul_afill_frag_glsl[] =
+#include "shader/tex_12_nomul_afill_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_12_nomul_afill_frag_src =
+{
+   tex_12_nomul_afill_frag_glsl,
+   NULL, 0
+};
+
+const char tex_12_nomul_afill_vert_glsl[] =
+#include "shader/tex_12_nomul_afill_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_12_nomul_afill_vert_src =
+{
+   tex_12_nomul_afill_vert_glsl,
+   NULL, 0
+};
+
 
 
 
@@ -510,6 +624,25 @@ Evas_GL_Program_Source shader_tex_22_vert_src =
 };
 
 /////////////////////////////////////////////
+const char tex_22_afill_frag_glsl[] =
+#include "shader/tex_22_afill_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_22_afill_frag_src =
+{
+   tex_22_afill_frag_glsl,
+   NULL, 0
+};
+
+const char tex_22_afill_vert_glsl[] =
+#include "shader/tex_22_afill_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_22_afill_vert_src =
+{
+   tex_22_afill_vert_glsl,
+   NULL, 0
+};
+
+/////////////////////////////////////////////
 const char tex_22_nomul_frag_glsl[] =
 #include "shader/tex_22_nomul_frag.h"
   ;
@@ -528,6 +661,25 @@ Evas_GL_Program_Source shader_tex_22_nomul_vert_src =
    NULL, 0
 };
 
+/////////////////////////////////////////////
+const char tex_22_nomul_afill_frag_glsl[] =
+#include "shader/tex_22_nomul_afill_frag.h"
+  ;
+Evas_GL_Program_Source shader_tex_22_nomul_afill_frag_src =
+{
+   tex_22_nomul_afill_frag_glsl,
+   NULL, 0
+};
+
+const char tex_22_nomul_afill_vert_glsl[] =
+#include "shader/tex_22_nomul_afill_vert.h"
+  ;
+Evas_GL_Program_Source shader_tex_22_nomul_afill_vert_src =
+{
+   tex_22_nomul_afill_vert_glsl,
+   NULL, 0
+};
+
 
 
 
@@ -887,6 +1039,8 @@ static const struct {
   SHADER_SOURCE_LINE(IMG_BGRA_NOMUL, img_bgra_nomul),
   SHADER_SOURCE_LINE(TEX, tex),
   SHADER_SOURCE_LINE(TEX_NOMUL, tex_nomul),
+  SHADER_SOURCE_LINE(TEX_AFILL, tex_afill),
+  SHADER_SOURCE_LINE(TEX_NOMUL_AFILL, tex_nomul_afill),
    
   SHADER_SOURCE_LINE(IMG_21, img_21),
   SHADER_SOURCE_LINE(IMG_21_NOMUL, img_21_nomul),
@@ -894,6 +1048,8 @@ static const struct {
   SHADER_SOURCE_LINE(IMG_21_BGRA_NOMUL, img_21_bgra_nomul),
   SHADER_SOURCE_LINE(TEX_21, tex_21),
   SHADER_SOURCE_LINE(TEX_21_NOMUL, tex_21_nomul),
+  SHADER_SOURCE_LINE(TEX_21_AFILL, tex_21_afill),
+  SHADER_SOURCE_LINE(TEX_21_NOMUL_AFILL, tex_21_nomul_afill),
    
   SHADER_SOURCE_LINE(IMG_12, img_12),
   SHADER_SOURCE_LINE(IMG_12_NOMUL, img_12_nomul),
@@ -901,6 +1057,8 @@ static const struct {
   SHADER_SOURCE_LINE(IMG_12_BGRA_NOMUL, img_12_bgra_nomul),
   SHADER_SOURCE_LINE(TEX_12, tex_12),
   SHADER_SOURCE_LINE(TEX_12_NOMUL, tex_12_nomul),
+  SHADER_SOURCE_LINE(TEX_12_AFILL, tex_12_afill),
+  SHADER_SOURCE_LINE(TEX_12_NOMUL_AFILL, tex_12_nomul_afill),
    
   SHADER_SOURCE_LINE(IMG_22, img_22),
   SHADER_SOURCE_LINE(IMG_22_NOMUL, img_22_nomul),
@@ -908,6 +1066,8 @@ static const struct {
   SHADER_SOURCE_LINE(IMG_22_BGRA_NOMUL, img_22_bgra_nomul),
   SHADER_SOURCE_LINE(TEX_22, tex_22),
   SHADER_SOURCE_LINE(TEX_22_NOMUL, tex_22_nomul),
+  SHADER_SOURCE_LINE(TEX_22_AFILL, tex_22_afill),
+  SHADER_SOURCE_LINE(TEX_22_NOMUL_AFILL, tex_22_nomul_afill),
    
   SHADER_SOURCE_LINE(YUV, yuv),
   SHADER_SOURCE_LINE(YUV_NOMUL, yuv_nomul),
index beb424d..a039c91 100755 (executable)
@@ -25,6 +25,8 @@ compile img_bgra
 compile img_bgra_nomul
 compile tex
 compile tex_nomul
+compile tex_afill
+compile tex_nomul_afill
 
 compile img_21
 compile img_21_nomul
@@ -32,6 +34,8 @@ compile img_21_bgra
 compile img_21_bgra_nomul
 compile tex_21
 compile tex_21_nomul
+compile tex_21_afill
+compile tex_21_nomul_afill
 
 compile img_12
 compile img_12_nomul
@@ -39,6 +43,8 @@ compile img_12_bgra
 compile img_12_bgra_nomul
 compile tex_12
 compile tex_12_nomul
+compile tex_12_afill
+compile tex_12_nomul_afill
 
 compile img_22
 compile img_22_nomul
@@ -46,6 +52,8 @@ compile img_22_bgra
 compile img_22_bgra_nomul
 compile tex_22
 compile tex_22_nomul
+compile tex_22_afill
+compile tex_22_nomul_afill
 
 ## above section must have 21, 22 and 12 versions
 
diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_afill_frag.h b/src/modules/evas/engines/gl_common/shader/tex_12_afill_frag.h
new file mode 100644 (file)
index 0000000..94781bd
--- /dev/null
@@ -0,0 +1,19 @@
+"#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"
+"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"
+"   vec4 c = (col00 + col01) / div_s;\n"
+"   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;\n"
+"}\n"
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
new file mode 100644 (file)
index 0000000..ee15fdd
--- /dev/null
@@ -0,0 +1,19 @@
+#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.h b/src/modules/evas/engines/gl_common/shader/tex_12_afill_vert.h
new file mode 100644 (file)
index 0000000..56cd064
--- /dev/null
@@ -0,0 +1,21 @@
+"#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[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"
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
new file mode 100644 (file)
index 0000000..810d73a
--- /dev/null
@@ -0,0 +1,21 @@
+#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_nomul_afill_frag.h b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_frag.h
new file mode 100644 (file)
index 0000000..3b02610
--- /dev/null
@@ -0,0 +1,18 @@
+"#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"
+"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"
+"   vec4 c = (col00 + col01) / div_s;\n"
+"   gl_FragColor = vec4(c.r, c.g, c.b, 1);\n"
+"}\n"
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
new file mode 100644 (file)
index 0000000..a7bff98
--- /dev/null
@@ -0,0 +1,18 @@
+#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.h b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_afill_vert.h
new file mode 100644 (file)
index 0000000..cee10ea
--- /dev/null
@@ -0,0 +1,18 @@
+"#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[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"
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
new file mode 100644 (file)
index 0000000..40144aa
--- /dev/null
@@ -0,0 +1,18 @@
+#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_21_afill_frag.h b/src/modules/evas/engines/gl_common/shader/tex_21_afill_frag.h
new file mode 100644 (file)
index 0000000..94781bd
--- /dev/null
@@ -0,0 +1,19 @@
+"#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"
+"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"
+"   vec4 c = (col00 + col01) / div_s;\n"
+"   gl_FragColor = vec4(c.r, c.g, c.b, 1) * col;\n"
+"}\n"
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
new file mode 100644 (file)
index 0000000..ee15fdd
--- /dev/null
@@ -0,0 +1,19 @@
+#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.h b/src/modules/evas/engines/gl_common/shader/tex_21_afill_vert.h
new file mode 100644 (file)
index 0000000..88d1470
--- /dev/null
@@ -0,0 +1,21 @@
+"#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[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"
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
new file mode 100644 (file)
index 0000000..98d9154
--- /dev/null
@@ -0,0 +1,21 @@
+#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_nomul_afill_frag.h b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_frag.h
new file mode 100644 (file)
index 0000000..3b02610
--- /dev/null
@@ -0,0 +1,18 @@
+"#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"
+"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"
+"   vec4 c = (col00 + col01) / div_s;\n"
+"   gl_FragColor = vec4(c.r, c.g, c.b, 1);\n"
+"}\n"
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
new file mode 100644 (file)
index 0000000..a7bff98
--- /dev/null
@@ -0,0 +1,18 @@
+#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.h b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_afill_vert.h
new file mode 100644 (file)
index 0000000..7c7d7db
--- /dev/null
@@ -0,0 +1,18 @@
+"#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[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(-tex_sample.x, 0);\n"
+"   tex_s[1] = vec2( tex_sample.x, 0);\n"
+"   div_s = vec4(2, 2, 2, 2);\n"
+"}\n"
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
new file mode 100644 (file)
index 0000000..a6b149f
--- /dev/null
@@ -0,0 +1,18 @@
+#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_22_afill_frag.h b/src/modules/evas/engines/gl_common/shader/tex_22_afill_frag.h
new file mode 100644 (file)
index 0000000..5d2be19
--- /dev/null
@@ -0,0 +1,21 @@
+"#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"
+"varying vec2 tex_c;\n"
+"varying vec2 tex_s[4];\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"
+"   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"
+"}\n"
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
new file mode 100644 (file)
index 0000000..cb2dd2b
--- /dev/null
@@ -0,0 +1,21 @@
+#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.h b/src/modules/evas/engines/gl_common/shader/tex_22_afill_vert.h
new file mode 100644 (file)
index 0000000..e1fc7f4
--- /dev/null
@@ -0,0 +1,23 @@
+"#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"
+"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, -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"
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
new file mode 100644 (file)
index 0000000..e964ea1
--- /dev/null
@@ -0,0 +1,23 @@
+#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_nomul_afill_frag.h b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_frag.h
new file mode 100644 (file)
index 0000000..ce33563
--- /dev/null
@@ -0,0 +1,20 @@
+"#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"
+"varying vec2 tex_s[4];\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"
+"   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"
+"}\n"
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
new file mode 100644 (file)
index 0000000..c017c31
--- /dev/null
@@ -0,0 +1,20 @@
+#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.h b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_afill_vert.h
new file mode 100644 (file)
index 0000000..c6fb270
--- /dev/null
@@ -0,0 +1,20 @@
+"#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"
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
new file mode 100644 (file)
index 0000000..e6303d7
--- /dev/null
@@ -0,0 +1,20 @@
+#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_afill_frag.h b/src/modules/evas/engines/gl_common/shader/tex_afill_frag.h
new file mode 100644 (file)
index 0000000..6016853
--- /dev/null
@@ -0,0 +1,15 @@
+"#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"
+"varying vec2 tex_c;\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"
+"}\n"
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
new file mode 100644 (file)
index 0000000..9ee0c37
--- /dev/null
@@ -0,0 +1,15 @@
+#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.h b/src/modules/evas/engines/gl_common/shader/tex_afill_vert.h
new file mode 100644 (file)
index 0000000..8921d9d
--- /dev/null
@@ -0,0 +1,15 @@
+"#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"
+"varying vec2 tex_c;\n"
+"void main()\n"
+"{\n"
+"   gl_Position = mvp * vertex;\n"
+"   col = color;\n"
+"   tex_c = tex_coord;\n"
+"}\n"
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
new file mode 100644 (file)
index 0000000..606c297
--- /dev/null
@@ -0,0 +1,15 @@
+#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_nomul_afill_frag.h b/src/modules/evas/engines/gl_common/shader/tex_nomul_afill_frag.h
new file mode 100644 (file)
index 0000000..43f7e63
--- /dev/null
@@ -0,0 +1,14 @@
+"#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 = texture2D(tex, tex_c.xy);\n"
+"   gl_FragColor = vec4(c.r, c.g, c.b, 1);\n"
+"}\n"
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
new file mode 100644 (file)
index 0000000..569c32e
--- /dev/null
@@ -0,0 +1,14 @@
+#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.h b/src/modules/evas/engines/gl_common/shader/tex_nomul_afill_vert.h
new file mode 100644 (file)
index 0000000..13d5edd
--- /dev/null
@@ -0,0 +1,12 @@
+"#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"
+"void main()\n"
+"{\n"
+"   gl_Position = mvp * vertex;\n"
+"   tex_c = tex_coord;\n"
+"}\n"
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
new file mode 100644 (file)
index 0000000..74f3207
--- /dev/null
@@ -0,0 +1,12 @@
+#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;
+}