Commit Graph

3071 Commits

Author SHA1 Message Date
Cedric BAIL 3fd01561ae ecore_evas: refactor drm backend to use generic render infrastructure. 2017-05-08 15:01:49 -07:00
Cedric BAIL c24d077b6a cocoa: refactor cocoa backend to use generic render infrastructure. 2017-05-08 15:01:30 -07:00
jiin.moon c89bf7b2d8 evas: Fix can't open tiff file on loader
Summary:
Evas can't open tiff file because of no implement in client read api.
I wrote codes simply for open.

Test Plan: self

Reviewers: jpeg, cedric, jypark

Subscribers: stefan_schmidt

Differential Revision: https://phab.enlightenment.org/D4857
2017-05-08 15:20:01 +02:00
Cedric Bail 73592d4e72 ecore_evas: first step into refactoring x backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 103dfc5ba4 ecore_evas: first step into refactoring wayland backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 11cf280cfa ecore_evas: first step into refactoring win32 backend. 2017-05-05 17:55:06 -07:00
Cedric Bail cc139b70f8 ecore_evas: first step into refactoring sdl backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 081a134449 ecore_evas: first step into refactoring psl1ght backend. 2017-05-05 17:55:06 -07:00
Cedric Bail d1dc3b0dc5 ecore_evas: first step into refactoring fb backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 042fd1dda8 ecore_evas: first step into refactoring extn backend. 2017-05-05 17:55:06 -07:00
Cedric Bail 9129adc993 ecore_evas: first step into refactoring drm backend. 2017-05-05 17:55:06 -07:00
Cedric Bail fe316636fd ecore_evas: first step into refactoring cocoa backend. 2017-05-05 17:55:06 -07:00
Derek Foreman 699ed066ea ecore_drm2: Require x and y value in plane assign
Saves us a flip test, and gaurantees that we're always testing with a
reasonable x, y and not something leftover from a previous assignment.
2017-05-05 12:53:25 -05:00
Derek Foreman 769271a66a drm-ee: Use a plane for the evas
Assign a plane at startup and update it in flip.
2017-05-05 12:53:24 -05:00
Derek Foreman 27fc7d5f83 gl_drm: Support atomic updates
Grab a plane and lock it down for displaying the canvas, update it on
page flip.
2017-05-05 12:53:24 -05:00
Vincent Torri cf2786a849 ecore_evas: fix test in the hide callback in Windows module
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-27 09:56:23 -07:00
Derek Foreman 755577c423 wayland engines: Don't store evas in engine info
We don't need it anymore.
2017-04-26 14:20:47 -05:00
Derek Foreman 92e65ba3c7 wayland_shm: Stop using the evas directly to block for async render
Use the new fence function instead.

This makes Cedric less unhappy.
2017-04-26 14:16:37 -05:00
Derek Foreman a4ed205071 gl_drm:Rename import_simple_dmabuf to gl_import_simple_dmabuf
There's also an ecore_drm2 function to import dmabuf as fb, so it's a
little less confusing to be a little more explicit here.
2017-04-26 13:47:46 -05:00
Derek Foreman 0f581cb745 ecore_evas_wayland: Make local functions static 2017-04-26 13:47:46 -05:00
Derek Foreman c5550f9320 ecore_evas_wayland: Remove unused functions 2017-04-26 13:47:46 -05:00
Derek Foreman 489b87edc9 ecore_evas_wayland: Remove unnecessary function prototypes 2017-04-26 13:47:46 -05:00
Derek Foreman dcd9e09472 ecore_evas_wayland_common: Reorder functions
Try to put these in order so we don't need prototypes

No functional changes
2017-04-26 13:47:46 -05:00
Stefan Schmidt 40f30f0f31 evas: gl_filters: fix leak of evas image
Make sure we free the allocated use_map evas image before leaving scope.

CID: 1374275
2017-04-26 14:27:30 +02:00
Vincent Torri 540de0e254 Ecore_Evas: use window states and event property to fix ecore_evas_fullscreen_set()
This implies that elm_win_fullscreen_set() is also fixed

@fix
2017-04-26 15:07:38 +09:00
Vincent Torri 24c756b9f2 Ecore_Evas: clean up Windows module 2017-04-26 15:07:29 +09:00
Cedric BAIL 7f5ec0c8ea evas: do not rely on Evas canvas for Evas Ector engine backend. 2017-04-25 16:16:30 -07:00
Cedric BAIL 55e1b3f205 evas: remove engine.data.output.
This is the first step toward handling multi output. This patch
remove engine.data.output from Evas structure and use an Eina_List
for it instead. It also start moving code around to fetch an output
or an engine context (which are the same at the moment, but will be
split in a later patch).
2017-04-24 15:10:48 -07:00
Carsten Haitzler b9991b045c evas gl filter blur - fix uninitialized vare warning for sum 2017-04-21 16:40:36 +09:00
Carsten Haitzler d5848d0dc4 gl filter blur - fix warning about possible uninit vars by initting them 2017-04-21 16:39:20 +09:00
Derek Foreman fddbf75fc9 Fix sed error that changed "video" to "videfl"
commit c662934be8 seems to have accidentally
renamed a few instances of _video_ to _videfl_, this hopefully changes
them all back.
2017-04-17 17:06:28 -05:00
Carsten Haitzler a85494a5b2 emotion - gstreamer1 - fix yuv import funcs to use gst stride + offset
so our yuv import funcs for gstreamer 1.x engine were ignoring the
plane offsets and strides provided by gstreamer. though this nicely
shows that these numbers provided are actually wrong - at least in the
testing with vaapi back-ends with gst.

so this fixes emotions' badness but there is still badness in gst
apparently. the numbers provided if used are just simply wrong for teh
image data. commented code in the src to show how to "Fix it up" by
forcing some alignment of content to get it to work.

@fix
2017-04-16 12:56:11 +09:00
Jean-Philippe Andre d87a65e825 evas gl: Fix compilation for EGL 2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 30ac315631 evas filters: Cleanup unused buffers
This might not be used as over two consecutive runs all the
same buffers should be used. But it could happen if some
parameters in the filter change (eg. blur radius).

Fixes major (GPU) memory leaks. Reuse mode is still leaking.
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 01a4ecd92c evas filters: Adjust downscale coordinates to avoid artifacts
This avoids sampling artifacts when moving or resizing a
snapshot object over a region with sharp content (eg. text).
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 5467d1eb3e evas filters: Fix artifacts when scaling up & down
An odd-sized image scaled down by 2 was losing 1 pixel during the
downscale, and it was not restored after scaling up. The same
happened with downscaling by 4 except the effect was even more
visible.

This meant that a moving snapshot with a large blur would trigger
some really ugly sampling issues if the content below was precise
(such a text).
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre fc92a1c0f6 evas filters: Enable down scaling with GL blur
This dramatically improves the performance and now seems
to give acceptable results. Eventually we need a quality flag
in order to enable this or not. Alternatively, "gaussian" blur
mode would skip this optimization, while "default" would trigger
it.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 45548e8358 evas filters: Implement obscure support for gl blur
This can help with performance when a large region of the
filtered image (eg. snapshot) is fully hidden by an opaque
object. For instance the window border is hidden by the
opaque window content.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre c53f1526f1 evas: Make save() work on snapshots
This make save() work on snapshot objects, provided the call
is done from inside render_post.

Also, this saves the filtered output of an image, rather than
its source pixels. Any call to save() on a filtered image must
be done from post-render as well.

Fixes T2102

@feature
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre e7eb97f3b0 evas gl: Make sure a deleted image can't be the target
If we delete the image that was the target surface for gl
rendering, a crash would occur on the next render cycle.
Unlikely but not impossible to trigger from app side.

@fix
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 06a7beec52 evas filters: Switch to uniforms in GL blur
This was a poor attempt at improving the performance but
obviously the root cause isn't fixed (too many texel fetches).

Uniform should (theoretically) work better than an attribute
the for loop. Just a guess here.

This also makes GL blur use a float value as radius, allowing
future extension to non-integer blur radii, as well as using
linear scaling as a fast blur approximation.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 7407a0d073 evas filters: Reduce one log level 2017-04-14 11:26:44 +09:00
Jean-Philippe Andre ebeead4681 evas filters: Optimize GL blur with interpolation
This optimizes the GL blur algorithm by reducing the number of
texel fetches (roughly half the number of before this patch). This
works by exploiting GL's interpolation capabilities.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 6af3c20aeb evas filters: Pass gaussian values to GL blur shader 2017-04-14 11:26:43 +09:00
Jean-Philippe Andre a9ddeeb4fb evas filters: Use GL downscaling for blur
This will improve the performance a lot. Now remains to figure
out the best values for downscaling and improve the actual blur
shader as well.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre e52a04ef8f evas filters: Use obscured region in box blur (SW)
Box blur is used by the default blur (in 2 or 3 passes) so it
is one of the most important and cpu-consuming filters in the
software engine.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre b90246a619 evas: Improve blur filter perf by using 2 passes
By simply splitting X and Y blurs in two passes we can improve
the performance of the blur filter a lot.

There is still much to be done to make it really fast and nice
looking:
- implement true gaussian blur (not sine-based approximation,
  right now the actual blurs look different in SW and GL)
- exploit linear interpolation for R tap instead of R*2+1 taps
  (a tap being a texel fetch)
- downscale & upscale large images with large blur radii
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 5bce7120f1 evas filter: Implement blur filter in pure GL
Wait a second though, this implementation is not only incomplete
(no support for box vs. gaussian blur), it's also insanely bad in
terms of performance. Small radii may work fine, but at least blurs
render properly in GL with this patch (no more glReadPixels!).

The shader needs a lot of love, including in particular:
- support for 1D box blur single pass
- support for 1D gaussian (or sine) blur
- use linear interpolation and N-tap filters
- separation of 2D blur in two passes (high-level logic)
- potentially separation of large 1D blurs in 2 or more passes
  knowing that 2sigma == sigma + sigma when it comes to the gaussian
  bell curve.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 125c7d956e evas filters: Implement displace filter in pure GL
This one was a bit more... "fun". I had to add a new vertex
attribute and obviously using a VertexAttribPointer led to
incomprehensible crashes. But a simple glVertexAttrib2fv makes
it work like a charm!

A rare option is not handled yet.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre ac8812665b evas filters: Implement fill filter in pure GL
Now that one was trivial. Could also be done with glClear and
glScissor instead, but the rectangle infrastructure works well
enough.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 3d2f1a3d9b evas filters: Implement mask filter in pure GL
This reuses the existing mask infrastructure, but adds a color
flag to use the whole RGBA range, rather than just the Alpha
channel.

Filters are still very slow (glReadPixels and non-optimized use of
GL buffers...), but this is progress :)
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 92dfe1831c evas filters: Fix blur logic and GL buffer handling
This corrects two things:
- the blur filter high-level logic, that lead to reusing some
  temporary buffers which contained garbage;
- the versatile gl buffer implementation so that it now properly
  switches between the RGBA_Image and the FBO content (yes, this
  is insanely slow and inefficient... but it works and that was
  the only point).
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 2ef8d6f39a evas filters: Refactor ector and gfx filters A LOT
Alright, so this is a massive patch that is the result of
trying to get rid of unused or poorly implemented classes in
ector. Originally ector was meant to support VG but extend to
things like filters as well. At the moment, ector's design
makes it quite hard to plug in the filters.

For now I think it's easier to implement the GL support for
the filters directly in the engine, where I hope to interfere
as little as possible.

This massive patch keeps only the required minimum to support
a versatile gl buffer that can be mapped, drawn or rendered to (FBO).
It's extremely inefficient as it relies on glReadPixels and lots
of texture uploads, as well as conversions between ARGB and Alpha.

Another type of GL buffer is a wrap around an existing GL image,
but that one is read-only (map or draw: no write map, no FBO).

No, all the filters run fine, and the high-level implementation
(evas_filters.c) does not need to know whether the underlying engine
is SW or GL. One problem though appears with the blending or blurring
of some Alpha buffers, the colors are wrong.

This patch removes more lines than it adds so it must be good ;)
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre fb52c15e85 evas filters: Prepare GL support for blend operation
No implementation yet, this is just the skeletton!
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 190d84e84b evas: Rename software filter function type
From Evas_Filter_Apply_Func to Software_Filter_Func.
Also fix include dir for out-of-tree builds of non-static sw generic.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre a8d283567a evas filters: Move blur to software generic (8/8)
This completes the series of refactoring patches, where only the
filter implementation is moved to the engine rather than inside
evas itself.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 46542ea748 evas filters: Move transform to software generic (7/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 1b95d22c2c evas filters: Move bump to software generic (6/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre b56a788e96 evas filters: Move displace to software generic (5/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre c9eec74002 evas filters: Move fill to software generic (4/8)
This also moves the header evas_engine_filter.h to its subdir.
2017-04-14 11:26:42 +09:00
Jean-Philippe Andre b6df13b024 evas filters: Move curve to software generic (3/8)
This moves the RGBA premul/unpremul functions to static_libs/draw.
2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 09ff5f419e evas filters: Move mask to software generic (2/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 0740010a06 evas filters: Move blend to software_generic (1/8)
This is an attempt at refactoring the filters code so I can
later implement GL support. This patch adds a few extra changes
to remove avoid calling functions of libevas from the software
engine: use the draw functions from static_libs/draw rather
than evas_common APIs.
2017-04-14 11:26:42 +09:00
Cedric BAIL 12fcaf77d6 evas: remove pixels hook from x11 backend now that we don't use it anymore 2017-04-12 15:13:19 -07:00
Cedric BAIL 323063a370 evas: remove pixels hook from fb now that we don't use it anymore. 2017-04-12 15:13:19 -07:00
Cedric BAIL e0bb9d6134 ecore_evas: change VNC API and use snapshot internally. 2017-04-12 15:13:19 -07:00
Minkyoung Kim 78d266e189 EvasGL: Do internal make current if context changed.
Summary:
Before, rsc->current_ctx is always same with ctx.
So checking context change was meaningless.
From now, it has meaning.

Test Plan: App call evas_gl_make_current more than twice in pixels callback. Those surfaces are indirect rendering surface.

Reviewers: jpeg, dkdk, wonsik

Reviewed By: jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D4773
2017-04-11 16:20:07 +09:00
Youngbok Shin 1ab87367d8 evas: give width offset when Evas tries to find ellipsis position
Summary:
If the last item before ellipsis item has bigger width than its advance,
evas_common_font_query_last_up_to_pos() function can find wrong ellipsis position.
When Evas finds a position for non last item, Evas must care about additionally
available space for glyph's width of the given x position.

ex) the last item's glyph before ellipsis item has a tail to draw above the ellipsis item.

@fix

Test Plan:
Test case will added as comment.
(Becasue of font license problem.)

Reviewers: herdsman, raster, jpeg, woohyun

Subscribers: cedric, Blackmole

Differential Revision: https://phab.enlightenment.org/D4727
2017-04-10 12:15:20 +09:00
Al Poole 36ab489a6f Fixes latest crash w/rage
Summary:
eina_file_virtualize is causing issues.

memfile_set is better but see attached bt.

What to do???

Reviewers: raster, cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D4743
2017-03-31 11:13:04 +09:00
Carsten Haitzler 02a7e00c01 ecore_evas extn - fix buffer n check for lock files with untrusted val
the code added by minkyoung has a definite security flaw here trusting
e->response to be within a small range when all it is is an int -
range is not limited other than that... so fix the code to check for
range like further code below does.

this commit went in 2 days ago... so not an existing bug fix.
2017-03-23 16:27:19 +09:00
Jean-Philippe Andre 2787f0fe5d evas: Fix a rare issue with GL and map and mask
The things you learn to love...

The situation was:
- An object is mapped (naviframe in an animation)
- One of its children has a mask
- The window is rotated by 90 or 270 degrees (landscape)

The mask glsl code to invert the x,y coordinate depends on the
screen rotation and this somehow was wrong.

Tested on Tizen and in elm_test "Masking", made with @jiin.moon.

@fix
2017-03-22 14:29:02 +09:00
Minkyoung Kim 38e6780262 ecore_evas_extn: do not update plug image when lockfile is invalid.
Summary:
This prevent invalid shared memory access.
Invalid access occur when server is resized sequentially from now to A-size
to B-size, and client receive A resize message after resizing B.
Then client try to render plug image with A-size, but shared memory is B-size
buffer. Size are mismatch. This makes segmentation fault when uploading texture(gl)
or rendering image(sw).

Test Plan: Indicator rendering on Tizen3.0 platform.

Reviewers: jypark, wonsik, dkdk, scholb.kim, jiin.moon, jpeg, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4711

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-03-21 11:05:58 -07:00
Jean-Philippe Andre bcb8a7e8b8 evas gl: Fix a compilation warning
The fallback lib handle is not required unless EGL/GLES is used.
2017-03-20 12:51:50 +09:00
Derek Foreman 7b687c1a25 gl_drm: Fix KHR partial update support
I fixed this in other engines but missed this one.  The result is some
terrible flickering on gl_drm on recent mali drivers.
2017-03-17 15:32:26 -05:00
Derek Foreman 39da430878 ecore_drm2: Move function call after the NULL check
Was dereferencing ob before NULL checking it.  What could possibly go
wrong?
2017-03-17 15:06:39 -05:00
Derek Foreman 3b50c86985 gl_drm: Properly disable EGL_EXT_buffer_age when we don't have it
If we don't have EGL_EXT_buffer_age then we don't have buffer age - it's
a completely independent extension to KHR partial update.

This partially fixes partial update on recent mali drivers.
2017-03-17 15:04:47 -05:00
Jean-Philippe Andre c68a409874 evas gl: Add a hack for GLES 3.1 with NVIDIA + GLVND
I believe there's a limitation in libglvnd where it doesn't
propagate the calls to eglGetProcAddress() properly to the vendor
library.

See also 265c851a8f
2017-03-14 17:01:24 +09:00
Jean-Philippe Andre c15fee9bcc evas gl: Fix usage of OSMesa
It seems OSMesa was recently updated to not expose symbols statically,
so dlsym() returns invariably NULL. GetProcAddress must be used. Note
though that the extension "EGL_KHR_get_all_proc_addresses" is not
present (OSMesa is OpenGL, not GLES), and there is anyway no list
of extensions in OSMesa (at the WSI level, glGetString() returns a
ton of GL extensions as expected).

My OSMesa version is 11.2.0 (mesa 17.0.1).

This fixes make check.

@fix
2017-03-14 15:03:25 +09:00
Mike Blumenkrantz 9d8bc92c4a ecore-evas-wayland: update no-op configure commit case for new acking method
ref 1b9970658f
ref 5e7456a315
2017-03-10 16:11:19 -05:00
Mike Blumenkrantz 57412cba94 ecore-evas-x: set flag for maximized state
fixes initial maximize state
2017-03-10 15:54:21 -05:00
Mike Blumenkrantz 1b9970658f ecore-evas-wayland: commit on no-op configure events
this handles the case of a window configure not triggering any visible change

fix T5192
2017-03-10 15:54:21 -05:00
Carsten Haitzler 09f132b556 evas - gl - remove warning for unused var with opengl vs gles 2017-03-10 10:56:19 +09:00
Jean Guyomarc'h c1604cdac8 ecore_evas_cocoa: better debugging log 2017-03-09 23:16:16 +01:00
Derek Foreman aedf55073a ecore_wl2: Rename badly named API
Oops, I broke naming convention with this, but it's unreleased and beta so
I hope nobody notices as long as I change it now...
2017-03-09 12:21:09 -06:00
Derek Foreman a1b90cf4d7 Revert "ecore-evas-wayland: Fix issue of apps not starting up in fullscreen mode"
This reverts commit dfb1877500.

This did fix the problem of "rage -f" not starting properly, but it
broke toggling between fullscreen and !fullscreen for other apps.

They'd resize to a large, but not quite fullscreen, size, then render with decor
present, and big black bars on the right/bottom edges (which were offscreen due
to the client size and position)

This isn't really the right place to fix this - it's a protocol usage bug, not
a canvas bug.
2017-03-09 12:21:08 -06:00
Jean Guyomarc'h 27a62edd68 gl_cocoa: use triple buffering
Interestingly enough, this makes some graphical artifacts vanish...
2017-03-09 00:57:56 +01:00
Jean Guyomarc'h f6a44e6bc1 ecore_evas_cocoa: fix invalid initial requested width 2017-03-09 00:57:56 +01:00
Jean Guyomarc'h 863077ce9a ecore_evas_cocoa: use ecore_event to match windows 2017-03-09 00:57:55 +01:00
Jean Guyomarc'h 79e7e2628a ecore_evas_cocoa: remove more pointless code 2017-03-09 00:57:55 +01:00
Youngbok Shin f83ce20e1c evas: clean up GL images for emojis when GL context is free'd
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: https://phab.enlightenment.org/D4695

Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
2017-03-08 19:35:03 +09:00
Jean Guyomarc'h b9ab5f68af ecore_evas_cocoa: remove a lot of useless code
I still don't know what's going on with the rendering problems, but
at least now  I have less dead code in my way...
2017-03-08 08:59:59 +01:00
Jean Guyomarc'h 1c772ddd3d ecore_evas_cocoa: set the render func at initialization 2017-03-08 08:59:59 +01:00
Jean-Philippe Andre 265c851a8f evas gl: Fix version detection for GLES 3.1
It was assumed that GLES 3 would only work with EGL but in fact
OpenGL 4.3 & 4.5 are supersets of GLES 3.0 & 3.1 respectively. So
GLX should also support GLES 3.0 or GLES 3.1 for evas gl, if the
driver supports it, of course.

Of course while doing this patch things didn't go like they were
supposed to go. I'm currently using NVIDIA's proprietary driver,
that conveniently provides EGL with GLES 3.2. But wait, there's
a catch: GL_VERSION is "OpenGL ES 3.2 NVIDIA" except that none
of the functions of GLES 3.1 or GLES 3.2 are actually supported.
Those functions are only present in the GLX/OpenGL variant of the
driver. Thanks so much for making my life easier...

So yeah, this patch contains a hack for those invalid versions
of GLES 3.x. What was supposed to be a small fix became a huge
mess.

Also add a comment about the possibly invalid auto-upgrade from
GLES 2 to GLES 3.

This adds a test case in elm_test, but only to verify that
elm_glview_version_add(3) actually works. We need a proper GLES 3
test case, eventually (and 3.1, 3.2 of course).
2017-03-08 15:44:39 +09:00
Jean Guyomarc'h 566b23dcb8 ecore_evas/x: don't mark as unused a used parameter 2017-03-07 20:23:12 +01:00
Jean Guyomarc'h 6f80616a4d ecore_evas/cocoa: fix cursor's visibility
Fixes T5238
2017-03-07 20:23:12 +01:00
Jean-Philippe Andre 38446d8daf tests: Remove CPU affinity from all threads
I believe that all the threads created in our test suite should
be spawned without any special CPU affinity. The default parameter
is not 0 (corresponds to the first CPU, known as CPU 0) but -1.

Similarily the default priority is NORMAL (1), not 0 (URGENT).

This also affects two unused code paths: evas render2 and gl preload.

@fix
2017-03-06 17:03:47 +09:00
Jiyoun Park a6c0e9b067 ecore_evas_extn: add shared lock mode to the ecore_extn.
Currently, ecore_evas_extn only use exclusive lock.
so if there are many ecore_extn_plugs , there is competition among the ecore_extn_plugs.
since the ecore_extn_plugs dont need to use exclusive lock, add the shred lock mode.
2017-03-06 12:39:53 +09:00
Derek Foreman 3c3808acc5 ecore_evas_wayland: fix session recovery crash with async render
We need a display unset path for software render to prevent an async
render completing after a disconnect from posting a frame and crashing
us.

As of this commit both software and gl session recovery work for me.

fix T5005

 #SessionRecoveryWorksHere
2017-03-03 13:30:01 -06:00
Derek Foreman 706a1a33a4 ecore_evas_wayland: Use surface from engine info
Calling ecore_wl2_window_surface_get() has the side effect of creating
a new wayland surface if we don't already have one.  If we do that
during a session recovery, we can try to create a new surface while
we have no connection to a compositor - that's Bad.

So we just use the one we already have stored - which we NULL out on
disconnect.
2017-03-03 13:30:01 -06:00
Derek Foreman f53f873b58 wayland_egl: recreate outbuf on session restore
If we get an eng_update with no outbuf, try to create one.
2017-03-03 13:30:00 -06:00
Derek Foreman 18224858f3 wayland_egl: Destroy the outbuf when we lose our surface
This way we properly shut down when we get disconnected from the
compositor, and can reconnect later.
2017-03-03 13:30:00 -06:00
Derek Foreman eacd67498c wayland_egl: Don't crash when asked to dump with no outbuf
Another session recovery corner case.
2017-03-03 13:30:00 -06:00
Derek Foreman 1639e99305 wayland_egl: Don't crash if gl context queried when no outbuf
We can get here on session restore when we haven't had a chance
to recreate the outbuf yet.
2017-03-03 13:30:00 -06:00
Derek Foreman 49e7932c86 gl_generic: Add null checks in some cache functions
When wayland session recovery happens, we can end up down this path
with no gl context when elm reprocesses its config file.

That callback fires long before we've re-set up our wayland connection
so we can't possibly have a valid gl context yet.

Prevent that from crashing.
2017-03-03 13:30:00 -06:00
Jiyoun Park ffa2d37462 ecore_evas_wayland: remove useless code 2017-03-03 12:44:35 +09:00
Jiyoun Park 89c6a316f6 ecore_evas_wayland: remove useless code 2017-03-03 11:28:52 +09:00
Jiyoun Park fb730c1fd7 ecore_evas_wayland: fix bug ee's width and height were updated wrong place.
ecore evas manages the width and height using the ee->w/h and ee->req.w/h.
but sometimes only ee->req value can be updated.
2017-03-03 11:06:50 +09:00
Jihoon Kim 591db71120 ecore_imf/xim: Fix memory leak
64 bytes in 1 blocks are definitely lost in loss record 152 of 258
   at 0x4C2AB80: malloc (vg_replace_malloc.c:296)
   by 0xC786A77: ??? (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
   by 0xC78747B: _XimDecodeIMATTRIBUTE (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
   by 0xC77A7EF: ??? (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
   by 0xC767771: XGetIMValues (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
   by 0x113CFE09: ???
   by 0x113D08F7: ???
   by 0x83DD329: ecore_imf_context_client_window_set (ecore_imf_context.c:240)
   by 0x530779D: _edje_entry_real_part_init (edje_entry.c:2937)
   by 0x5311C20: _edje_object_file_set_internal (edje_load.c:1079)
   by 0x5328665: _edje_object_efl_file_mmap_set (edje_smart.c:438)
   by 0x775BD3A: efl_file_mmap_set (in /usr/local/lib/libefl.so.1.18.4)
2017-03-03 10:12:30 +09:00
Carsten Haitzler 9f535a3f3c emotion - fix empty video data frame update when using vdpau accel
fixes a segfault when using vdpau+gst and where the first frame seems to
be empty/zero.

@fix
2017-03-02 15:31:07 +09:00
Jihoon Kim 777b9beb23 ecore_imf/ibus: Fix memory leak allocated by ibus_bus_new 2017-03-02 10:19:53 +09:00
Derek Foreman b7f1c66d3a ecore-evas-wayland: Fix yet another wayland session recovery break
commit 81783ec75c combined two "identical"
pieces of code that weren't identical.  The removed code never checked
if the evas was visible before performing operations to make it so,
the code left behind would bail if the evas was visible.

Reset the visible status during disconnect to make sure we properly show
windows after a session recovery.

ref https://phab.enlightenment.org/T5005

@fix

Session works on the software engines at this point.  Use this as a bisect
point next time someone fubars it.

GL still broken.  Window geometry seems like it doesn't get updated right
either, but at least clients reconnect again.

 #SessionRecoveryWorksHere
2017-03-01 14:47:21 -06:00
Chris Michael ce65b59d5a Revert "ecore-evas-wayland: Don't register animators until window gets shown"
Reverting this as apparently it broke session recovery for some odd
ass reason...

This reverts commit 38f3854f45.
2017-03-01 13:13:46 -05:00
Chris Michael 81783ec75c ecore-evas-wayland: Remove duplicated code
As we already call the same functions inside
_ecore_evas_wl_common_show, there is no need to duplicate the same
code when we have defer_show set...just call the show function.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-01 11:43:11 -05:00
Chris Michael dfb1877500 ecore-evas-wayland: Fix issue of apps not starting up in fullscreen mode
Calls to make a window fullscreen do require the window to already
have a shell surface with which to fullscreen. If an app sets the
window fullscreen property when the window is not shown yet, then the
app would never startup fullscreen. This patch fixes that issue by
adding a 'defer_fullscreen' flag to Ecore_Evas (wayland) so that when
the window does finally get shown, we can show it in fullscreen.
Addresses part of the T5044 ticket...

ref T5044

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-01 11:30:15 -05:00
Chris Michael e6b26d2279 ecore-imf-wayland: Reduce calls to set_cursor_rectangle
Avoid calls to zwp_text_input_v1_set_cursor_rectangle if we do not
need to. Previous code here would always call this function even if
the cursor rectangle was in the same position. Now we set a flag on
the cursor_location field to let us know that it needs updating.

ref T5226

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 10:22:58 -05:00
Chris Michael f877c46ad8 ecore-imf-wayland: Remove duplicate header include
wayland_imcontext.h already includes this header, so no need to
re-include. Also add missing (void) to function declaration

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 09:28:24 -05:00
Chris Michael 6d4357d943 ecore-imf-wayland: Formatting fixes
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 09:16:22 -05:00
Jean-Philippe Andre 02bff22d8f evas: Reset state to GL_TEXTURE_2D
This should fix an ERR message under gl_drm and probably an
actual bug.

This reverts 8f2cfdf490.

I don't think the texture target should be part of the context
information. It should instead be a property of the texture.

Fixes T5171
2017-02-28 13:07:13 +09:00
Jihoon Kim 82188e12b5 ecore_imf/ibus: fix memory leak 2017-02-28 11:24:39 +09:00
Cedric BAIL 5420ebaf32 emile: rename emile_image_register to emile_image_callback_set.
This fix ABI report according to discussion on the mailing list.
2017-02-27 15:05:35 -08:00
Chris Michael 38f3854f45 ecore-evas-wayland: Don't register animators until window gets shown
Small patch to not call _ecore_evas_register unless we are showing the
window. This stops creation of rogue animators on cursors until the
window is actually going to be shown.

Fixes T5209

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-27 11:33:57 -05:00
Jihoon Kim 73ff3e07a2 ecore_imf/ibus: Fix memory leak 2017-02-27 21:32:07 +09:00
Jihoon Kim a1da126220 ecore_imf/wayland: Fix memory leak in immodule
==1321== 156 bytes in 1 blocks are definitely lost in loss record 7,687 of 9,703
==1321==    at 0x4847E64: calloc (vg_replace_malloc.c:623)
==1321==    by 0x92EA7E9: wayland_im_context_new (wayland_imcontext.c:1094)
==1321==    by 0x92E66DD: im_module_create (wayland_module.c:132)
==1321==    by 0x4D521E7: ecore_imf_module_context_create (ecore_imf_module.c:152)
==1321==    by 0x4D51EF7: ecore_imf_context_add (ecore_imf_context.c:141)
2017-02-27 21:31:07 +09:00
Carsten Haitzler 473d431241 evas gl common - fix nv12 text upload with upack row length
we segv'd because our testure width was wrong... i was row span
length in bytes and we use luminance+alpha texture... this fixes it.

@fix
2017-02-26 11:44:38 +09:00
Carsten Haitzler 7d4e417ea8 emotion XXX - make nv12 709 streams work even with slightly off colors
ther eis no 709 nv12 support support in evas but there is 601, so use
that for now until we add the feature of 709 nv12 support.
2017-02-23 11:46:53 +09:00
Jiyoun Park 78feb9decb ecore_evas_wayland_common: fix bug that window is not rotated when app request rotate.
In landscape mode, width & height of evas are different with ecore's.
so diff is checked differently according to the  portrait & landscape mode.
2017-02-20 11:15:59 +09:00
Godly T.Alias 48627996d7 efl: fix memory leak in edje and evas.
Summary:
Signed-off-by: Godly T.Alias <godlytalias@yahoo.co.in>
Signed-off-by: Ayush Srivastava <ayush.sriv@samsung.com>

Test Plan: EFL apps

Reviewers: cedric, raster

Subscribers: rajeshps, ayush.sriv, jpeg, prince.dubey

Differential Revision: https://phab.enlightenment.org/D4660

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-02-15 16:29:07 -08:00
Jean-Philippe Andre 45d846814f evas gl: Fix memory tracking
See b16c961680 which by "fixing" indentation changed the
logic of the code. Yes the indentation was misleading (because of
the #if / #else) but the logic was correct. Anyway this is was not
a harmful issue as those memory trackers aren't really used.
2017-02-14 10:56:15 +09:00
Chris Michael 6aad6d27f2 ecore-evas-drm: Fix setting rotation during async render
If we are in async render and a call to rotation_set has been made,
then we should delay setting that rotation until rendering is
completed. This patch fixes that issue by setting ee->delayed.rotation
and handling it during _drm_render_updates

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-13 13:43:21 -05:00
Chris Michael 60c7891598 ecore-evas-wayland: Fix setting rotation during async render
If we are in async render when a call to set rotation happens, we
should not be setting the engine info->rotation until we have actually
handled the rotation. Old code here would set delayed.rotation on the
ecore_evas itself, but then it would tell the engine to rotate. What
we actually want here is If in async render, set the delayed rotation
property and let render_updates deal with any delayed setting.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-13 13:37:06 -05:00
Chris Michael b16c961680 evas-gl-common: Fix misleading indentation
gcc reports that the 'else' here does not guard the latter
statement...seems like a cause of some missing parens so fix.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-13 10:34:13 -05:00
Jean-Philippe Andre 0a2d8d834a evas gl: Partially fix MSAA for GLES 3 drivers
MSAA (multisampled_render_to_texture) support was implemented with
GLES 2 in mind, but for GLES 3 it comes as a core feature, not as
an extension. Also it relies on renderbuffers, not textures. GL
is awesome.

Note: MSAA still doesn't work!
2017-02-13 20:11:22 +09:00
Minkyoung Kim c2e1eb7c54 EvasGL: For depth&stencil&msaa, use renderbuffer instead of texture
Summary:
glFramebufferTexture2DMultisampleEXT() supports color attachment only.
so depth&stencil attachment should be bound via renderbuffer not texture.

According to http://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt
In order to allow the use of multisampled depth and stencil buffers
when performing multisampled rendering to a texture, the extension
also adds the command RenderbufferStorageMultisampleEXT.
target, textarget, texture, and level correspond to the same
parameters for FramebufferTexture2D and have the same restrictions.
attachment must be COLOR_ATTACHMENT0.

Test Plan: Evas GL on GLES 3

Reviewers: jpeg, raster, dkdk, wonsik

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D4648
2017-02-13 19:54:29 +09:00
Jaeun Choi 95d83e8040 evas: fix bugs in gif image loader
gif's logical screen size (which is considered the image size)
might be different from the size of each frame.
when decoding a frame, the width and height of the decoded data should be
based on the size of the frame, not on the size of the logical screen size.
if a frame is decoded into a buffer of screen size, this might happen

(frame = 6 X 3, logical screen = 5 X 3)
OOOXXX      OOOXX
OOOXXX  =>  XOOOX
OOOXXX      XXOOO

@fix
2017-02-13 14:28:43 +09:00
Carsten Haitzler 243e8a678b evas gl common - make render op explicitly signed as we set it to -1
this just is cleaner and now also matches types for render_op in gl
common context.
2017-02-12 15:48:51 +09:00
Carsten Haitzler ff05e39904 evas wayland egl engine - fix warning about struct wl_resource not used
this struct is not actually used other than in this func ptr decl and
it's warning-land for gcc, so .. make it void * and do things like
pretty much all other gl extn func ptrs... be very generic
2017-02-12 00:29:50 +09:00
Carsten Haitzler 6b59dbfdb4 evas gl drm engine - fix warning about struct wl_resource not used
this struct is not actually used other than in this func ptr decl and
it's warning-land for gcc, so .. make it void * and do things like
pretty much all other gl extn func ptrs... be very generic
2017-02-12 00:29:50 +09:00
Carsten Haitzler 73a5b84b8f evas wl shm - fix warning with unused variable 2017-02-11 10:24:42 +09:00
Carsten Haitzler 0356b1eb5e vpath usage - simplify to bare minimum to make gustavo happy
since these are only local path resolves, the do and wait are
technically not needed. also remove any other tmp strings
and use the vpath string resolving feature to avoid
printfs/strjoins/cats etc. etc. as well.

also remember to remove old name string from evas shm code - it worked
for me. i guess i was lucky and it happened to be NULL thus free was
fine.
2017-02-10 19:27:15 +09:00
Derek Foreman 2800038ee2 Revert "vpath usage - simplify to bare minimum to make gustavo happy"
This reverts commit 2037474dc0.

This causes the wayland_shm engine to seg fault immediately at
startup when attempting to create shm buffers.

Please make sure when committing changes to the wayland_shm engine to
test on intel, exynos, and at least one platform without dmabuf
capabilities - or using the EVAS_WAYLAND_SHM_DISABLE_DMABUF env var
to disable dmabuf on intel or exynos.

Anyone without the time or hardware to fully test changes to wayland_shm
can submit a patch to phabricator and assign it to me so I can fully
test it before landing.
2017-02-09 09:17:38 -06:00
Carsten Haitzler 2037474dc0 vpath usage - simplify to bare minimum to make gustavo happy
since these are only local path resolves, the do and wait are
technically not needed. also remove any other tmp strings and use the
vpath string resolving feature to avoid printfs/strjoins/cats etc.
etc. as well.
2017-02-09 22:06:16 +09:00
Carsten Haitzler 5c431b14de evas fb dev env var - allow in setuid processes with sanitizing
this allows only /dev/fb[0-0] or /dev/fb/something where somthing does
not begin with a . - thus no way to break out of the fb subdir... so
it should be ok... this keeps setuid safety and allows this env var to
work now as intended in this situation.
2017-02-09 18:38:28 +09:00
Carsten Haitzler 9eee1f80fc evas wayland shm engine - use vpath for getting xdg runtime dir
this should make the wayland shm engine safe to use from setuid
processes. it shouldnt depend on getenv of specific file paths if
setuid. vpatrh takes care of this in one central place
2017-02-09 18:38:28 +09:00
Carsten Haitzler 3bcd788c7d ecore buffer module - use vpath for xdg runtime for setuid safety
this should make ecore buffer module safe to use in setuid processes
2017-02-09 18:38:28 +09:00
Jean-Philippe Andre 2a239c211c evas: Fix invalid current state (invalid bool value)
newframe() resets some of the gl context properties, so match them
to our shadow copy in the gc state.

target_surface_set() also resets some of those properties but only
in our shadow copy, not in the actual GL context. As a consequence
we can't rely on setting a bool to 0 or 1 unless we also call the
equivalent GL function. Expand bitfields to 2 bits allows us to
set a bool to the invalid value of -1 (yes, that's not a real bool).

Also there is no need to reset the target surface to NULL during
newframe. It will be reset during target_surface_set.

This fixes some issues I encounter while working on GL filters.
2017-02-09 11:39:20 +09:00
Carsten Haitzler 8f2cfdf490 when resetting tex_target, set it to -1 so we force a reset 2017-02-08 22:59:37 +09:00
Carsten Haitzler 876c407977 evas gl commonnon - context - expand fields to 2 bits for invalid vals
we use invalid values (-1 or 0xff or 0x3 etc. invalid vals to know to reset
some state). expand fields out in size a little bit to allow that to
work again.
2017-02-08 22:57:28 +09:00
Carsten Haitzler 09e1a75f4f evas gl generic - remove dead code else case
plane limits are checked at top of function so no need to check in the
middle again. it's dead code. fixes CID 1362729
2017-02-08 21:19:39 +09:00
Carsten Haitzler 98aac6118d evas gl generic - comment switch fallthrough as intended
this is intended. document as such.
2017-02-08 21:19:39 +09:00
Carsten Haitzler 1d60f42e63 evas gl common - reduce data structure sizes got gl common context
this reduced pipes to 32 as default max pipes is 32 and we never
actually go  up beyond 32 unless oyu use env vars to expand... and no
one will... and actual testing shows us top out at about 30 pipes
usage in anything i can find/test. this packs more bool flags together
as bits instead of itns or chars to save memory.

@optimize
2017-02-01 16:08:04 +09:00