path: root/src/lib/evas/common/evas_draw_main.c (follow)
AgeCommit message (Collapse)Author
2017-12-14evas: Fix potential crash with draw contextJean-Philippe Andre
Using filters I end up in situations where this function returns NULL and all hell breaks loose. I guess the spinlock is what makes this possible (race condition). @fix
2017-09-26evas: Add scale feature for embedded bitmap fonts.Youngbok Shin
Summary: When evas selects a strike of embedded bitmap font, calculate ratio and use it for scaling embedded bitmap. @feature Reviewers: jpeg, tasn, woohyun, raster, herdsman Reviewed By: raster Subscribers: charlesmilette, Francesco149, cedric Differential Revision:
2017-03-08evas: clean up GL images for emojis when GL context is free'dYoungbok Shin
If GL context is free'd before processing font shutdown, textures for emoji glyph's GL images will be free'd without clean up its GL images. It causes eina mempool infinite loop issue when emoji's GL images are free'd in shutdown process. So, the patch will make a list for emoji's GL images in context and clean up them when the context is free'd. Just like font textures in context. @fix Differential Revision: Signed-off-by: Jean-Philippe Andre <>
2017-02-10evas: use the right structure to not over allocate memory.Cedric BAIL
Eina_Trash is designed for storing cached pointer without any memory consumption. Please be careful with EFL memory consumption.
2017-01-31evas draw context - reduce size and allocations and freesCarsten Haitzler (Rasterman)
so a little perf fun shows malloc/free/realloc/etc. are, combined a reasonable overhead. this reduced malloc overhead for draw contexts so whne we duplicate them or create new ones, we re-use a small cache of 8 of them to avoid re-allocation. just take the first one from the list as it really is that simple. mempool would not have helped more here and cost more overhead. @optimize
2017-01-02evas cutouts - quickly avoid huge per issues with large nos of cutoutsCarsten Haitzler (Rasterman)
i found evas_common_draw_context_apply_cutouts() was procsessing 300+ cutouts and as it's O(n^2)/2 to try and merge adjacent rects for cutouts this really performs like complete junk. we apply cutout rects a LOT. this is not the best solution, but it's quick and much faster than doing the clipouts which drop framerate to like 1-2fps or so in the nasty case i say (tyls -m of photos in a dir with a 2160 high terminal). this figures out the target area to limit the count of rects significantly so O(n^2) is far far better when n is now < 10 most of the time. and for the few operations where it's a high value this now uses qsort to speed up merges etc. etc. @optimize
2016-11-16evas: reduce usage of __thread directive.Cedric BAIL
Moved rects caching into draw context to avoid the use of __thread slot. Draw context are defined per thread anyway and should be just fine. This doesn't really change the picture regarding glibc problem when to many __thread are needed, but slightly improve the global picture. Also this patch doesn't affect our performance in expedite benchmark as far as I can tell.
2016-04-01evas - fix leak because cutouts_fre .. doesnt free - it just resets to 0Carsten Haitzler (Rasterman)
this works with 7166e6b85994b19a29f05c9e2b6d75a314a3cb91 and fixes a leak added because ... free does not free! evas_common_draw_context_cutouts_real_free(0 now actually frees the rects, but evas_common_draw_context_cutouts_free() before did not. @fix (follow on from 7166e6b85994b19a29f05c9e2b6d75a314a3cb91)
2015-10-13evas: fix performance regression by reducing the unecessary memcpy we are doing.Cedric BAIL
Actually copying max is pretty useless and super slow. We usually have something like 1024 slot in a context, but a very small amount of them are acutally active. It would be better to actually do some kind of copy on write technique here, but as Eina_Cow doesn't handle array and we are close to a release, let's be conservative.
2015-10-04evas render - async sw - fix context duplication by using proper dup callCarsten Haitzler (Rasterman)
valgrind pointed this one out. we access freed memory when we dup a context because the context CONTAINS ptrs to things like rects for cutouts. we didnt dup these. use the proper context dup call (and properly ref pixman color image too). this was a random bug/crash waiting to happen and valgrind caught it. suprising it hasnt turned up before :/ @fix
2015-09-24evas cutouts - optimize to use less cpuCarsten Haitzler (Rasterman)
this optimizes draw ctxt cutouts by skipping small ones and remembering the last cutout added so it isn't double-added as well as extending the minimum cutout array to 512 and going up in blocks of 512 instead of 128. also optimize the clipping code a bit more.
2015-09-04evas: Use malloc instead of calloc in context_dupJean-Philippe Andre
Since we call memcpy right after, no need for calloc
2015-09-04evas: Add internal context_dup functionJean-Philippe Andre
This will simplify some code related to clipping and masking.
2015-03-19evas: Support bitmap embedded color font.Youngbok Shin
Summary: Add the code for getting bitmap buffers from embedded color font, And draw the bitmap buffers as images. For drawing the bitmap buffers as images, evas_common_draw_context_font_ext_set internal API is changed to pass additional gl engine functions. T2139 @feature Test Plan: 1. Set a bitmap embedded color font to textblock. 2. Set a unicode emoticon text. 3. See the result. Please check the sample unicode in the following link. Reviewers: tasn, woohyun, jpeg, raster Reviewed By: raster Subscribers: herdsman, cedric Differential Revision:
2015-02-23Revert "Revert "evas: refcounting initialisation and protect things.""Cedric BAIL
This reverts commit 789633b321dbb0669b93ba2da3bbaaede3de6233. Now this should be useful since we have refactored the shutdown logic of all engine.
2015-02-23evas: refactor shutdown.Cedric BAIL
2015-02-20Revert "evas: refcounting initialisation and protect things."Cedric BAIL
This reverts commit 216397bea635d93266aca73f9e724979375f2e3b. We do have some engine that are doing partial shutdown outside of the protected function, leading to a crash.
2015-02-20evas: use two thread when scaling image.Cedric BAIL
This is for now just a small experiment. It was based on the experiment made with OpenMP. I prefered to only use Eina here as we have already all the infrastructure to do this nicely and simply. As a result I get a 65% speed improved on average for the involved scaling operation. The secondary CPU is on my laptop running with a load of 75% percent. I don't have right now the time to do power consumption analysis, but I think it shouldn't be to bad. I am also not throwing more core at this as we are not able to use the second core at its max already, so additional core may result in a bigger energy loss without enough gain.
2015-02-20evas: refcounting initialisation and protect things.Cedric BAIL
2015-02-20evas: refactor software engine initialisation.Cedric BAIL
2014-05-28evas_draw_main: Remove unnecessary conditional expressionJaehyun Cho
Summary: The comparison dc with NULL is not necessary. So remove the unnecessary conditional expression. Reviewers: Hermet Reviewed By: Hermet CC: seoz, cedric Differential Revision:
2013-06-20efl: formattingSebastian Dransfeld
2013-06-20evas: Keep sane name for public headerSebastian Dransfeld
Evas_Common.h should be used for the public header, and rather rename evas_common.h internal header to another name. Sa: Evas_Common_Header.h -> Evas_Common.h evas_common.h -> evas_common_private.h Shouldn't have both Evas_Common.h and evas_common.h because of case insensitive filesystems.
2013-03-12small improvement to pixman support - no need to create color image inCarsten Haitzler (Rasterman)
context unless font or rect or line or poly used.
2012-12-05efl/evas: remove mask of non-rectangle objects.Gustavo Sverzut Barbieri
it was broken and mostly disabled, so now we do remove it in the hope who does that next time, does it properly. SVN revision: 80252
2012-11-04merge: and now EvasVincent Torri
I've tested make -j 3 install and it works nicely I've tested expedite with software and opengl xlib, and it works. Not tested other engines, so please report any problems (engines or other) on the ML. TODO: examples and tests, I'll add them later ISSUE: Eina_Unicode size check. It indirectly depends on eina_config.h, which is created at the end of the configure script. So its size is always 0. I don't know how that size is used, so I can't do a lot, for now. SVN revision: 78895