aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2015-04-01 09:58:05 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2015-04-01 09:59:49 +0900
commit740995e089c3318585875ed000490426e22bfc11 (patch)
tree8e30e4cc53266ad78d2fde3a354f2372cc9e83e5
parentEvas masking: Refactor GL code (diff)
downloadefl-740995e089c3318585875ed000490426e22bfc11.tar.gz
Evas GL generic: Simplify "scaled" images (used for masking)
Invert the meaning of scaled (w,h), so that im->(w,h) corresponds to the final scaled size, and the original size is stored directly in the texture itself. This simplifies code a little bit. Also, lift the limitation on the maximum texture size, as those virtual textures are not limited by GPU texture size.
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_common.h1
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_font.c18
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_image.c37
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_rectangle.c14
-rw-r--r--src/modules/evas/engines/gl_generic/evas_engine.c12
5 files changed, 19 insertions, 63 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 4556093532..fe111834e6 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_common.h
+++ b/src/modules/evas/engines/gl_common/evas_gl_common.h
@@ -619,7 +619,6 @@ struct _Evas_GL_Image
struct {
Evas_GL_Image *origin;
- int w, h;
Eina_Bool smooth : 1;
} scaled;
diff --git a/src/modules/evas/engines/gl_common/evas_gl_font.c b/src/modules/evas/engines/gl_common/evas_gl_font.c
index 95ac669f50..f7001fbe64 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_font.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_font.c
@@ -85,19 +85,11 @@ evas_gl_font_texture_draw(void *context, void *surface EINA_UNUSED, void *draw_c
if (mtex && mtex->pt && mtex->pt->w && mtex->pt->h)
{
// canvas coords
- mx = dc->clip.mask_x;
- my = dc->clip.mask_y;
- if (mask->scaled.origin)
- {
- mw = mask->scaled.w;
- mh = mask->scaled.h;
- mask_smooth = mask->scaled.smooth;
- }
- else
- {
- mw = mask->w;
- mh = mask->h;
- }
+ mx = gc->dc->clip.mask_x;
+ my = gc->dc->clip.mask_y;
+ mw = mask->w;
+ mh = mask->h;
+ mask_smooth = mask->scaled.smooth;
}
else mtex = NULL;
diff --git a/src/modules/evas/engines/gl_common/evas_gl_image.c b/src/modules/evas/engines/gl_common/evas_gl_image.c
index 24b156bc8c..1541afd881 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_image.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_image.c
@@ -960,24 +960,11 @@ evas_gl_common_image_map_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im,
if (mtex && mtex->pt && mtex->pt->w && mtex->pt->h)
{
// canvas coords
- mx = dc->clip.mask_x;
- my = dc->clip.mask_y;
- if (mask->scaled.origin)
- {
- mw = mask->scaled.w;
- mh = mask->scaled.h;
- //scalex = mask->w / (double)mask->scaled.w;
- //scaley = mask->h / (double)mask->scaled.h;
- mask_smooth = mask->scaled.smooth;
- }
- else
- {
- mw = mask->w;
- mh = mask->h;
- }
- //if (c) RECTS_CLIP_TO_RECT(mx, my, mw, mh, cx, cy, cw, ch);
- //mx = mx - dc->clip.mask_x;
- //my = my - dc->clip.mask_y;
+ mx = gc->dc->clip.mask_x;
+ my = gc->dc->clip.mask_y;
+ mw = mask->w;
+ mh = mask->h;
+ mask_smooth = mask->scaled.smooth;
}
else mtex = NULL;
@@ -1016,17 +1003,9 @@ _evas_gl_common_image_push(Evas_Engine_GL_Context *gc, Evas_GL_Image *im,
// canvas coords
mx = gc->dc->clip.mask_x;
my = gc->dc->clip.mask_y;
- if (mask->scaled.origin)
- {
- mw = mask->scaled.w;
- mh = mask->scaled.h;
- mask_smooth = mask->scaled.smooth;
- }
- else
- {
- mw = mask->w;
- mh = mask->h;
- }
+ mw = mask->w;
+ mh = mask->h;
+ mask_smooth = mask->scaled.smooth;
}
else mtex = NULL;
diff --git a/src/modules/evas/engines/gl_common/evas_gl_rectangle.c b/src/modules/evas/engines/gl_common/evas_gl_rectangle.c
index c13252aac4..d0042c9264 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_rectangle.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_rectangle.c
@@ -35,17 +35,9 @@ evas_gl_common_rect_draw(Evas_Engine_GL_Context *gc, int x, int y, int w, int h)
// canvas coords
mx = gc->dc->clip.mask_x;
my = gc->dc->clip.mask_y;
- if (mask->scaled.origin)
- {
- mw = mask->scaled.w;
- mh = mask->scaled.h;
- mask_smooth = mask->scaled.smooth;
- }
- else
- {
- mw = mask->w;
- mh = mask->h;
- }
+ mw = mask->w;
+ mh = mask->h;
+ mask_smooth = mask->scaled.smooth;
}
else mtex = NULL;
diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c
index 627e5c0477..dac9232c5f 100644
--- a/src/modules/evas/engines/gl_generic/evas_engine.c
+++ b/src/modules/evas/engines/gl_generic/evas_engine.c
@@ -989,12 +989,8 @@ eng_image_scaled_update(void *data EINA_UNUSED, void *scaled, void *image,
if (!src) return NULL;
gc = src->gc;
- if ((dst_w > gc->shared->info.max_texture_size) ||
- (dst_h > gc->shared->info.max_texture_size))
- return NULL;
-
if (dst && (dst->scaled.origin == src) &&
- (dst->scaled.w == dst_w) && (dst->scaled.h == dst_h))
+ (dst->w == dst_w) && (dst->h == dst_h))
return dst;
if (dst)
@@ -1020,16 +1016,14 @@ eng_image_scaled_update(void *data EINA_UNUSED, void *scaled, void *image,
dst->gc = gc;
dst->cs.space = src->cs.space;
dst->alpha = alpha;
- dst->w = src->w;
- dst->h = src->h;
+ dst->w = dst_w;
+ dst->h = dst_h;
dst->tex = src->tex;
dst->tex->references++;
dst->tex_only = 1;
if (!reffed) src->references++;
dst->scaled.origin = src;
- dst->scaled.w = dst_w;
- dst->scaled.h = dst_h;
dst->scaled.smooth = smooth;
return dst;