Commit Graph

1947 Commits

Author SHA1 Message Date
Dongyeon Kim 7587645672 Evas GL: Free safe extensions hash when engine shuts down
This fixes the memory leak.
Thanks @rajeev.jnnce for spotting this!
2015-09-17 10:28:59 +09:00
Jean-Philippe Andre 2381d8160a Evas GL shaders: Add mask 21, 12, 22 downsampling modes
This is a huge patch, but keep in mind that 4326 line changes
were automatically generated from the template GLSL files.

This also adds some minor refactors here and there to accomodate
for the new shaders, but nothing crazy.

"GL fast-path" downsampled masks should now look pretty good.
2015-09-14 11:20:21 +09:00
Dongyeon Kim 1b049b6fba evas/gl_common: Do not set minus value to unsigned int
Summary:
cur_tex* are unsigned int, so minus value should not be set.
Also, add cur_texa, cur_texm here.

Test Plan: Local tests

Reviewers: jpeg

Subscribers: mer.kim, wonsik, cedric

Differential Revision: https://phab.enlightenment.org/D3036
2015-09-08 17:41:40 +09:00
Shinwoo Kim e97d5973e5 ecore_evas_extn: Fix server rendering after restart
Summary:
The server can render, only after the server get the OP_SHOW from the client.
However, if the server relaunches while client is running, the server cannot get the OP_SHOW.
In this case, the client should send the OP_SHOW, when the server is added.

Test Plan: Relaunch a server especially the indicator, while client is running.

Reviewers: raster, cedric, Hermet, woohyun, jaehwan, jypark, jpeg

Subscribers: cedric, seoz

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

Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
2015-09-08 13:50:31 +09:00
Stefan Schmidt 7c36761e62 evas: gl_generic: fix leak if we return dst and not newdst
In case we still retrun dst we should make sure we free up the newly
allocated newdst.

CID: 1323090
2015-09-07 13:41:47 +02:00
Jean-Philippe Andre 69cbbc2184 evas: Add internal context_dup function
This will simplify some code related to clipping and masking.
2015-09-04 11:11:39 +09:00
Jean-Philippe Andre d69f9e0b84 Evas masking: Fix potential invalid access to mask image
After clip_image_get, the old mask may be replaced by a new one,
and unref'ed, but it is later on set back as the context mask image.
Maybe it's possible that there was 0 reference and the image
got freed in between.

No idea how to test this.

@fix
2015-09-04 11:11:39 +09:00
Jean-Philippe Andre b6abbf1277 Evas masking: Make sure to check alloc before freeing old image
Okay, I'm being paranoid and this can't possibly happen (calloc
fail? yeaaaah) but this makes sure we don't return NULL after
freeing the original image.
2015-09-04 11:11:39 +09:00
Jean-Philippe Andre b7ce5d9c47 Evas: Remove useless include
config.h is already included in the private headers, and should be
included first anyways.
2015-09-04 11:11:38 +09:00
Subhransu Mohanty 8fe5e277e5 evas - fix texture context bind reset in gl common using wrong texture
evas gl common was simply resetting to the wrong texture id in the gl
context struct - it was using pipe[0] not state.current. why i don't
know. i know i wrote the pipe[0] code many years ago - really don';t
know. it may have been a transitional piece of code that just happened
t6o work 99% of the time that never got fixe when i added pipes.

@fix
2015-09-02 18:55:43 +09:00
Carsten Haitzler 133ab7f58c evas - gl common - make yuv gl textures double-bufffered like yuy2
this pulls yuv in line with yuy2 textures and dobule buffers them.
this is a workaround some driver bugs where either the driver doesnt
block and wait for the gpu to finish with a texture when updating OR
it does wait, and when it does it blocks and spins using cpu.
2015-08-31 10:25:02 +09:00
Carsten Haitzler bdebfe7962 efl - jp2k loader - guard against openjpeg bug tha causes an abort
so... if you load a non-jp2k file using openjpeg, you can get an abort
deep inside the openjpeg library that we can't do anything about. we
set all error handlers but literally the openjpeg code has ab assert
there that causes this bug. it shouldn't and newer opengjpeg libs have
it removed, but 1.5.2 has it and this causes an untrappable crash.
this is simply bad behavior in openjpeg not allowing it to be used
safely to loade image files. the relevant backtrace:

    w=w@entry=0x7fffffffb548, h=h@entry=0x7fffffffb54c,
    alpha=alpha@entry=0x7fffffffb556 "", map=map@entry=0x7fff29ac2000,
    length=<optimized out>, error=error@entry=0x7fffffffb5bc,
    opts=<optimized out>)
    at modules/evas/image_loaders/jp2k/evas_image_load_jp2k.c:111

the relevant code in openjpeg:

int cio_numbytesleft(opj_cio_t *cio) {
  assert((cio->end - cio->bp) >= 0);
        return cio->end - cio->bp;
}

so that assert is triggered. and nothing can be done about it which is
pretty poor.

so an upgrade of openjpeg should fix this as in newer versions have
dropped the assert line in that function, but until poeople have that from
their distro, this adds magic number checks for file headers that avoids
using openjpeg if it's not "apparently" a jp2k file. this does not
stop a corrupt file or a maliciously designed file still causing this
problem, but it does just result in an abort() and isnn't seemingly an
overflow isse that can be exploted, so if you still suffer, find a way to
upgrade openjpeg to 2.x. until then... this reduces inadvertent damage.

@fix
2015-08-24 11:39:12 +09:00
Chris Michael 65578034ef Add experimental implementation of custom animator ticks
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-08-20 14:21:02 -04:00
ChunEon Park ea676ede42 evas: fix win32 build warning.
include evas_private.h so that
internal ector eo apis have affected with symbol visibilty declarations.
2015-08-20 18:09:39 +09:00
Cedric BAIL 7c83af2ae3 evas: fix ref/unref of ector renderer to always happen in the main loop. 2015-08-19 16:06:39 +02:00
Jean-Philippe Andre a3db22659f Evas GL: Debug APIs should also restore context
As discussed briefly with @spacegrapher
2015-08-19 13:33:55 +09:00
Jean-Philippe Andre fbd5db19bd Evas GL: Also generate debug functions for GLES 2 2015-08-18 18:31:40 +09:00
Jean-Philippe Andre 371e4becd6 Evas GL: Add EVGL_FUNC_BEGIN() to GLES 3 functions as well
This call ensures that the context is current (context restore).
2015-08-18 18:31:40 +09:00
Jean-Philippe Andre af37cc2be4 Evas GL: Simplify previous commit
Also generate the debug functions for GLES 3
2015-08-18 18:31:40 +09:00
Dongyeon Kim bea42e6a00 Evas GL: Restore current context to evas gl context when the backend has taken over
Summary:
When Evas GL apis are called outside of on pixels callback,
evas gl backend context may have been made current, and Evas GL will
render into a wrong context.
So here we provide context restore mechanism of keeping track of
currently bound context and calling make current when needed.
@feature

Test Plan: Run Evas GL test cases

Reviewers: jpeg, cedric

Subscribers: mythri, mer.kim, wonsik, cedric

Differential Revision: https://phab.enlightenment.org/D2956
2015-08-18 18:31:40 +09:00
Chris Michael a72cab4d6e evas-wayland-egl: Remove extra blank line
Summary: No function changes, just removed an extra blank line

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-08-11 10:12:43 -04:00
Chris Michael ec43fa32ef evas-wayland-egl: Add support for partial update extension
Summary: if EGL_KHR_partial_update extension is implemented in the
driver, set damage region. This is done before the draw calls.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-08-11 10:11:26 -04:00
Mike Frysinger f33a46ce17 use SDL2 everywhere
Some files were still including SDL-1 headers even though we only link
against SDL2 libs.

URL: https://bugs.gentoo.org/551882
Reported-by: Barnaby <badbit@me.com>
Reported-by: Romain Naour <romain.naour@openwide.fr>
2015-08-07 12:01:44 -04:00
mythri.venugopal d9ee48b013 evas gl: add support for new partial update extension.
Summary:
If EGL_KHR_partial_update extension is implemented by the driver,
set the damage region. This is done before the draw calls.

@feature

Reviewers: wonsik, spacegrapher, jpeg

Reviewed By: spacegrapher

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-08-04 17:34:30 +02:00
Oleksandr Shcherbina 60b16be772 Evas canvas3d: Move evas 3d types to evas_types.eot
Summary:
Move evas_canvas3d types from Evas_Eo.h to evas_types.eot
Change enum constatnt for vertex_arrtib, material_attrib, blend_func
Correct namespace for Evas.Real type

Reviewers: cedric, tasn

Reviewed By: tasn

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2734
2015-08-04 10:57:14 +01:00
jiin.moon 94abb3a422 ecore_evas: Fix crash in async render
Summary:
The root cause of the crash is freed memory.
The evas_object_image_data_set api called with extn buffer in _ipc_server_data.
But there is no inform to render when free this buffer.
@fix

Reviewers: Hermet, jpeg, jypark

Subscribers: stefan_schmidt, cedric

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

Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
2015-08-04 11:59:24 +09:00
Nicolas Aguirre d54ef1d593 Revert "[HACK] ecore_evas_fb: Comments ecore_fb_ts calls that aren't resolved at runtime"
This reverts commit ff5f8a0412.
2015-08-03 14:34:59 +02:00
Nicolas Aguirre b79ab57226 Revert "Include <Eet.h> where needed. cf:"
This reverts commit 877338659b.
2015-08-03 14:34:57 +02:00
Nicolas Aguirre c1a483f2af Revert "evas: Adds an eglfs module"
This reverts commit 270215889d.
2015-08-03 14:34:56 +02:00
Nicolas Aguirre 3594b230af Revert "ecore_evas: Adds an eglfs module"
This reverts commit a254725d6d.
2015-08-03 14:34:54 +02:00
Florent Revest ff5f8a0412 [HACK] ecore_evas_fb: Comments ecore_fb_ts calls that aren't resolved at runtime 2015-08-03 14:16:35 +02:00
Florent Revest 877338659b Include <Eet.h> where needed. cf:
https://github.com/openembedded/meta-oe/blob/master/meta-efl/recipes-efl/efl/efl/0002-evas_3d-Add-Eet.h-includes.patch
2015-08-03 14:16:35 +02:00
Florent Revest 270215889d evas: Adds an eglfs module 2015-08-03 14:16:35 +02:00
Florent Revest a254725d6d ecore_evas: Adds an eglfs module 2015-08-03 14:16:35 +02:00
Chris Michael a4ab05aadd evas-wayland-shm: Use wl_display_dispatch_pending to wait for buffers
Summary: This fixes T2625 where launching filemanager would cause a
deadlock. The issue here is that wl_display_dispatch actually uses
poll() which will block and wait, while using
wl_display_dispatch_pending does not case any blocking.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-31 09:58:08 -04:00
Derek Foreman 99af748e4b wayland-shm: When we run out of shm buffers kick the server to get some back
Summary:
This fixes a rendering issue with wayland apps. We consume all buffers then
drop any attempted renders that take place while we have no buffers.
This fix now waits for the server to give us some buffers back.
This is the cause of T2612

@fix

 #Kansas

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2897
2015-07-30 15:37:21 -04:00
Chris Michael 9c432ca590 ecore-evas-wayland: Remove unused variable
Summary: As we no longer need the wdata here (see previous commit), we
can remove the usage of this variable

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 15:30:36 -04:00
Chris Michael 82de5a66d7 ecore-evas-wayland: Remove call to ecore_wl_window_update_location
Summary: This function should really not be called here as it triggers
an xdg_surface_set_window_geometry call which (in turn) should only be
getting called when the window geometry (meaning visible region)
itself has changed.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 15:17:57 -04:00
Chris Michael d68644c920 evas-wayland-shm: Set wl_display field inside the Shm_Surface structure
Summary: As we need access to the wl_display in order to dispatch
events on the queue while we wait for free buffers, pass it in to the
surface creation function and set it in the Shm_Surface structure

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 15:11:09 -04:00
Chris Michael fae40e995b evas-wayland-shm: Pass along the wl_display parameter to the surface creation function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 15:10:49 -04:00
Chris Michael b1bb88b8f2 evas-wayland-shm: Modify existing engine functions to take a wl_display parameter
Summary: These functions need to have an additional wl_display
parameter so that we can set the field inside the Surface structure

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 15:09:55 -04:00
Chris Michael a48c54cddd evas-wayland-shm: Provide wl_display to the surface structure
Summary: In order to fix an existing rendering issue, we need access
to the wl_display so that we can dispatch events on the que while we
wait for a free buffer

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 15:09:02 -04:00
Chris Michael 5f8f87df3d ecore-evas-wayland: Set wl_display in the evas engine structure
Summary: This sets the wl_display field of the Evas engine info
structure so that the wl_display can later be used for dispatching
queue while we await a free buffer

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 14:42:14 -04:00
Chris Michael a1c203967e evas-wayland-shm: Provide wl_display field in engine info structure
Summary: This just adds a field so we have some place to store the
wl_display for use in the evas wayland engine

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 14:42:09 -04:00
Chris Michael 37b767994e evas-wayland-shm: If no depth is specified during reconfigure, use existing depth
Summary: This fixes a crash which Could occur if no outbuf depth was
given during a call to reconfigure.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 13:53:10 -04:00
Derek Foreman f86e04b14f wayland-shm: Introduce buffer ages
Summary:
We now track each shm buffer's time since last draw so evas can tell
what it needs to re-render.

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2893
2015-07-30 11:45:38 -04:00
Derek Foreman 997e84f14e wayland-shm: Assign buffers in the swap_mode callback
Summary:
This is when we're about to start a new render, so it's the best
time to set up the next buffer to draw to.

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2892
2015-07-30 11:45:32 -04:00
Derek Foreman ebea504cbc wayland-shm: rename _evas_outbuf_swapmode_get() to _evas_outbuf_swap_mode_get()
Summary: Everyone else calls it swap_mode, let's be trendy.

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2891
2015-07-30 11:45:26 -04:00
Derek Foreman cf3434a927 wayland-shm: Remove curr_buff from Shm_Surface
Summary:
We already have *current, but we're not using it properly.  Let's throw
out curr_buff and just use *current.

This temporarily makes swapmode_get do full renders, this will be
fixed in a future commit that adds proper buffer ages.

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2890
2015-07-30 11:45:17 -04:00
Derek Foreman 157ad667b4 wayland-shm: refactor _evas_shm_surface_data_get()
Summary:
Split out the buffer picking stuff because we're going to want to call
it from somewhere else.

Reviewers: zmike, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2889
2015-07-30 11:45:05 -04:00