summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2015-06-09 21:29:13 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2015-06-25 14:36:08 +0900
commit4882788527c037a70ca7344d370c891e53d88e61 (patch)
tree9e958299c7c336aa38647ae66a5e2796e279b46a
parentf3e16bc4854268cecc19a38671c6f68071b7955b (diff)
downloadefl-4882788527c037a70ca7344d370c891e53d88e61.tar.gz
Evas filters: Reduce debugging with default compile opts
When using debug compile flags, full-on filter debug will happen.
-rw-r--r--src/lib/evas/filters/evas_filter.c59
-rw-r--r--src/lib/evas/filters/evas_filter_blend.c26
-rw-r--r--src/lib/evas/filters/evas_filter_blur.c4
-rw-r--r--src/lib/evas/filters/evas_filter_parser.c17
-rw-r--r--src/lib/evas/filters/evas_filter_private.h14
5 files changed, 67 insertions, 53 deletions
diff --git a/src/lib/evas/filters/evas_filter.c b/src/lib/evas/filters/evas_filter.c
index d420929b63..dc022a3fd9 100644
--- a/src/lib/evas/filters/evas_filter.c
+++ b/src/lib/evas/filters/evas_filter.c
@@ -72,9 +72,6 @@ evas_filter_context_new(Evas_Public_Data *evas, Eina_Bool async)
* better and implement filters direcly with shaders.
*/
ctx->gl_engine = (evas->engine.func->gl_surface_read_pixels != NULL);
- if (ctx->gl_engine)
- DBG("Detected GL engine. All filters will still run in software (SLOW).");
-
return ctx;
}
@@ -211,7 +208,7 @@ evas_filter_context_proxy_render_all(Evas_Filter_Context *ctx, Eo *eo_obj,
_assert(fb->h == source->cur->geometry.h);
if (source->proxy->surface && !source->proxy->redraw)
{
- DBG("Source already rendered: '%s' of type '%s'",
+ XDBG("Source already rendered: '%s' of type '%s'",
fb->source_name, eo_class_name_get(eo_class_get(fb->source)));
_filter_buffer_backing_free(fb);
if (!ctx->gl_engine)
@@ -229,7 +226,7 @@ evas_filter_context_proxy_render_all(Evas_Filter_Context *ctx, Eo *eo_obj,
}
else
{
- DBG("Source needs to be rendered: '%s' of type '%s' (%s)",
+ XDBG("Source needs to be rendered: '%s' of type '%s' (%s)",
fb->source_name, eo_class_name_get(eo_class_get(fb->source)),
source->proxy->redraw ? "redraw" : "no surface");
evas_render_proxy_subrender(ctx->evas->evas, fb->source, eo_obj, obj, do_async);
@@ -247,7 +244,7 @@ evas_filter_context_proxy_render_all(Evas_Filter_Context *ctx, Eo *eo_obj,
}
fb->alpha_only = EINA_FALSE;
}
- DBG("Source has dimensions %dx%d (buffer %d)", fb->w, fb->h, fb->id);
+ XDBG("Source has dimensions %dx%d (buffer %d)", fb->w, fb->h, fb->id);
}
}
@@ -366,7 +363,7 @@ evas_filter_context_buffers_allocate_all(Evas_Filter_Context *ctx)
w = ctx->w;
h = ctx->h;
- //DBG("Allocating all buffers based on output size %ux%u", w, h);
+ XDBG("Allocating all buffers based on output size %ux%u", w, h);
EINA_INLIST_FOREACH(ctx->commands, cmd)
{
@@ -409,7 +406,7 @@ evas_filter_context_buffers_allocate_all(Evas_Filter_Context *ctx)
if (fillmode & EVAS_FILTER_FILL_MODE_STRETCH_Y)
sh = h;
- //DBG("Allocating temporary buffer of size %ux%u %s", sw, sh, in->alpha_only ? "alpha" : "rgba");
+ XDBG("Allocating temporary buffer of size %ux%u %s", sw, sh, in->alpha_only ? "alpha" : "rgba");
fb = evas_filter_buffer_alloc_new(ctx, sw, sh, in->alpha_only);
if (!fb) goto alloc_fail;
fb->transient = EINA_TRUE;
@@ -424,7 +421,7 @@ evas_filter_context_buffers_allocate_all(Evas_Filter_Context *ctx)
if (in->w) sw = in->w;
if (in->h) sh = in->h;
- //DBG("Allocating temporary buffer of size %ux%u %s", sw, sh, in->alpha_only ? "alpha" : "rgba");
+ XDBG("Allocating temporary buffer of size %ux%u %s", sw, sh, in->alpha_only ? "alpha" : "rgba");
fb = evas_filter_buffer_alloc_new(ctx, sw, sh, in->alpha_only);
if (!fb) goto alloc_fail;
fb->transient = EINA_TRUE;
@@ -464,7 +461,7 @@ evas_filter_context_buffers_allocate_all(Evas_Filter_Context *ctx)
continue;
}
- //DBG("Allocating buffer of size %ux%u %s", fb->w, fb->h, fb->alpha_only ? "alpha" : "rgba");
+ XDBG("Allocating buffer of size %ux%u %s", fb->w, fb->h, fb->alpha_only ? "alpha" : "rgba");
im = _rgba_image_alloc(fb, NULL);
if (!im) goto alloc_fail;
@@ -493,7 +490,7 @@ evas_filter_buffer_empty_new(Evas_Filter_Context *ctx, Eina_Bool alpha_only)
fb->transient = EINA_FALSE;
- DBG("Created context buffer %d", fb->id);
+ XDBG("Created context buffer %d", fb->id);
return fb->id;
}
@@ -827,7 +824,7 @@ evas_filter_command_blur_add(Evas_Filter_Context *ctx, void *drawctx,
if (dy < 0) dy = 0;
if (!dx && !dy)
{
- DBG("Changing 0px blur into simple blend");
+ XDBG("Changing 0px blur into simple blend");
return evas_filter_command_blend_add(ctx, drawctx, inbuf, outbuf, ox, oy, EVAS_FILTER_FILL_MODE_NONE);
}
@@ -943,7 +940,7 @@ evas_filter_command_blur_add(Evas_Filter_Context *ctx, void *drawctx,
else if ((blend || (in->alpha_only && !out->alpha_only)) ||
(!blend && !in->alpha_only && !out->alpha_only && (color != 0xFFFFFFFF)))
{
- DBG("Adding extra blending step %d --> %d (%s --> %s)", in->id, out->id,
+ XDBG("Adding extra blending step %d --> %d (%s --> %s)", in->id, out->id,
in->alpha_only ? "Alpha" : "RGBA",
out->alpha_only ? "Alpha" : "RGBA");
Eina_Bool wasl = in->locked;
@@ -1022,7 +1019,7 @@ evas_filter_command_blur_add(Evas_Filter_Context *ctx, void *drawctx,
if (dx)
{
- DBG("Add horizontal blur %d -> %d (%dpx)", in->id, out_dx->id, dx);
+ XDBG("Add horizontal blur %d -> %d (%dpx)", in->id, out_dx->id, dx);
cmd = _command_new(ctx, EVAS_FILTER_MODE_BLUR, in, NULL, out_dx);
if (!cmd) goto fail;
cmd->blur.type = type;
@@ -1036,7 +1033,7 @@ evas_filter_command_blur_add(Evas_Filter_Context *ctx, void *drawctx,
if (dy)
{
- DBG("Add vertical blur %d -> %d (%dpx)", in_dy->id, out_dy->id, dy);
+ XDBG("Add vertical blur %d -> %d (%dpx)", in_dy->id, out_dy->id, dy);
cmd = _command_new(ctx, EVAS_FILTER_MODE_BLUR, in_dy, NULL, out_dy);
if (!cmd) goto fail;
cmd->blur.type = type;
@@ -1053,7 +1050,7 @@ evas_filter_command_blur_add(Evas_Filter_Context *ctx, void *drawctx,
int render_op;
if (!cmd) goto fail;
- DBG("Add copy %d -> %d", copybuf->id, blur_out->id);
+ XDBG("Add copy %d -> %d", copybuf->id, blur_out->id);
cmd->ENFN->context_color_set(cmd->ENDT, drawctx, 255, 255, 255, 255);
render_op = cmd->ENFN->context_render_op_get(cmd->ENDT, drawctx);
cmd->ENFN->context_render_op_set(cmd->ENDT, drawctx, EVAS_RENDER_COPY);
@@ -1066,7 +1063,7 @@ evas_filter_command_blur_add(Evas_Filter_Context *ctx, void *drawctx,
if (blend)
{
- DBG("Add blend %d (%s) -> %d (%s)",
+ XDBG("Add blend %d (%s) -> %d (%s)",
blur_out->id, blur_out->alpha_only ? "Alpha" : "RGBA",
out->id, out->alpha_only ? "Alpha" : "RGBA");
id = evas_filter_command_blend_add(ctx, drawctx, blur_out->id, out->id, ox, oy, EVAS_FILTER_FILL_MODE_NONE);
@@ -1096,7 +1093,7 @@ evas_filter_command_blend_add(Evas_Filter_Context *ctx, void *drawctx,
if (inbuf == outbuf)
{
- DBG("Skipping NOP blend operation %d --> %d", inbuf, outbuf);
+ XDBG("Skipping NOP blend operation %d --> %d", inbuf, outbuf);
return -1;
}
@@ -1129,7 +1126,7 @@ evas_filter_command_blend_add(Evas_Filter_Context *ctx, void *drawctx,
&cmd->draw.clip.w, &cmd->draw.clip.h);
if (cmd->draw.clip_use)
- DBG("Draw clip: %d,%d,%d,%d", cmd->draw.clip.x, cmd->draw.clip.y,
+ XDBG("Draw clip: %d,%d,%d,%d", cmd->draw.clip.x, cmd->draw.clip.y,
cmd->draw.clip.w, cmd->draw.clip.h);
out->dirty = EINA_TRUE;
@@ -1149,7 +1146,7 @@ evas_filter_command_grow_add(Evas_Filter_Context *ctx, void *draw_context,
if (!radius)
{
- DBG("Changing 0px grow into simple blend");
+ XDBG("Changing 0px grow into simple blend");
return evas_filter_command_blend_add(ctx, draw_context, inbuf, outbuf, 0, 0, EVAS_FILTER_FILL_MODE_NONE);
}
@@ -1573,7 +1570,7 @@ evas_filter_target_set(Evas_Filter_Context *ctx, void *draw_context,
(ENDT, fb->w, fb->h, fb->backing->image.data, EINA_TRUE,
fb->backing->cache_entry.space);
- DBG("Set target as #%d (%p) and output #%d (%p, gl %p)",
+ XDBG("Set target as #%d (%p) and output #%d (%p, gl %p)",
ctx->target.bufid, surface, fb->id, fb->backing, fb->glimage);
}
@@ -1607,7 +1604,7 @@ _filter_target_render(Evas_Filter_Context *ctx)
surface = dst->glimage;
if (src->glimage)
{
- DBG("Using glimage from output buffer.");
+ XDBG("Using glimage from output buffer.");
if (src->backing)
ENFN->image_data_put(ENDT, src->glimage, src->backing->image.data);
}
@@ -1615,7 +1612,7 @@ _filter_target_render(Evas_Filter_Context *ctx)
{
RGBA_Image *im = src->backing;
- DBG("Creating glimage from output buffer.");
+ XDBG("Creating glimage from output buffer.");
src->glimage = ENFN->image_new_from_data(ENDT, src->w, src->h,
im->image.data, EINA_TRUE,
EVAS_COLORSPACE_ARGB8888);
@@ -1824,6 +1821,7 @@ _clip_to_target(int *sx /* OUT */, int *sy /* OUT */, int sw, int sh,
}
}
+#ifdef FILTERS_DEBUG
static const char *
_filter_name_get(int mode)
{
@@ -1841,6 +1839,7 @@ _filter_name_get(int mode)
}
#undef FNAME
}
+#endif
static Eina_Bool
_filter_command_run(Evas_Filter_Command *cmd)
@@ -1850,14 +1849,16 @@ _filter_command_run(Evas_Filter_Command *cmd)
EINA_SAFETY_ON_NULL_RETURN_VAL(cmd->output, EINA_FALSE);
EINA_SAFETY_ON_NULL_RETURN_VAL(cmd->input, EINA_FALSE);
- DBG("Command %d (%s): %d [%d] --> %d",
+#ifdef FILTERS_DEBUG
+ XDBG("Command %d (%s): %d [%d] --> %d",
cmd->id, _filter_name_get(cmd->mode),
cmd->input->id, cmd->mask ? cmd->mask->id : 0, cmd->output->id);
+#endif
if (!cmd->input->w && !cmd->input->h
&& (cmd->mode != EVAS_FILTER_MODE_FILL))
{
- DBG("Skipping processing of empty input buffer (size 0x0)");
+ XDBG("Skipping processing of empty input buffer (size 0x0)");
return EINA_TRUE;
}
@@ -1962,6 +1963,7 @@ _filter_thread_run_cb(void *data)
Eina_Bool
evas_filter_run(Evas_Filter_Context *ctx)
{
+ static int warned = 0;
Eina_Bool ret;
EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, EINA_FALSE);
@@ -1969,8 +1971,11 @@ evas_filter_run(Evas_Filter_Context *ctx)
if (!ctx->commands)
return EINA_TRUE;
- if (ctx->gl_engine)
- INF("EXPERIMENTAL OpenGL support! The text filters will be very slow!");
+ if (ctx->gl_engine && !warned)
+ {
+ DBG("OpenGL support through SW functions, expect low performance!");
+ warned = 1;
+ }
if (ctx->async)
{
diff --git a/src/lib/evas/filters/evas_filter_blend.c b/src/lib/evas/filters/evas_filter_blend.c
index e12ed64332..17be2bc3f8 100644
--- a/src/lib/evas/filters/evas_filter_blend.c
+++ b/src/lib/evas/filters/evas_filter_blend.c
@@ -323,17 +323,18 @@ _mapped_blend(void *data, void *drawctx,
int right = 0, bottom = 0, left = 0, top = 0;
int row, col, rows, cols;
Eina_Bool ret = EINA_TRUE;
+ Eina_Bool debug = eina_log_domain_level_check(_evas_filter_log_dom, 6);
EINA_SAFETY_ON_FALSE_RETURN_VAL((sx == 0) && (sy == 0), EINA_FALSE);
if (fillmode == EVAS_FILTER_FILL_MODE_NONE)
{
_clip_to_target(&sx, &sy, sw, sh, dx, dy, dw, dh, &dx, &dy, &rows, &cols);
- /*
- DBG("blend: %d,%d,%d,%d --> %d,%d,%d,%d (from %dx%d to %dx%d +%d,%d)",
- 0, 0, sw, sh, dx, dy, cols, rows, sw, sh, dw, dh, dx, dy);
- */
-
+ if (debug)
+ {
+ XDBG("blend: %d,%d,%d,%d --> %d,%d,%d,%d (from %dx%d to %dx%d +%d,%d)",
+ 0, 0, sw, sh, dx, dy, cols, rows, sw, sh, dw, dh, dx, dy);
+ }
image_draw(data, drawctx, out, in,
sx, sy, cols, rows, // src
dx, dy, cols, rows, // dst
@@ -467,13 +468,14 @@ _mapped_blend(void *data, void *drawctx,
}
if (src_w <= 0 || dst_w <= 0) break;
- /*
- DBG("blend: [%d,%d] %d,%d,%dx%d --> %d,%d,%dx%d "
- "(src %dx%d, dst %dx%d)",
- col, row, src_x, src_y, src_w, src_h,
- dst_x, dst_y, dst_w, dst_h,
- sw, sh, dw, dh);
- */
+ if (debug)
+ {
+ XDBG("blend: [%d,%d] %d,%d,%dx%d --> %d,%d,%dx%d "
+ "(src %dx%d, dst %dx%d)",
+ col, row, src_x, src_y, src_w, src_h,
+ dst_x, dst_y, dst_w, dst_h,
+ sw, sh, dw, dh);
+ }
image_draw(data, drawctx, out, in,
src_x, src_y, src_w, src_h,
dst_x, dst_y, dst_w, dst_h,
diff --git a/src/lib/evas/filters/evas_filter_blur.c b/src/lib/evas/filters/evas_filter_blur.c
index 06fb31e8ba..4c375a7410 100644
--- a/src/lib/evas/filters/evas_filter_blur.c
+++ b/src/lib/evas/filters/evas_filter_blur.c
@@ -19,7 +19,7 @@ _box_blur_auto_radius(int *radii, int r)
radii[0] = r / 2;
radii[1] = r - radii[0] - 1;
radii[2] = 0;
- DBG("Using auto radius for %d: %d %d", r, radii[0], radii[1]);
+ XDBG("Using auto radius for %d: %d %d", r, radii[0], radii[1]);
return 2;
}
else
@@ -28,7 +28,7 @@ _box_blur_auto_radius(int *radii, int r)
radii[1] = (r + 2) / 3;
radii[2] = r - radii[0] - radii[1];
radii[3] = 0;
- DBG("Using auto radius for %d: %d %d %d", r, radii[0], radii[1], radii[2]);
+ XDBG("Using auto radius for %d: %d %d %d", r, radii[0], radii[1], radii[2]);
return 3;
}
}
diff --git a/src/lib/evas/filters/evas_filter_parser.c b/src/lib/evas/filters/evas_filter_parser.c
index 8992dcb519..7bf812be75 100644
--- a/src/lib/evas/filters/evas_filter_parser.c
+++ b/src/lib/evas/filters/evas_filter_parser.c
@@ -10,10 +10,6 @@
# define LUA52 1
#endif
-#ifdef DEBUG
-# define FILTERS_DEBUG
-#endif
-
#define FILTERS_LEGACY_COMPAT
#define EVAS_FILTER_MODE_GROW (EVAS_FILTER_MODE_LAST+1)
@@ -1753,7 +1749,7 @@ _padding_set_padding_update(Evas_Filter_Program *pgm,
b = _instruction_param_geti(instr, "b", &bset);
if (!lset && !rset && !bset && !tset)
- DBG("padding_set() called without specifying any of l,r,t,b resets to 0");
+ INF("padding_set() called without specifying any of l,r,t,b resets to 0");
if (l < 0 || r < 0 || t < 0 || b < 0)
{
@@ -2141,7 +2137,7 @@ _lua_print(lua_State *L)
if (nargs < 1)
{
- DBG("LUA: (nothing)");
+ INF("(nothing)");
return 0;
}
@@ -2160,7 +2156,7 @@ _lua_print(lua_State *L)
eina_strbuf_append_char(s, ' ');
}
- INF("LUA: %s", eina_strbuf_string_get(s));
+ INF("%s", eina_strbuf_string_get(s));
eina_strbuf_free(s);
return 0;
@@ -2250,11 +2246,12 @@ _lua_import_class(lua_State *L, const char *name, char **code)
f = eina_file_open(path, EINA_FALSE);
if (!f) return EINA_FALSE;
sz = eina_file_size_get(f);
- *code = malloc(sz);
+ *code = malloc(sz + 1);
if (!*code) return EINA_FALSE;
map = eina_file_map_all(f, EINA_FILE_SEQUENTIAL);
if (!map) return EINA_FALSE;
memcpy(*code, map, sz);
+ (*code)[sz] = '\0';
eina_file_map_free(f, map);
eina_file_close(f);
}
@@ -3388,7 +3385,7 @@ _instruction_dump(Evas_Filter_Instruction *instr)
comma = ", ";
}
eina_strbuf_append(str, "})");
- DBG("%s", eina_strbuf_string_get(str));
+ XDBG("%s", eina_strbuf_string_get(str));
eina_strbuf_free(str);
}
#else
@@ -3408,7 +3405,7 @@ evas_filter_context_program_use(Evas_Filter_Context *ctx,
EINA_SAFETY_ON_NULL_RETURN_VAL(pgm, EINA_FALSE);
EINA_SAFETY_ON_FALSE_RETURN_VAL(pgm->valid, EINA_FALSE);
- DBG("Using program '%s' for context %p", pgm->name, ctx);
+ XDBG("Using program '%s' for context %p", pgm->name, ctx);
// Copy current state (size, edje state val, color class, etc...)
ctx->w = pgm->state.w;
diff --git a/src/lib/evas/filters/evas_filter_private.h b/src/lib/evas/filters/evas_filter_private.h
index 7a4ba85ed1..683e35a8d0 100644
--- a/src/lib/evas/filters/evas_filter_private.h
+++ b/src/lib/evas/filters/evas_filter_private.h
@@ -8,6 +8,10 @@
extern int _evas_filter_log_dom;
#define EVAS_FILTER_LOG_COLOR EINA_COLOR_LIGHTBLUE
+#ifdef DEBUG
+# define FILTERS_DEBUG
+#endif
+
#ifdef ERR
# undef ERR
#endif
@@ -29,6 +33,12 @@ extern int _evas_filter_log_dom;
#endif
#define DBG(...) EINA_LOG_DOM_DBG(_evas_filter_log_dom, __VA_ARGS__)
+#ifdef FILTERS_DEBUG
+# define XDBG(...) DBG(__VA_ARGS__)
+#else
+# define XDBG(...) do {} while (0)
+#endif
+
// This is a potential optimization.
#define DIV_USING_BITSHIFT 1
@@ -82,8 +92,8 @@ extern int _evas_filter_log_dom;
# define DEBUG_TIME_END() \
clock_gettime(CLOCK_MONOTONIC, &ts2); \
long long int t = 1000000LL * (ts2.tv_sec - ts1.tv_sec) \
- + (ts2.tv_nsec - ts1.tv_nsec) / 1000LL; \
- INF("TIME SPENT: %lldus", t);
+ + (ts2.tv_nsec - ts1.tv_nsec) / 1000LL; (void) t; \
+ XDBG("TIME SPENT: %lldus", t);
#else
# define DEBUG_TIME_BEGIN() do {} while(0)
# define DEBUG_TIME_END() do {} while(0)