From 740995e089c3318585875ed000490426e22bfc11 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Wed, 1 Apr 2015 09:58:05 +0900 Subject: [PATCH] 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. --- .../evas/engines/gl_common/evas_gl_common.h | 1 - src/modules/evas/engines/gl_common/evas_gl_font.c | 18 +++-------- src/modules/evas/engines/gl_common/evas_gl_image.c | 37 +++++----------------- .../evas/engines/gl_common/evas_gl_rectangle.c | 14 ++------ src/modules/evas/engines/gl_generic/evas_engine.c | 12 ++----- 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 4556093..fe11183 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 95ac669..f7001fb 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 24b156b..1541afd 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 c13252a..d0042c9 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 627e5c0..dac9232 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; -- 2.7.4