Evas filters: Reduce debugging with default compile opts

When using debug compile flags, full-on filter debug will happen.
This commit is contained in:
Jean-Philippe Andre 2015-06-09 21:29:13 +09:00
parent f3e16bc485
commit 4882788527
5 changed files with 67 additions and 53 deletions

View File

@ -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)
{

View File

@ -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,

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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)