summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2015-03-02 20:38:41 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2015-03-02 20:47:17 +0900
commit21051d3252055aadfbd65b99b191b990839d6bba (patch)
tree3eff76eda8a6d258fbd46f61a1ec7134b5396648
parentdf5f9f7c553e705e8415511c73070eddfb9f3343 (diff)
Evas masking: Use mask_smooth to differentiate "shaders"
If mask_smooth changes, it should trigger a flush of the pipeline (and call glDrawArrays). This may or may not fix some potential bugs with masking.
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_common.h2
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_context.c58
2 files changed, 35 insertions, 25 deletions
diff --git a/src/modules/evas/engines/gl_common/evas_gl_common.h b/src/modules/evas/engines/gl_common/evas_gl_common.h
index 21bf4a7326..6a93c2c879 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_common.h
+++ b/src/modules/evas/engines/gl_common/evas_gl_common.h
@@ -468,6 +468,7 @@ struct _Evas_Engine_GL_Context
468 int cx, cy, cw, ch; 468 int cx, cy, cw, ch;
469 int smooth; 469 int smooth;
470 int blend; 470 int blend;
471 int mask_smooth;
471 int clip; 472 int clip;
472 } shader; 473 } shader;
473 struct { 474 struct {
@@ -490,7 +491,6 @@ struct _Evas_Engine_GL_Context
490 Eina_Bool use_texsam : 1; 491 Eina_Bool use_texsam : 1;
491 Eina_Bool use_texm : 1; 492 Eina_Bool use_texm : 1;
492 Eina_Bool anti_alias : 1; 493 Eina_Bool anti_alias : 1;
493 Eina_Bool mask_smooth : 1;
494 Evas_GL_Image *im; 494 Evas_GL_Image *im;
495 GLuint buffer; 495 GLuint buffer;
496 int buffer_alloc; 496 int buffer_alloc;
diff --git a/src/modules/evas/engines/gl_common/evas_gl_context.c b/src/modules/evas/engines/gl_common/evas_gl_context.c
index 878484fa54..5d00516310 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_context.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_context.c
@@ -1480,7 +1480,8 @@ _evas_gl_common_context_push(int rtype,
1480 Eina_Bool blend, 1480 Eina_Bool blend,
1481 Eina_Bool smooth, 1481 Eina_Bool smooth,
1482 Eina_Bool clip, 1482 Eina_Bool clip,
1483 int cx, int cy, int cw, int ch) 1483 int cx, int cy, int cw, int ch,
1484 Eina_Bool mask_smooth)
1484{ 1485{
1485 GLuint current_tex = 0; 1486 GLuint current_tex = 0;
1486 int pn = 0; 1487 int pn = 0;
@@ -1503,7 +1504,8 @@ _evas_gl_common_context_push(int rtype,
1503 { 1504 {
1504 if ((gc->pipe[i].region.type == rtype) 1505 if ((gc->pipe[i].region.type == rtype)
1505 && (!tex || gc->pipe[i].shader.cur_tex == current_tex) 1506 && (!tex || gc->pipe[i].shader.cur_tex == current_tex)
1506 && (!texm || gc->pipe[i].shader.cur_texm == texm->pt->texture) 1507 && (!texm || ((gc->pipe[i].shader.cur_texm == texm->pt->texture)
1508 && (gc->pipe[i].shader.mask_smooth == mask_smooth)))
1507 && (gc->pipe[i].shader.cur_prog == prog) 1509 && (gc->pipe[i].shader.cur_prog == prog)
1508 && (gc->pipe[i].shader.smooth == smooth) 1510 && (gc->pipe[i].shader.smooth == smooth)
1509 && (gc->pipe[i].shader.blend == blend) 1511 && (gc->pipe[i].shader.blend == blend)
@@ -1544,8 +1546,9 @@ _evas_gl_common_context_push(int rtype,
1544#else 1546#else
1545 if (!((gc->pipe[pn].region.type == rtype) 1547 if (!((gc->pipe[pn].region.type == rtype)
1546 && (!tex || gc->pipe[pn].shader.cur_tex == current_tex) 1548 && (!tex || gc->pipe[pn].shader.cur_tex == current_tex)
1547 && (!texa || gc->pipe[pn].shader.cur_texa == current_texa) 1549 /* && (!texa || gc->pipe[pn].shader.cur_texa == current_texa) */
1548 && (!texm || gc->pipe[pn].shader.cur_texm == current_texm) 1550 && (!texm || ((gc->pipe[i].shader.cur_texm == texm->pt->texture)
1551 && (gc->pipe[i].shader.mask_smooth == mask_smooth)))
1549 && (gc->pipe[pn].shader.cur_prog == prog) 1552 && (gc->pipe[pn].shader.cur_prog == prog)
1550 && (gc->pipe[pn].shader.smooth == smooth) 1553 && (gc->pipe[pn].shader.smooth == smooth)
1551 && (gc->pipe[pn].shader.blend == blend) 1554 && (gc->pipe[pn].shader.blend == blend)
@@ -1672,6 +1675,7 @@ again:
1672 gc->pipe[pn].shader.cur_prog = prog; 1675 gc->pipe[pn].shader.cur_prog = prog;
1673 gc->pipe[pn].shader.blend = blend; 1676 gc->pipe[pn].shader.blend = blend;
1674 gc->pipe[pn].shader.render_op = gc->dc->render_op; 1677 gc->pipe[pn].shader.render_op = gc->dc->render_op;
1678 gc->pipe[pn].shader.mask_smooth = mask_smooth;
1675 gc->pipe[pn].shader.clip = 0; 1679 gc->pipe[pn].shader.clip = 0;
1676 gc->pipe[pn].shader.cx = 0; 1680 gc->pipe[pn].shader.cx = 0;
1677 gc->pipe[pn].shader.cy = 0; 1681 gc->pipe[pn].shader.cy = 0;
@@ -1686,7 +1690,6 @@ again:
1686 gc->pipe[pn].array.use_texa = 0; 1690 gc->pipe[pn].array.use_texa = 0;
1687 gc->pipe[pn].array.use_texsam = 0; 1691 gc->pipe[pn].array.use_texsam = 0;
1688 gc->pipe[pn].array.use_texm = !!mtex; 1692 gc->pipe[pn].array.use_texm = !!mtex;
1689 gc->pipe[pn].array.mask_smooth = mask_smooth;
1690 } 1693 }
1691 else 1694 else
1692 { 1695 {
@@ -1701,7 +1704,7 @@ again:
1701 && (gc->pipe[i].shader.blend == blend) 1704 && (gc->pipe[i].shader.blend == blend)
1702 && (gc->pipe[i].shader.render_op == gc->dc->render_op) 1705 && (gc->pipe[i].shader.render_op == gc->dc->render_op)
1703 && (gc->pipe[i].shader.clip == 0) 1706 && (gc->pipe[i].shader.clip == 0)
1704 // todo: save & compare mask_smooth 1707 && (gc->pipe[i].shader.mask_smooth == mask_smooth)
1705 ) 1708 )
1706 { 1709 {
1707 found = 1; 1710 found = 1;
@@ -1726,6 +1729,7 @@ again:
1726 gc->pipe[pn].shader.cur_prog = prog; 1729 gc->pipe[pn].shader.cur_prog = prog;
1727 gc->pipe[pn].shader.blend = blend; 1730 gc->pipe[pn].shader.blend = blend;
1728 gc->pipe[pn].shader.render_op = gc->dc->render_op; 1731 gc->pipe[pn].shader.render_op = gc->dc->render_op;
1732 gc->pipe[pn].shader.mask_smooth = mask_smooth;
1729 gc->pipe[pn].shader.clip = 0; 1733 gc->pipe[pn].shader.clip = 0;
1730 gc->pipe[pn].shader.cx = 0; 1734 gc->pipe[pn].shader.cx = 0;
1731 gc->pipe[pn].shader.cy = 0; 1735 gc->pipe[pn].shader.cy = 0;
@@ -1740,7 +1744,6 @@ again:
1740 gc->pipe[pn].array.use_texa = 0; 1744 gc->pipe[pn].array.use_texa = 0;
1741 gc->pipe[pn].array.use_texsam = 0; 1745 gc->pipe[pn].array.use_texsam = 0;
1742 gc->pipe[pn].array.use_texm = !!mtex; 1746 gc->pipe[pn].array.use_texm = !!mtex;
1743 gc->pipe[pn].array.mask_smooth = mask_smooth;
1744 } 1747 }
1745 } 1748 }
1746#else 1749#else
@@ -1750,6 +1753,7 @@ again:
1750 || (gc->pipe[pn].shader.blend != blend) 1753 || (gc->pipe[pn].shader.blend != blend)
1751 || (gc->pipe[pn].shader.render_op != gc->dc->render_op) 1754 || (gc->pipe[pn].shader.render_op != gc->dc->render_op)
1752 || (gc->pipe[pn].shader.clip != 0) 1755 || (gc->pipe[pn].shader.clip != 0)
1756 || (mtex && (gc->pipe[pn].shader.mask_smooth != mask_smooth))
1753 ) 1757 )
1754 { 1758 {
1755 shader_array_flush(gc); 1759 shader_array_flush(gc);
@@ -1760,6 +1764,7 @@ again:
1760 gc->pipe[pn].shader.cur_prog = prog; 1764 gc->pipe[pn].shader.cur_prog = prog;
1761 gc->pipe[pn].shader.blend = blend; 1765 gc->pipe[pn].shader.blend = blend;
1762 gc->pipe[pn].shader.render_op = gc->dc->render_op; 1766 gc->pipe[pn].shader.render_op = gc->dc->render_op;
1767 gc->pipe[pn].shader.mask_smooth = mask_smooth;
1763 gc->pipe[pn].shader.clip = 0; 1768 gc->pipe[pn].shader.clip = 0;
1764 gc->pipe[pn].shader.cx = 0; 1769 gc->pipe[pn].shader.cx = 0;
1765 gc->pipe[pn].shader.cy = 0; 1770 gc->pipe[pn].shader.cy = 0;
@@ -1777,7 +1782,6 @@ again:
1777 gc->pipe[pn].array.use_texa = 0; 1782 gc->pipe[pn].array.use_texa = 0;
1778 gc->pipe[pn].array.use_texsam = 0; 1783 gc->pipe[pn].array.use_texsam = 0;
1779 gc->pipe[pn].array.use_texm = !!mtex; 1784 gc->pipe[pn].array.use_texm = !!mtex;
1780 gc->pipe[pn].array.mask_smooth = mask_smooth;
1781#endif 1785#endif
1782 1786
1783 pipe_region_expand(gc, pn, x, y, w, h); 1787 pipe_region_expand(gc, pn, x, y, w, h);
@@ -1999,7 +2003,8 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
1999 x, y, w, h, 2003 x, y, w, h,
2000 blend, 2004 blend,
2001 smooth, 2005 smooth,
2002 0, 0, 0, 0, 0); 2006 0, 0, 0, 0, 0,
2007 mask_smooth);
2003 2008
2004 gc->pipe[pn].region.type = RTYPE_IMAGE; 2009 gc->pipe[pn].region.type = RTYPE_IMAGE;
2005 gc->pipe[pn].shader.id = shader; 2010 gc->pipe[pn].shader.id = shader;
@@ -2007,6 +2012,7 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
2007 gc->pipe[pn].shader.cur_texm = mtex ? mtex->pt->texture : 0; 2012 gc->pipe[pn].shader.cur_texm = mtex ? mtex->pt->texture : 0;
2008 gc->pipe[pn].shader.cur_prog = prog; 2013 gc->pipe[pn].shader.cur_prog = prog;
2009 gc->pipe[pn].shader.smooth = smooth; 2014 gc->pipe[pn].shader.smooth = smooth;
2015 gc->pipe[pn].shader.mask_smooth = mask_smooth;
2010 gc->pipe[pn].shader.blend = blend; 2016 gc->pipe[pn].shader.blend = blend;
2011 gc->pipe[pn].shader.render_op = render_op; 2017 gc->pipe[pn].shader.render_op = render_op;
2012 gc->pipe[pn].shader.clip = 0; 2018 gc->pipe[pn].shader.clip = 0;
@@ -2023,7 +2029,6 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc,
2023 gc->pipe[pn].array.use_texuv3 = 0; 2029 gc->pipe[pn].array.use_texuv3 = 0;
2024 gc->pipe[pn].array.use_texm = !!mtex; 2030 gc->pipe[pn].array.use_texm = !!mtex;
2025 gc->pipe[pn].array.use_texsam = sam; 2031 gc->pipe[pn].array.use_texsam = sam;
2026 gc->pipe[pn].array.mask_smooth = mask_smooth;
2027 2032
2028 pipe_region_expand(gc, pn, x, y, w, h); 2033 pipe_region_expand(gc, pn, x, y, w, h);
2029 PIPE_GROW(gc, pn, 6); 2034 PIPE_GROW(gc, pn, 6);
@@ -2089,7 +2094,8 @@ evas_gl_common_context_font_push(Evas_Engine_GL_Context *gc,
2089 x, y, w, h, 2094 x, y, w, h,
2090 1, 2095 1,
2091 0, 2096 0,
2092 0, 0, 0, 0, 0); 2097 0, 0, 0, 0, 0,
2098 mask_smooth);
2093 2099
2094 gc->pipe[pn].region.type = RTYPE_FONT; 2100 gc->pipe[pn].region.type = RTYPE_FONT;
2095 gc->pipe[pn].shader.id = shader; 2101 gc->pipe[pn].shader.id = shader;
@@ -2099,6 +2105,7 @@ evas_gl_common_context_font_push(Evas_Engine_GL_Context *gc,
2099 gc->pipe[pn].shader.smooth = 0; 2105 gc->pipe[pn].shader.smooth = 0;
2100 gc->pipe[pn].shader.blend = 1; 2106 gc->pipe[pn].shader.blend = 1;
2101 gc->pipe[pn].shader.render_op = gc->dc->render_op; 2107 gc->pipe[pn].shader.render_op = gc->dc->render_op;
2108 gc->pipe[pn].shader.mask_smooth = mask_smooth;
2102 gc->pipe[pn].shader.clip = 0; 2109 gc->pipe[pn].shader.clip = 0;
2103 gc->pipe[pn].shader.cx = 0; 2110 gc->pipe[pn].shader.cx = 0;
2104 gc->pipe[pn].shader.cy = 0; 2111 gc->pipe[pn].shader.cy = 0;
@@ -2112,7 +2119,6 @@ evas_gl_common_context_font_push(Evas_Engine_GL_Context *gc,
2112 gc->pipe[pn].array.use_texuv3 = 0; 2119 gc->pipe[pn].array.use_texuv3 = 0;
2113 gc->pipe[pn].array.use_texm = !!mtex; 2120 gc->pipe[pn].array.use_texm = !!mtex;
2114 gc->pipe[pn].array.use_texsam = 0; 2121 gc->pipe[pn].array.use_texsam = 0;
2115 gc->pipe[pn].array.mask_smooth = mask_smooth;
2116 2122
2117 pipe_region_expand(gc, pn, x, y, w, h); 2123 pipe_region_expand(gc, pn, x, y, w, h);
2118 PIPE_GROW(gc, pn, 6); 2124 PIPE_GROW(gc, pn, 6);
@@ -2167,7 +2173,8 @@ evas_gl_common_context_yuv_push(Evas_Engine_GL_Context *gc,
2167 x, y, w, h, 2173 x, y, w, h,
2168 blend, 2174 blend,
2169 smooth, 2175 smooth,
2170 0, 0, 0, 0, 0); 2176 0, 0, 0, 0, 0,
2177 mask_smooth);
2171 2178
2172 gc->pipe[pn].region.type = RTYPE_YUV; 2179 gc->pipe[pn].region.type = RTYPE_YUV;
2173 gc->pipe[pn].shader.id = shader; 2180 gc->pipe[pn].shader.id = shader;
@@ -2179,6 +2186,7 @@ evas_gl_common_context_yuv_push(Evas_Engine_GL_Context *gc,
2179 gc->pipe[pn].shader.smooth = smooth; 2186 gc->pipe[pn].shader.smooth = smooth;
2180 gc->pipe[pn].shader.blend = blend; 2187 gc->pipe[pn].shader.blend = blend;
2181 gc->pipe[pn].shader.render_op = gc->dc->render_op; 2188 gc->pipe[pn].shader.render_op = gc->dc->render_op;
2189 gc->pipe[pn].shader.mask_smooth = mask_smooth;
2182 gc->pipe[pn].shader.clip = 0; 2190 gc->pipe[pn].shader.clip = 0;
2183 gc->pipe[pn].shader.cx = 0; 2191 gc->pipe[pn].shader.cx = 0;
2184 gc->pipe[pn].shader.cy = 0; 2192 gc->pipe[pn].shader.cy = 0;
@@ -2192,7 +2200,6 @@ evas_gl_common_context_yuv_push(Evas_Engine_GL_Context *gc,
2192 gc->pipe[pn].array.use_texuv3 = 1; 2200 gc->pipe[pn].array.use_texuv3 = 1;
2193 gc->pipe[pn].array.use_texm = !!mtex; 2201 gc->pipe[pn].array.use_texm = !!mtex;
2194 gc->pipe[pn].array.use_texsam = 0; 2202 gc->pipe[pn].array.use_texsam = 0;
2195 gc->pipe[pn].array.mask_smooth = mask_smooth;
2196 2203
2197 pipe_region_expand(gc, pn, x, y, w, h); 2204 pipe_region_expand(gc, pn, x, y, w, h);
2198 PIPE_GROW(gc, pn, 6); 2205 PIPE_GROW(gc, pn, 6);
@@ -2244,7 +2251,8 @@ evas_gl_common_context_yuy2_push(Evas_Engine_GL_Context *gc,
2244 x, y, w, h, 2251 x, y, w, h,
2245 blend, 2252 blend,
2246 smooth, 2253 smooth,
2247 0, 0, 0, 0, 0); 2254 0, 0, 0, 0, 0,
2255 mask_smooth);
2248 2256
2249 gc->pipe[pn].region.type = RTYPE_YUY2; 2257 gc->pipe[pn].region.type = RTYPE_YUY2;
2250 gc->pipe[pn].shader.id = shader; 2258 gc->pipe[pn].shader.id = shader;
@@ -2255,6 +2263,7 @@ evas_gl_common_context_yuy2_push(Evas_Engine_GL_Context *gc,
2255 gc->pipe[pn].shader.smooth = smooth; 2263 gc->pipe[pn].shader.smooth = smooth;
2256 gc->pipe[pn].shader.blend = blend; 2264 gc->pipe[pn].shader.blend = blend;
2257 gc->pipe[pn].shader.render_op = gc->dc->render_op; 2265 gc->pipe[pn].shader.render_op = gc->dc->render_op;
2266 gc->pipe[pn].shader.mask_smooth = mask_smooth;
2258 gc->pipe[pn].shader.clip = 0; 2267 gc->pipe[pn].shader.clip = 0;
2259 gc->pipe[pn].shader.cx = 0; 2268 gc->pipe[pn].shader.cx = 0;
2260 gc->pipe[pn].shader.cy = 0; 2269 gc->pipe[pn].shader.cy = 0;
@@ -2268,7 +2277,6 @@ evas_gl_common_context_yuy2_push(Evas_Engine_GL_Context *gc,
2268 gc->pipe[pn].array.use_texuv3 = 0; 2277 gc->pipe[pn].array.use_texuv3 = 0;
2269 gc->pipe[pn].array.use_texm = !!mtex; 2278 gc->pipe[pn].array.use_texm = !!mtex;
2270 gc->pipe[pn].array.use_texsam = 0; 2279 gc->pipe[pn].array.use_texsam = 0;
2271 gc->pipe[pn].array.mask_smooth = mask_smooth;
2272 2280
2273 pipe_region_expand(gc, pn, x, y, w, h); 2281 pipe_region_expand(gc, pn, x, y, w, h);
2274 PIPE_GROW(gc, pn, 6); 2282 PIPE_GROW(gc, pn, 6);
@@ -2319,7 +2327,8 @@ evas_gl_common_context_nv12_push(Evas_Engine_GL_Context *gc,
2319 x, y, w, h, 2327 x, y, w, h,
2320 blend, 2328 blend,
2321 smooth, 2329 smooth,
2322 0, 0, 0, 0, 0); 2330 0, 0, 0, 0, 0,
2331 mask_smooth);
2323 2332
2324 gc->pipe[pn].region.type = RTYPE_NV12; 2333 gc->pipe[pn].region.type = RTYPE_NV12;
2325 gc->pipe[pn].shader.id = shader; 2334 gc->pipe[pn].shader.id = shader;
@@ -2332,6 +2341,7 @@ evas_gl_common_context_nv12_push(Evas_Engine_GL_Context *gc,
2332 gc->pipe[pn].shader.smooth = smooth; 2341 gc->pipe[pn].shader.smooth = smooth;
2333 gc->pipe[pn].shader.blend = blend; 2342 gc->pipe[pn].shader.blend = blend;
2334 gc->pipe[pn].shader.render_op = gc->dc->render_op; 2343 gc->pipe[pn].shader.render_op = gc->dc->render_op;
2344 gc->pipe[pn].shader.mask_smooth = mask_smooth;
2335 gc->pipe[pn].shader.clip = 0; 2345 gc->pipe[pn].shader.clip = 0;
2336 gc->pipe[pn].shader.cx = 0; 2346 gc->pipe[pn].shader.cx = 0;
2337 gc->pipe[pn].shader.cy = 0; 2347 gc->pipe[pn].shader.cy = 0;
@@ -2345,7 +2355,6 @@ evas_gl_common_context_nv12_push(Evas_Engine_GL_Context *gc,
2345 gc->pipe[pn].array.use_texuv3 = 0; 2355 gc->pipe[pn].array.use_texuv3 = 0;
2346 gc->pipe[pn].array.use_texm = !!mtex; 2356 gc->pipe[pn].array.use_texm = !!mtex;
2347 gc->pipe[pn].array.use_texsam = 0; 2357 gc->pipe[pn].array.use_texsam = 0;
2348 gc->pipe[pn].array.mask_smooth = mask_smooth;
2349 2358
2350 pipe_region_expand(gc, pn, x, y, w, h); 2359 pipe_region_expand(gc, pn, x, y, w, h);
2351 PIPE_GROW(gc, pn, 6); 2360 PIPE_GROW(gc, pn, 6);
@@ -2402,7 +2411,8 @@ evas_gl_common_context_rgb_a_pair_push(Evas_Engine_GL_Context *gc,
2402 x, y, w, h, 2411 x, y, w, h,
2403 EINA_TRUE, 2412 EINA_TRUE,
2404 smooth, 2413 smooth,
2405 EINA_FALSE, 0, 0, 0, 0); 2414 EINA_FALSE, 0, 0, 0, 0,
2415 mask_smooth);
2406 2416
2407 gc->pipe[pn].region.type = RTYPE_IMAGE; 2417 gc->pipe[pn].region.type = RTYPE_IMAGE;
2408 gc->pipe[pn].shader.id = shader; 2418 gc->pipe[pn].shader.id = shader;
@@ -2413,6 +2423,7 @@ evas_gl_common_context_rgb_a_pair_push(Evas_Engine_GL_Context *gc,
2413 gc->pipe[pn].shader.smooth = smooth; 2423 gc->pipe[pn].shader.smooth = smooth;
2414 gc->pipe[pn].shader.blend = EINA_TRUE; 2424 gc->pipe[pn].shader.blend = EINA_TRUE;
2415 gc->pipe[pn].shader.render_op = gc->dc->render_op; 2425 gc->pipe[pn].shader.render_op = gc->dc->render_op;
2426 gc->pipe[pn].shader.mask_smooth = mask_smooth;
2416 gc->pipe[pn].shader.clip = 0; 2427 gc->pipe[pn].shader.clip = 0;
2417 gc->pipe[pn].shader.cx = 0; 2428 gc->pipe[pn].shader.cx = 0;
2418 gc->pipe[pn].shader.cy = 0; 2429 gc->pipe[pn].shader.cy = 0;
@@ -2428,7 +2439,6 @@ evas_gl_common_context_rgb_a_pair_push(Evas_Engine_GL_Context *gc,
2428 gc->pipe[pn].array.use_texa = EINA_TRUE; 2439 gc->pipe[pn].array.use_texa = EINA_TRUE;
2429 gc->pipe[pn].array.use_texsam = 0; 2440 gc->pipe[pn].array.use_texsam = 0;
2430 gc->pipe[pn].array.use_texm = !!mtex; 2441 gc->pipe[pn].array.use_texm = !!mtex;
2431 gc->pipe[pn].array.mask_smooth = mask_smooth;
2432 2442
2433 pipe_region_expand(gc, pn, x, y, w, h); 2443 pipe_region_expand(gc, pn, x, y, w, h);
2434 PIPE_GROW(gc, pn, 6); 2444 PIPE_GROW(gc, pn, 6);
@@ -2623,7 +2633,8 @@ evas_gl_common_context_image_map_push(Evas_Engine_GL_Context *gc,
2623 x, y, w, h, 2633 x, y, w, h,
2624 blend, 2634 blend,
2625 smooth, 2635 smooth,
2626 clip, cx, cy, cw, ch); 2636 clip, cx, cy, cw, ch,
2637 mask_smooth);
2627 gc->pipe[pn].region.type = RTYPE_MAP; 2638 gc->pipe[pn].region.type = RTYPE_MAP;
2628 gc->pipe[pn].shader.id = shader; 2639 gc->pipe[pn].shader.id = shader;
2629 gc->pipe[pn].shader.cur_tex = tex->pt->texture; 2640 gc->pipe[pn].shader.cur_tex = tex->pt->texture;
@@ -2644,6 +2655,7 @@ evas_gl_common_context_image_map_push(Evas_Engine_GL_Context *gc,
2644 gc->pipe[pn].shader.smooth = smooth; 2655 gc->pipe[pn].shader.smooth = smooth;
2645 gc->pipe[pn].shader.blend = blend; 2656 gc->pipe[pn].shader.blend = blend;
2646 gc->pipe[pn].shader.render_op = gc->dc->render_op; 2657 gc->pipe[pn].shader.render_op = gc->dc->render_op;
2658 gc->pipe[pn].shader.mask_smooth = mask_smooth;
2647 gc->pipe[pn].shader.clip = clip; 2659 gc->pipe[pn].shader.clip = clip;
2648 gc->pipe[pn].shader.cx = cx; 2660 gc->pipe[pn].shader.cx = cx;
2649 gc->pipe[pn].shader.cy = cy; 2661 gc->pipe[pn].shader.cy = cy;
@@ -2658,7 +2670,6 @@ evas_gl_common_context_image_map_push(Evas_Engine_GL_Context *gc,
2658 gc->pipe[pn].array.use_texm = !!mtex; 2670 gc->pipe[pn].array.use_texm = !!mtex;
2659 gc->pipe[pn].array.use_texa = !!mtex; 2671 gc->pipe[pn].array.use_texa = !!mtex;
2660 gc->pipe[pn].array.use_texsam = gc->pipe[pn].array.use_texm; 2672 gc->pipe[pn].array.use_texsam = gc->pipe[pn].array.use_texm;
2661 gc->pipe[pn].array.mask_smooth = mask_smooth;
2662 2673
2663 pipe_region_expand(gc, pn, x, y, w, h); 2674 pipe_region_expand(gc, pn, x, y, w, h);
2664 PIPE_GROW(gc, pn, 6); 2675 PIPE_GROW(gc, pn, 6);
@@ -3352,7 +3363,7 @@ shader_array_flush(Evas_Engine_GL_Context *gc)
3352 if (shared->info.anisotropic > 0.0) 3363 if (shared->info.anisotropic > 0.0)
3353 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, shared->info.anisotropic); 3364 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, shared->info.anisotropic);
3354#endif 3365#endif
3355 if (gc->pipe[i].array.mask_smooth) 3366 if (gc->pipe[i].shader.mask_smooth)
3356 { 3367 {
3357 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 3368 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
3358 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 3369 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
@@ -3430,7 +3441,6 @@ shader_array_flush(Evas_Engine_GL_Context *gc)
3430 gc->pipe[i].array.use_texa = 0; 3441 gc->pipe[i].array.use_texa = 0;
3431 gc->pipe[i].array.use_texsam = 0; 3442 gc->pipe[i].array.use_texsam = 0;
3432 gc->pipe[i].array.use_texm = 0; 3443 gc->pipe[i].array.use_texm = 0;
3433 gc->pipe[i].array.mask_smooth = 0;
3434 3444
3435 gc->pipe[i].array.vertex = NULL; 3445 gc->pipe[i].array.vertex = NULL;
3436 gc->pipe[i].array.color = NULL; 3446 gc->pipe[i].array.color = NULL;