Summary: If we do not get a new_region_for_update from an engine, it
could mean that the engine has skipped a frame. In that case, we still
want to try and render any future frames. Before this commit, evas
would never try to re-render anything again once it hit a failed
frame. To fix this, we test for a valid returned region, and if we
don't get one, mark this frame as failed so we can try again.
NB: Thanks for the help Cedric !! :)
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Current definition of transpose and transverse was wrong. Corrected it by
interchanging both definitions.
Signed-off-by: kabeer khan <kabeer.khan@samsung.com>
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2143
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
The previous commit modifies the concept of direct rendering
vs. indirect rendering, so some runtime checks (in debug mode
only) will fail.
This commit introduces two new engine functions:
- gl_get_pixels_pre
- gl_get_pixels_post
The latter will be used in a later patch for optimization.
not changed.
Automatically fallback to indirect rendering on FBO or X11 Pixmap
if the Evas Object Image is not marked as dirty. This should
improve the performance and/or power consumption in those
rare cases where this area of the canvas needs to be redrawn
but the GL content has not changed.
@feature
This will currently optimize most of the masks when using the
GL engine[1].
This is a very special case that adds a highly optimized path
for masking in GL. It works by creating a virtual image, containing
a pointer to the original image and a new geometry[2].
Instead of creating a new FBO-based surface (image_map_surface),
we refer to the original image and adjust the mask geometry on
the fly.
KNOWN BUGS:
- masking a map with such a scaled image is now broken.
[1] Right now all masks are simple Evas Object Image, so that means
all cases of masking, except masks of masks, or masks of maps,
will be optimized with this new method.
[2] This virtual image mechanism is still quite hackish and may
be improved (for memory usage, refcounting, etc...)
Summary:
Resolved T2133 by using eng_image_data_get instead of evas_cache_image_pixels to
get image pixels. Also made other minor changes for error handling.
Signed-off-by: kabeer khan <kabeer.khan@samsung.com>
Reviewers: cedric
Subscribers: cedric
Maniphest Tasks: T2133
Differential Revision: https://phab.enlightenment.org/D2028
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
This native surface type is based on the tbm surface used for the tizen platform.
For the software_x11 backend, image data is retrieved from tbm surface
and color format converted appropriately.
This will only work when libtbm.so is present in the system.
@feature
Test Plan: Local tests
Reviewers: raster, cedric, jpeg, Hermet
Subscribers: wonsik, cedric
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
Summary:
implement native surface set for EVAS_NATIVE_SURFACE_X11 type
on software_x11 backend.
@feature
Test Plan: local tests on PC
Reviewers: jpeg, cedric, raster, Hermet
Subscribers: wonsik, cedric
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
This adjusts the clip to match the mask image data.
To be fair, I'm not sure in which situation those two
don't match well. This patch fixes a rare crash.
The memory usage graph was going up and to the right!
I was told this is always a good thing!
... maybe not this time :)
Hopefully I didn't forget a case. An intense session of
genlist scrolling with masks all over the place and masks
of masks didn't show any glitch, crash or memory leak.
Work done by Jaeun Choi, rebased & squashed by jpeg.
This commit introduces changes to the low-level draw functions
of the SW engine considering the existence of an alpha mask image.
Features:
- Font masking (TEXT, TEXTBLOCK),
- Rectangle masking,
- Image masking (all image scaling functions should be handled).
The mask image itself is not yet set in the draw context (see
following commits).
@feature
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
There was a problem when checking whether the current surface
is compatible with direct rendering. In case of client-side
rotation (it's a flag set on the surface by the app), a surface
can be directly rendered even if the rotation is not 0.
But, before this patch, it was assumed that the surface was
current. Which doesn't make sense because make_current is
called by the pixel callback, from the application, and this
happens *after* we check for direct rendering.
As a consequence, it was not possible to mix directly rendered
surfaces with FBO-based ones, and use client-side rotation.
This patch should solve that issue.
- glGetString(GL_VERSION) should not return "OpenGL ES 3.0" because
GLESv3 is not supported yet.
- GL_EXTENSIONS should return only the list of supported extensions
--> disabled for now as the whitelist of safe extensions is way
too small.
Add version param to context_create.
Add support for 1.1 contexts in the GL_X11 engine, and checks
for version in all other engines (return NULL).
Add API wrappers for all OpenGL-ES 1.1 APIs (normal and debug
modes).
When using EGL, this function should return the properties of
a surface. Limited to a subset of known attributes.
Right now, this function will only work fine with EGL.
GLX support or any other engine is not implemented.
@feature
This will be used to increase the chances of having direct
rendering (no fallback to FBO) even if the window is rotated.
The client is then responsible for handling the view rotation.
@feature
Enable 3D features using --enable-evas-3d=yes when configuring.
APIs are exposed through Evas_3D.h.
Currently, evas-3d is being supported only on gl_x11 engine.
Conflicts:
src/lib/evas/Evas_Eo.h