summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Eo: Partial implementation to remove eo_dodevs/felipealmeida/eo_optimisationsFelipe Magno de Almeida2015-11-01215-2783/+3413
|
* Eo do: use the __thread directive when available to manage call stack.Tom Hacohen2015-10-192-3/+26
| | | | | | This is faster in most cases, and to be honest, should be much faster than it is. I don't understand why there's no better directive to mark a variable as *really* important thread storage that is used all the time.
* Eo: Remove extra paranoid-never could happen safety checks.Tom Hacohen2015-10-191-6/+0
| | | | | I was not able to reach those without arbitrary memory corruption, but in that case we are in trouble anyway.
* Eo: Reorganise some of the code and cleanup.Tom Hacohen2015-10-191-47/+44
| | | | This is cleaner and makes more sense.
* Eo: Removed weird unneeded condition.Tom Hacohen2015-10-191-3/+2
|
* Eo: Move op resolve check to where it belongs (out of hot path).Tom Hacohen2015-10-193-12/+11
| | | | | It was put in the wrong place. It should abort early if it detects we can't resolve, and shouldn't check it if we already know it's OK.
* Eo unref: Decrease amount of checks and hint branch prediction.Tom Hacohen2015-10-191-6/+7
| | | | | This may look minor, but this is such a hot path, that this actually speeds things up a bit.
* Eo: Split object checking from class checking and simplify.Tom Hacohen2015-10-191-17/+24
| | | | | The check there was wrong for objects anyway, and was ultra conservative for classes.
* Eo callback call: Remove redundant safety checks.Tom Hacohen2015-10-191-5/+1
| | | | This is already being checked by eo_do, no need to duplicate this here.
* Eo callback call: Remove redundant refcounting.Tom Hacohen2015-10-191-2/+0
| | | | We already get refcounting from eo_do, no need to have more refcounting here.
* Eo callback call: Simplify callback desc matching code.Tom Hacohen2015-10-191-13/+9
| | | | As part of this change, we also error on adding invalid callbacks.
* Eo callbacks: simplify callback call code a bit.Tom Hacohen2015-10-191-2/+1
| | | | We don't need this check because it's already checked in the match function.
* Eo benchmarks: Add basic callbacks benchmarks.Tom Hacohen2015-10-196-0/+97
|
* Eo benchmarks: Improve benchmarks.Tom Hacohen2015-10-195-6/+58
| | | | Add more cases, and tune the number of times we test.
* Eo benchmark: Fix super benchmark.Tom Hacohen2015-10-191-1/+5
|
* Eo: Reduce call stack memory footprint.Tom Hacohen2015-10-191-26/+15
| | | | | | We don't really need the eo_id most of the time, and when we do, it's very easy to get it. It's better if we just don't save the eo_id on the stack, and just save if it's an object or a class instead.
* Eo: Remove useless optimisation that is more harm than good.Tom Hacohen2015-10-191-16/+1
| | | | | | | | | | It seems that the idea behind that optimisation, is to save object data fetching when calling functions implemented by the object's class inside functions implemented by the object's class. This should be rare enough not to worth the upkeep, memory reads and memory writes, especially since for all cases apart of mixins (for which this optimisation won't work for anyway), the upkeep is more costly than fetching the data again.
* Eo: use correct mask when checking if an id is a classTom Hacohen2015-10-192-3/+2
|
* Eo: Optimise object data fetching a bit more.Tom Hacohen2015-10-191-3/+14
| | | | | | Removed safety check that is not necessary. This may seem small, but this in addition to the previous commit, account for around 2% of CPU usage.
* Eo: Optimise object data fetching (minor).Tom Hacohen2015-10-191-3/+8
| | | | Pre-calculate object data offset for improved performance.
* evas gl common - remove unused struct fields from shader src to save memCarsten Haitzler (Rasterman)2015-10-194-1891/+945
| | | | | | | | we use a bit more memory than we need by having unused fields for shaders. the old binary data ptrs and size fields we just have not used for years now as we dont compile in shader binaries anymore as no living drivers need this anymore. so this removes that with no actual side-effects.
* evas gl - fix big endian fully by adding a host of new img shadersCarsten Haitzler (Rasterman)2015-10-188-20/+13210
| | | | | | | | no shortcuts. we used the same img sharder for pixles as for native surf. so need new shaders to do the swiszzling. add them all, generation scripts metadata and enums etc. @fix (along with previous 3 commits)
* evas bigendian fix - only fix img shaders as only these src pixelsCarsten Haitzler (Rasterman)2015-10-183-112/+112
|
* evas gl fix color on bigendian with gl engineCarsten Haitzler (Rasterman)2015-10-187-4/+9324
| | | | | | | | | | | this fixes rendering on ppc (bigendian) where we have thnigs swizzled oddly. not bgra -> argb but rgba -> grab ... so generate a bigendian shader file and use if on bigendian. this should fix T2721 it fixes it in the visual screenshots i can get remotely.
* eo - another 1.5 percent speedup in eo_bench eo_do by removing err handlCarsten Haitzler (Rasterman)2015-10-171-24/+1
| | | | | | | | | | | | | | | | | so we do a bit of error handling like does a stack fail to allocate, does setting the tls var fail, have the stack frames been nulled or not allocated, etc. - these acutally cost every call because they mean some extra compare and branches, but ore because they cause a lot fo extra code to be generated, thus polluting instruction cache with code and cacheline fetches of code that we rarely take - if ever. every if () and DBG, ERR etc. does cost something. in really hotpath code like this, i think it's best we realize that these checks will basically never be triggered, because if a stack fails to grow... we likely alreayd blew our REAL stack for the C/C++ side and that can't allocate anymore and has already just crashed (no magic message there - just segv). so in this case i think this checking is pointless and just costs us rather than gets us anything.
* evas - clean if check to be a single return point for clarityCarsten Haitzler (Rasterman)2015-10-171-2/+1
| | | | | | | | | if (a) return; if (b) return; -> if ((a) || (b)) return;
* ecore-evas-wayland: add frame callback listener during renderMike Blumenkrantz2015-10-162-1/+26
| | | | | | | | | when a render occurs, frame callbacks must be managed in order to ensure successful rendering for future frames. the best place to do this is in the engine here, since this is the lowest-level place which has access to both the wl_surface as well as the evas rendering state ref T2784
* Revert "ecore-wayland: Redo window animators to not use Custom source animators"Mike Blumenkrantz2015-10-162-54/+0
| | | | | | | | This reverts commit bd83d4c03ab9f6f6ae225976b9595a1dfde61237. adding an animator (and then not managing its ticks) causes the animator to fire constantly. in this case, it was causing 100% cpu usage and forcing a compositor re-render for every frame regardless of damages
* Eo do: Reuse stack fetching across eo functions.Tom Hacohen2015-10-162-20/+28
| | | | | | | | This causes a significant speed up (around 10% here) and is definitely worth it. The way it's done lets the compiler cache the value across different eo_do calls, and across the parts of eo_do. Start and end. This breaks ABI.
* Eo do: optimise getting the thread call stack for the main loop thread.Tom Hacohen2015-10-161-13/+20
| | | | | | This may look like an insignificant change, but it doubles the speed of this function, and since this function is called so often, it actually improves my benchmarks by around 8%.
* Eo: Move mainloop checks inside Eo.Tom Hacohen2015-10-162-7/+5
| | | | | | This breaks ABI in a harmless way, and it will give us the ability to drastically improve Eo in the future without breaking ABI again, thus allowing us to declare Eo stable for this release if we choose to.
* Eo events: Add a struct member marking if it's a legacy event or not.Tom Hacohen2015-10-164-26/+10
| | | | | | | | | | | | | | | My previous patch to this piece of code (37f84b7e966372384e2dfe5d191a6f907a17962e), caused a significant performance regression. This is such a hot path, that even accessing the strings when we don't have to slows things down drastically. It makes more sense to just store it in the structure. This commit breaks ABI (though most people probably won't even need to recompile anything else because of the memory layout). It was discussed on IRC and was decided this is a big enough issue to warrant a fix during the freeze. @fix
* Evas GL: SW engine CID fixesJean-Philippe Andre2015-10-161-3/+1
| | | | | | Following previous changes, there was unreachable code. - CID 1327421 - CID 1327420
* Evas: Fix image orientation with GL engineJean-Philippe Andre2015-10-161-1/+2
| | | | | | | Fixes T2738 Not sure what to do if yinvert is true. How to handle image orientation then? Flip vertically on top of the current orientation?
* evas - add another layer->evas check in addition to layerCarsten Haitzler (Rasterman)2015-10-161-1/+1
| | | | fixes T7215
* evas - was missing evlogs for the threaded rendering handling - fixCarsten Haitzler (Rasterman)2015-10-151-0/+4
|
* edje: load - use evas_object_clipees_has instead of evas_object_clipees_getAmitesh Singh2015-10-151-1/+1
| | | | | | | evas_object_clipees_has is far cheaper than evas_object_clipees_get in case of checking if clipees exist or not. This should improve the performance in case of large set of clipees. @fix
* evas: render - use evas_object_clipees_has instead of evas_object_clipees_getAmitesh Singh2015-10-151-1/+1
| | | | | | | evas_object_clipees_has is far cheaper than evas_object_clipees_get in case of checking if clipees exist or not. This should improve the performance in case of large set of clipees. @fix
* Tests: use eina_environment_tmp_get()Vincent Torri2015-10-152-24/+2
|
* Evas GL: Add more testsJean-Philippe Andre2015-10-151-23/+281
| | | | | | | - glReadPixels - FBO test - PBuffer test (only GL engine) - surface formats test (up to depth=24, stencil=8)
* Evas GL: Add test case for surfaceless contextsJean-Philippe Andre2015-10-151-35/+58
|
* Evas GL: Add EGL_KHR_surfaceless_context since it is supportedJean-Philippe Andre2015-10-151-0/+5
| | | | | | See 3e39bf36389fdbc8a3f845214. Surfaceless contexts are supported even if the driver does not support them.
* Evas GL: Error out on surfaceless make_current with OSMesaJean-Philippe Andre2015-10-151-9/+14
| | | | | | While OSMesa may support surfaceless contexts, we don't support them yet in the SW engine. Instead of switching to NULL, NULL, let's error out and do nothing instead.
* Evas GL: Don't call eglMakeCurrent if already nullJean-Philippe Andre2015-10-151-0/+4
| | | | | | If the current context & surface are already null, avoid calling eglMakeCurrent again, since it can return an error (EGL_FALSE but with no error code, thanks Nvidia).
* ecore_imf/wayland: Add NULL check for text_input_manager.Seunghun Lee2015-10-151-0/+3
| | | | | | | | | | | | | | Summary: this patch fixes crash caused by accessing the text_input_manager in wayland_im_context_add(). Test Plan: N/A Reviewers: jihoon Reviewed By: jihoon Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D3176
* evas: no need to compute clippees list if we just want to know if there is any.Cedric BAIL2015-10-141-1/+1
| | | | | | | This is a partial fix for a terrible performance scenario where application take forever to close with a large number of edje object. @fix
* Eo: Fix confusing indentation and style.Tom Hacohen2015-10-141-2/+3
|
* ecore-evas-wayland: Don't use custom animators for frame callbacksChris Michael2015-10-142-2/+2
| | | | | | | | | | Summary: As we now have per-window timer-based animators in ecore_wayland for frame callbacks, we no longer should be using Custom animators to handle surface frame callbacks @fix Signed-off-by: Chris Michael <cp.michael@samsung.com>
* ecore-wayland: Redo window animators to not use Custom source animatorsChris Michael2015-10-142-0/+54
| | | | | | | | | | | Summary: This moves window animators (for frame callbacks) to not use a custom animator source but rather use a timer-based source. This also moves animators to be per-window based (in that an animator is created per-window). @fix Signed-off-by: Chris Michael <cp.michael@samsung.com>
* ecore: fix usage eina_condition_timedwait to use relative time instead of ↵Cedric BAIL2015-10-141-1/+1
| | | | | | | | absolute time. This could lead to some very long and unexpected pause as the timeout passed to eina_condition_timedwait was passed as a absolute time instead of relative. Hopefully we don't build rocket.