| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
I was not able to reach those without arbitrary memory corruption, but
in that case we are in trouble anyway.
|
|
|
|
| |
This is cleaner and makes more sense.
|
| |
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This may look minor, but this is such a hot path, that this actually
speeds things up a bit.
|
|
|
|
|
| |
The check there was wrong for objects anyway, and was ultra conservative
for classes.
|
|
|
|
| |
This is already being checked by eo_do, no need to duplicate this here.
|
|
|
|
| |
We already get refcounting from eo_do, no need to have more refcounting here.
|
|
|
|
| |
As part of this change, we also error on adding invalid callbacks.
|
|
|
|
| |
We don't need this check because it's already checked in the match function.
|
| |
|
|
|
|
| |
Add more cases, and tune the number of times we test.
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Pre-calculate object data offset for improved performance.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
if (a) return;
if (b) return;
->
if ((a) || (b)) return;
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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%.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Following previous changes, there was unreachable code.
- CID 1327421
- CID 1327420
|
|
|
|
|
|
|
| |
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?
|
|
|
|
| |
fixes T7215
|
| |
|
|
|
|
|
|
|
| |
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_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
|
| |
|
|
|
|
|
|
|
| |
- glReadPixels
- FBO test
- PBuffer test (only GL engine)
- surface formats test (up to depth=24, stencil=8)
|
| |
|
|
|
|
|
|
| |
See 3e39bf36389fdbc8a3f845214.
Surfaceless contexts are supported even if the driver does not
support them.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
This is a partial fix for a terrible performance scenario where application take
forever to close with a large number of edje object.
@fix
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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.
|