Summary: This commit fixes compiler warning:
modules/evas/engines/gl_common/evas_gl_3d.c:1322:48: warning: 'ld' may
be used uninitialized in this function [-Wmaybe-uninitialized]. We
declare 'ld' as NULL now, and check it is valid before using it.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: glsym_evas_gl_common_error_set used here leads to an implicit
declaration in compiler warnings. Remove the call to that function and
just print out an error message. This is a cleanup function anyway.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: In fixing a Coverity issue, I copy/pasted a call to
evas_gl_common_error_set without compiling :( Bad me !! This commit
fixes the issue (data was undefined). Since evas_gl_common_error_set can
take NULL as the data parameter, lets use that.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
evas gl window was freed before new one was created getting shared ctx
to 0 refcount thus freeing everything there - BAD. fix. new issue in
git, not from release
so this is a re-try at the evas gl destination alpha fix. this is what
cedric tried, but done RIGHT. it required adding an ecore_x call to
create a window with correct visual/colormap. it requires doing
visuals totally correctly all the way from ecore_evas to the evas
gl_x11 core. nvidia drivers are very picky about visuals. i also had
to vid the egl/gles code too to do the same thing. nvidia gles/egl
drivers are also picky, mesa is not. this all requires a lot of code
changes. it's far from trivial
this isn't backported for a few reasons:
1. verify this fix doesn't break for anyone.
i tested:
nvidia glx + egl/gles
intel glx + egl/gles
radeon glx
it needs wider testing. nouveau, fglrx for starters and maybe
some other gles/egl drivers.
2. have some review time
3. time to settle before blasting to stable branches
@fix
Summary: The function prototype for eng_context_create has recently
changed in gl_common, however nobody thought it wise to update all
engines using it, so this commit fixes the function for the gl_drm
engine.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Not sure if this is very relevant, since GLX does not support
GL-ES as such, anyways... We should be using the extension
GLX_EXT_create_context_es_profile to create proper contexts.
Note: GLX + OpenGL-ES 1.1 crashes at any function call on my
machine (binary bloc driver), while EGL + GLES1.1 is fine.
Summary: Apparently, somewhere down the line, the function prototype
for eng_context_create was changed in the EVGL_Interface, but nobody
decided to fix All engines. This commit fixes the function prototype
for evgl_eng_context_create
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Forgot to set the TLS value after creating a new context.
No problem would show up in most cases, even in my test app.
But elementary_test GLView would just not work at all, spitting
incomplete FBO errors at me. Damn this one line was hard to find.
But introduced in df66916cd22ec6c4.
This introduces XPixmap usage for indirect rendering.
Of course this works only for the gl_x11 engine... and for
now only when using EGL... and only on some drivers...
damn limitations.
Direct rendering should work on more platforms (eg. some desktop
nvidia cards with the EGL drivers).
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).
Welp, glGetString() crashes if called before eglInit... And this
piece of code is now useless because "safe native" mode is not
used anymore (safe_native is never read).
Remove all safe native-related code.
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 should add support for the following EGL extensions:
- EGL_KHR_fence_sync
- EGL_KHR_reusable_sync (eglSignalSyncKHR)
- EGL_KHR_wait_sync (eglWaitSyncKHR)
@feature
evas gl CreateImage function was assuming the current context
should be used to create an image, while the equivalent EGL function
specifically requires the context to be specified.
This also imports some definitions for CreateImage.
And fixes typo in glEGLImageTargetRenderbufferStorageOES.
This adds new functions in Evas_GL_API struct. The version
number will be bumped to 2 in a later commit.
@feature
This is a new feature allowing direct rendering even when
the view is rotated. In that case, the application is responsible
for rotating its view and rendering it properly given the object
geometry.
This implements support for the flag
EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION
@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
When using direct rendering, glClear() should not do anything
if the ClearColor was (0,0,0,0). The application would indeed
expect a transparent output (so, see the widgets below the view),
but glClear would erase the pixels instead. So add a quick check
to skip glClear entirely in that specific case.
Summary:
When compiling for EGL, GL_LINE_SMOOTH ends up not being defined so
compile breaks. This fix just checks if GL_LINE_SMOOTH is missing and
if so it defines it.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This was affecting use of GL backend when having a transparent window. It
is actually a fix for a bug reported by Thanatermesis. It has been inspired
by D1229.
To reproduce the issue just do ELM_ACCEL=gl elementary_test -to "Icon transparent".
Summary:
evas_gl_symbols() (introduced in commit 9a9d78d) was not dlsym()ed
which led to unloaded symbols, so NULL function pointers which were happily
dereferenced, leading to an early segfault, and therefore to a broken engine.
@fix
Reviewers: cedric, raoulh
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1440
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
These are obsolete codes because evas engines no longer
has a use case for handling the drm file descriptor. And also it
is the same change as what Stefan Schmidt did to evas_drm.
Test Plan: N/A
Reviewers: devilhorns, stefan_schmidt, cedric, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1452
Summary: Variable palpriv is going out of scope and leaks the storage it points to,
if we do not free it before exiting.
Test Plan: NA
Reviewers: seoz, raster, cedric
Subscribers: cedric, seoz
Differential Revision: https://phab.enlightenment.org/D1429
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This fixes an issue where we had to hard-code the resolution in the
wl_drm module. Instead, we now properly get the current screen
resolution/mode from the drm library and use that.
NB: This is needed to fix wl_drm module in Enlightenment to setup the
proper resolution.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Now, evas gl-drm engine is using ecore_drm instead of its own code to handle tty.
This patch has removed obsolete tty handling codes from engine. It is almost the same as what
Stefan Schmidt did to evas drm engine.
Test Plan: N/A
Reviewers: devilhorns, cedric, raster, stefan_schmidt
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1409
With the move to ecore_drm for tty handling these all became unused.
Ecore_drm already takes care of setting up the SIGUSR1/2 handler and
the rest of the tty setup.
Now that this is gone evas_drm_init/shutdown have no functionality
anymore either.
When getting called from expedite we don't have ecore_evas in between which
normally sets things up for tty. Handle this special case here so the evas
drm engine keeps working for expedite.
Summary: This is the first step to introduce a gl-drm backend.
Test Plan: "ecore evas" create with ecore_evas_gl_drm_new(). It creates "ecore evas" with gl_drm evas backend.
@feature
Reviewers: raster, Hermet, cedric, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1187
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
This fixes broken rendering of the main surface when new surface is created.
Rendering on main surface can be broken due to invalid size of common gl context.
Since common gl context is shared between surfaces, if new surface has been changed
size of common gl context, then rendering on main surface can be broken.
In order to fix problem, engine has to change size of common gl context after egl
make current according to size of current Outbuf.
@fix
Test Plan:
run elementary_test with wayland_egl engine under wayland and click any
button to create new surface. watch the main surface of elementary_test.
Reviewers: devilhorns, raster, stefan_schmidt, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1346
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
use eng_output_resize of software_generic engine and move wl_egl_window_resize to
eng_outbuf_reconfigure. and remove eng_output_resize of wayland_egl.
@fix
Test Plan: run elementary_test with wayland_egl engine under wayland
Reviewers: devilhorns, raster, stefan_schmidt, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1343
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
On Ubuntu 14.04 it makes a 32 bit depth window un-responsive
to any XEvent.
Reviewers: cedric, raster
Reviewed By: raster
Subscribers: raster, capOM, cedric
Differential Revision: https://phab.enlightenment.org/D1236
Reset the Outbuf's Engine information pointer.
We also don't need to do an eng_window_free during reconfigure because the
software_generic_update function will free it anyway.
We should also re-setup the tilebuffer during eng_setup.
Fix gl_context resize to work even if there is no wl_egl window setup
yet.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This is the first part of the wayland-egl engine fix. Don't resize the
gl_context during the first_rectangle function, and don't set any
preserve bits on the gl_context
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
If we fail to init gl_generic then we should cleanup properly and free
the recently created Outbuf.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This fix T1459. I have added an ERR to catch this kind of issue earlier.
I am wondering if that should not be even a CRI.
The reason why we do see the problem only after the introduction of the
use of Eina_Rectangle_Pool is due to how efficiently they pack data, resulting
in ressource ending up in the wrong format bucket. Nothing wrong with the
patch itself.
Summary:
@fix
Segfault in wayland_egl engine is casused by illegal library linking.
Fix this by linking to GLESv2 and EGL libraries.
Test Plan: N/A
Reviewers: devilhorns, raster, cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1332
i found that we are not setting u and v to be smooth (linear
interpolate) for yuv reendering, even when asked. they remain at a
default "nearest". this enables linear for u and v always, meaning
even when smooth is off, we still interpolate u and v (not y), and
even when at 1:1 with no scaling u and v get interpolation for better
quality.
@fix!