Commit Graph

2205 Commits

Author SHA1 Message Date
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
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
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
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
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 27a62edd68 gl_cocoa: use triple buffering
Interestingly enough, this makes some graphical artifacts vanish...
2017-03-09 00:57:56 +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-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-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
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
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
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
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
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
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 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 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
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
Carsten Haitzler 8467d65b23 evas gl common - have a gl array buffer pool to avoid hitting malloc
this improves performance a bit by avoding libc's malloc and the heap
by using a custom buffer pool thathas basically immediate O(1) lookup
time (in real life) that baloons out and contracts back as time goes on.

@optimize
2017-01-31 23:01:50 +09:00
Chris Michael 20cbc92639 ecore-evas: Remove unused 'just_mapped' flag
As this flag is not being used anywhere for anything, remove it.
Useless to have it.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-30 11:50:05 -05:00
Chris Michael 6c9dc2a5ba evas-wayland-shm: Compare hidden flag during reconfigure
Small patch to compare if the hidden flag being passed in is the same
as the one stored in Outbuf. With the addition of xdg_shell v6
support, we cannot commit a surface with an existing buffer until the
surface has been configured. In order to facilitate this, we will use
the 'hidden' flag so that any surface_post does not actually attach a
buffer unless configure has already been handled on the surface.

ref T5090

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-11 12:36:33 -05:00
Chris Michael d1216ba7dd evas-wayland-shm: Minor formatting fix
NB: No functional changes, just formatting

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-11 12:36:16 -05:00
Derek Foreman 24b277a040 dmabuf: Make failure a DBG instead of an ERR
It's not really an error - fallback to shm will be attempted.
2017-01-09 08:30:25 -06:00
Chris Michael f026055630 evas-gl-common: Fix incorrect expression
Coverity reports this as in incorrect expression because it was
checking cache_entry width <= 0 twice. Fairly safe to assume that the
proper check should be width || height.

Fix CID1368336

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-08 19:48:26 -05:00
Chris Michael 6cf290faec evas-wayland-shm: Fix formatting
NB: No functional changes, just reformatting so that this insane
one-liner wraps to 80...

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-06 09:33:58 -05:00
Carsten Haitzler bb6c324e73 evas gl - avoid a possible crash of tex upload of invalid sized image
so i had a crash where my bt said the image size is 1x1 but the img
struct said its 0x0, so put in protection to not upload a texture from
a 0x0 image... just for now... because this is odd - the image data is
a real ptr i can access and there should be at least 1 pixel... but i
can't be sure this fixes it as this is one of those "one offs" i cant
reproduce...

@fix
2017-01-06 17:46:13 +09:00
Derek Foreman 44517fca5c wayland_shm: Yeah I dunno
This doesn't make any sense to me so it can't be right, right?

Fixes session recovery.  If it breaks something else talk to devilhorns. :)
2017-01-05 13:40:31 -06:00
Derek Foreman 4c1227433f wayland_shm: Add a way to update the stored wayland objects
On session recovery the engine needs to be given new copies of the
surface, dmabuf, and shm objects to run in the new connection.

This fixes session recovery breakage introduced when we stopped recreating
the outbuf on reconfigure.
2017-01-05 13:40:31 -06:00
Derek Foreman 7b0f937880 wayland_shm: Add a force flag to surface reconfigure
We're going to need a way to force reconfigure unconditionally to make
session recovery work again.
2017-01-05 13:40:31 -06:00
Derek Foreman 780293ac93 wayland_shm: Shut up coverity
Quite cosmetic, but I suppose this is better than flagging as false
positive.

CID1368209
2017-01-04 08:54:03 -06:00
Chris Michael 80f5860c68 evas-gl-generic: Mark 'data' parameter as unused
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-04 08:12:21 -05:00
Carsten Haitzler b68280bd85 wayland egl - unbork after manmower broke rendering removing swapinterval
so removing eglSwapInterval() is a very poor idea as then... who knwos
what it is? this broke at least nouveau (under weston AND under
enlightenment). a very skillful b0rk here than i luckily caught
quickly! :)
2017-01-04 19:21:02 +09:00
Derek Foreman 44c69195d3 wayland_egl: Stop setting swap interval to 0
We have some "vsync" variable cargo culted from somewhere that is never
properly set, so is always 0 because it's in a calloced structure.

It's then used to set eglSwapInterval() to 0 always, which results
in mesa using wl_display_sync() instead of wl_surface_frame() for
its frame ready callback mechanism.

Remove it entirely and use the sensible default swapinterval.
2017-01-03 17:07:54 -06:00
Derek Foreman 06c05f853a evas_shm: Fix dmabuf failure
This keeps us from accidentally going through the fallback path twice and
crashing.  It also clears up some refcounting problems that would have led
to leaked memory in the crash case.

fix T5037
2017-01-03 14:20:18 -06:00
Carsten Haitzler b1aa6360e0 evas generic loader - expand buffers in case of weird install location
so we had just 128 bytes for path to generic loader utility. in most
cases this is plenty but if you have bizarre symlinks and long paths
we may run out of space, so move up to 4k buffers as this is
realistically the max path len anyway on a system.

@fix
2017-01-02 18:53:56 +09:00
Carsten Haitzler 9e01cf2698 evas image async preload - add option to also make header load async
to date if you use async preload we still load the header
synchronously and this can be horrible especially with generic
loaders. there is no way to farm this off to the preload thread. now
there is. youhave to set it as a skip head load option before doing a
file_set AND you need to issue a preload ... but now it's possible.

@feature
2017-01-02 18:53:56 +09:00
Carsten Haitzler b0530aba4f evas cutouts - quickly avoid huge per issues with large nos of cutouts
i found evas_common_draw_context_apply_cutouts() was procsessing 300+
cutouts and as it's O(n^2)/2 to try and merge adjacent rects for
cutouts this really performs like complete junk. we apply cutout rects
a LOT. this is not the best solution, but it's quick and much faster
than doing the clipouts which drop framerate to like 1-2fps or so in the
nasty case i say (tyls -m of photos in a dir with a 2160 high
terminal).

this figures out the target area to limit the count of rects
significantly so O(n^2) is far far better when n is now < 10 most of
the time. and for the few operations where it's a high value this now
uses qsort to speed up merges etc. etc.

@optimize
2017-01-02 18:53:56 +09:00
Minkyoung Kim 40e9da0101 Evas GL:Bind texture to correct one.
Summary:
If user bind textureA and want to use it continuously, do not call glBindTexture(textureA) again.
But expect that textureA will be binding.
So EvasGL sould not change binded texture silently.
Restore texture to previous bound one after allocating new texture.
And when destroy texture, reset texture to 0 if it is current bound texture.

Test Plan: Tizen 3.0

Reviewers: wonsik, dkdk, cedric, jpeg

Reviewed By: jpeg

Differential Revision: https://phab.enlightenment.org/D4524
2017-01-02 15:29:49 +09:00
Daniel Kolesa 18a0183c37 evas: use new property impl syntax 2016-12-27 16:37:41 +01:00
Jean-Philippe Andre 2f1d666a06 evas: PNG save of ARGY88 needs unpremul
PNG saves unpremultiplied values, so we need to do that
for the newly supported ARGY88 colorspace as well. Fixes
the previous commit.
2016-12-22 19:23:01 +09:00
Jean-Philippe Andre 3425ad2abd evas: Implement GRY8/AGRY88 save support for PNG
This enables the PNG saver to save images with gray and
alpha + gray colorspaces. GRY8 is usually used for alpha only.

Note: This commit also introduces whitespace changes. Sorry
about the mess, but at least now we have spaces only. Read the
commit with show -w :)

@feature
2016-12-22 17:43:23 +09:00
Carsten Haitzler 92b2c86ed8 evas gl engine - fix loading of pager backgrounds in e again...
fixes recent commitby jpeg
2016-12-21 17:58:38 +09:00
Jean-Philippe Andre 1d4affadd1 evas: Try to fix compilation with EGLAttrib 2016-12-21 13:56:14 +09:00
Jean-Philippe Andre 2e89702d57 evas: Fix image save with GL engine and orientation
This fixes evas_object_image_save after changing the orientation
of an image in the GL engine. In SW engine the pixel data is rotated
in memory, so things worked fine from the beginning. In GL we may
have to go through loops and hoops in order to rotate and fetch the
data from the GL texture.

This should fix ce45d44.
2016-12-21 13:56:05 +09:00
Derek Foreman fd5a0f6ff9 headers: update copyright 2016-12-20 10:31:26 -06:00
Derek Foreman acb0ee2a9d evas engines: Use EGLImageKHR instead of EGLImage
If someone's trying to build efl git with 2.5 year old EGL headers they get
a break on missing EGLImage...

We should probably consider keeping an up to date copy of the EGL headers
in efl.  There may be someone out there with even older headers.
2016-12-20 10:16:40 -06:00
Jean-Philippe Andre 85b5064b67 evas/ply: Add filename in error logs
As suggested by @k-s

I'm pretty sure that this parser will easily fail. Eg. find uchar
properties but it's not r,g,b in this exact order? No color for you.
Find no uchar at all? Fail immediately even if we can handle a
no color situation just fine.
2016-12-20 09:58:43 +09:00
Derek Foreman 00f8cc4566 wayland_egl: Use common implementation of eglCreateImage
This might fix nested compositors on some architectures...
2016-12-19 16:20:00 -06:00
Derek Foreman fba3927a7d wayland_egl: Remove some weirdness from our egl extension queries
Still totally wrong, of course, but at least a little less wacky.
2016-12-19 16:13:48 -06:00
Derek Foreman ac4c8dbbab gl_x11: Use common implementation of eglCreateImage
Throw away the local copy and use the one in gl_common.
2016-12-19 15:52:58 -06:00
Derek Foreman 2e6f93ccda gl_drm: Use common eglCreateImage implementation
Refactor to reduce copy and paste.
2016-12-19 15:52:58 -06:00
Derek Foreman 74a456253a gl_common: Make secsym_eglCreateImage a wrapper
eglCreateImage and eglCreateImageKHR are subtly different.  Now we try to
handle them both properly by exposing an abstraction.
2016-12-19 15:52:58 -06:00
Derek Foreman 93899429ef gl_common: fix eglCreateImageKHR query
There are surprisingly few GL extensions that start with GL_EGL...

This is apparently more widely deployed than OES, so let's bump its
priority too.
2016-12-19 15:52:53 -06:00
Jean-Philippe Andre 72f98a0649 evas/ply: Fix some memleaks
I have a strong feeling that this parser is not very robust...

Closes T5001
2016-12-19 12:06:24 +09:00
Derek Foreman c11b66434f evas engines: Stop using arrays of 1 member for egl context and surface
There's actually an array of 2 in gl_x11, but it appears we only use the
first 1, except in an #if 0 block.

I gather this is legacy for some reason - it sure doesn't seem to make
any sense now, so I'm chopping off all the extra array indexes.

Note: I've not changed gl_sdl - it looks like it doesn't use the context
or surface at all and they could just be removed, but I don't build that
one here and don't want to touch it.
2016-12-16 09:48:15 -06:00
Jean-Philippe Andre 581505791a evas: Remove context from some engine function
This is for canvas_alpha_get. context is never used.
2016-12-16 10:40:55 +09:00
Jean-Philippe Andre 260d838d22 evas: Remove context from polygon internal functions
It's not used
2016-12-16 10:37:54 +09:00
Cedric BAIL 57b5a237f2 evas: silence warning of clobbered variable in the png saver. 2016-12-15 11:31:31 -08:00
Awadhesh Singh f5a2602189 evas: fix memory leak in software generic in error case.
Summary:
pixels_tmp  memory need to be free in default case too.

Signed-off-by: Awadhesh Singh <awadhesh1.s@samsung.com>

Reviewers: singh.amitesh, raster, cedric

Reviewed By: cedric

Subscribers: atulfokk, cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-12-12 16:35:49 -08:00
Jean-Philippe Andre 68e6e46015 evas: Fix compilation after @cedric's "fix"
Don't forget git add!
2016-12-09 10:57:12 +09:00
Cedric Bail 7316bda150 evas: refactor swap mode info get. 2016-12-08 15:06:25 -08:00
Jean Guyomarc'h 42a722be23 evas-gl_cocoa: fix complete b0rkage of the engine
73b308fb66 slaughtered the gl_cocoa
engine. It's now back to life, lighter and shinier.
2016-12-08 20:53:27 +01:00
Chris Michael 0397769a65 evas-wayland-egl: Remove unused field from Outbuf structure
This patch just removes the 'evas' field from the Outbuf structure.
This should have actually gone in on the previous patch but I missed
removing it :(

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-08 09:32:33 -05:00
Chris Michael 269089c1be evas-wayland-shm: Remove unused varibles
These variables are unused (as reported by gcc), and 'ob' is not
really needed in eng_update so remove that also.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-08 09:23:36 -05:00
Chris Michael 5a0c03ded1 evas-wayland-egl: Cleanup wayland_egl engine and fix build break
A previous patch to refactor setup stage and reduce complexity
actually introduced several build breaks. This patch fixes the build
break for wayland-egl.

ref 73b308fb66

BAD CEDRIC !!!!!

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-08 09:11:28 -05:00
Chris Michael a85605553b evas-gl-drm: Cleanup evas-gl-drm engine build and fix build break
A previous patch from some french guy broke building of the gl_drm
engine. This patch fixes the build break and cleans up unused
variables, etc.

ref 73b308fb66

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-08 09:02:43 -05:00
Chris Michael 4a5db373d1 evas-drm: Remove unused variables and fix build break
Seems Cedric's patch for refactoring setup stage broke building for
the evas drm engine. This patches fixes the issue.

ref 73b308fb66

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-08 08:43:43 -05:00
Derek Foreman add19c8a77 gl_drm: Check for the correct dma_buf extension
We're importing, not exporting
2016-12-08 07:36:26 -06:00
Andrii Kroitor 0c9182b970 evas: fix software_gdi engine compilation 2016-12-08 14:13:01 +02:00
Carsten Haitzler fb3fca50c1 evas fb engine - fix build break cedric added... 2016-12-08 10:19:23 +09:00
Cedric BAIL 386e06c73c evas: do not rely on Evas canvas no longer passed during setup. 2016-12-07 15:47:56 -08:00
Cedric BAIL 73b308fb66 evas: refactor setup stage and reduce complexity for engine. 2016-12-07 15:47:56 -08:00
Derek Foreman da5f41723a gl_drm: Only use dmabuf if the extension is present
Need to check for the extension string instead of just the presence of the
function pointers.
2016-12-07 16:41:34 -06:00
Derek Foreman cef41ae70a gl_drm: Query eglGetProcAddress with dlsym
eglGetProcAddress should be queried with dlsym unconditionally.  What we
had could query it with other extended forms of eglGetProcAddress, which
is probably not what anyone wants.

Also, throwing away the weird extended forms because there's a good chance
our other gl bits don't run on any stacks that don't support normal
eglGetProcAddress.
2016-12-07 16:39:17 -06:00
Derek Foreman 661e44c38d gl_drm: simplify outbuf_reconfigure
Calling render_engine_software_generic_update from eng_setup lets us
remove a bunch of stuff from evas_outbuf_reconfigure.
2016-12-07 15:54:06 -06:00
Derek Foreman b997b108b5 gl_drm: Don't destroy the outbuf in reconfigure
Cedric tells me this is bad, and I never argue with Cedric.

We now re-use the same outbuf and just reconfigure the gbm/gl stuff.
2016-12-07 11:30:03 -06:00
Derek Foreman eafb05c58a evas - software generic - fix crash
Commit fcef8d8392
breaks any evas engine that frees/NULLs its own outbuf before
calling evas_render_engine_software_generic_update()

We should unconditionally set the outbuf, we only need to
do the free conditionally.
2016-12-07 10:10:42 -06:00
Carsten Haitzler fcef8d8392 evas - software generic - fix crash when buffer is freed when its the same
evas_render_engine_software_generic_update(0 definitely is wrong where
it wants to always free the outbuf even if the buffer passed in is the
same one and thus it ends up being freed and now invalid. fix it

@fix
2016-12-07 19:24:44 +09:00
Cedric BAIL 68470a50fe evas: as an example make PMAPS decoding interruptible. 2016-12-06 16:34:48 -08:00
Cedric BAIL 365f79b7ee evas: use emile and evas new infrastructure to interrupt decoding of JPEG early. 2016-12-06 16:34:48 -08:00
Derek Foreman df4f377ad2 wayland_shm: track mappings more effectively
Unmap any active mappings from buffer_destroy.  This also means we need
to clear the mapping after unmapping in fallback.
2016-12-06 16:34:54 -06:00
Derek Foreman 7fa02c8994 wayland_shm: Refcount the dmabuf buffer manager
Because we async render into buffers before the compositor has told us
we can use them, we can end up kicking over to fallback while still
rendering into a buffer.

Refcount the manager to let us clean up properly without crashing when
this happens.
2016-12-06 16:34:54 -06:00
Derek Foreman 9b048df6ff wayland_shm: clear busy bit for buffers during dmabuf fallback
If we pre-rendered then we have a busy buffer - we need to clear that
busy bit after reading from the buffer or buffer_destroy won't clean it
up.
2016-12-06 16:34:54 -06:00
Derek Foreman b897d86943 wayland_shm: Clear busy status when replacing an unassigned buffer
If we render fast enough we can use more than one buffer before the
compositor assigns us buffer ids.  We need to be careful to clear the
busy bit on all but the most recent one.
2016-12-06 16:34:54 -06:00
Derek Foreman 4258fa4f70 gl_drm: Allow testing of dmabuf objects
Enlightenment needs to know if a specific dmabuf format is supported
before it lets clients use it.  This lets E test commit a wayland
dmabuf object without assigning it a buffer.
2016-12-06 16:34:54 -06:00
Chris Michael 673b735917 evas-wayland-shm: Keep tile buffers in sync with size changes
Previous patch to not destroy Outbuf on resize should not have removed
this line else software generic tilebuffers will not be in sync with
the updated size.

ref 5ebba4463

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-06 14:14:49 -05:00
Chris Michael 29325b7903 evas-drm: Keep tile buffers in sync with size changes
This line should not have been removed from the previous patch. Thanks
to Cedric for catching this.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-06 14:05:19 -05:00
Chris Michael 08bb6b1eec evas-drm: Don't destroy Outbuf on resize
On an engine resize, we previously would destroy the Outbuf structure.
This patch modifies the code so that on a resize we no longer have to
destroy the old Outbuf and reallocate a new one. Instead, we will just
reconfigure the existing one and update it's properties.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-06 13:18:33 -05:00
Chris Michael 5ebba44635 evas-wayland-shm: Don't destroy Outbuf on resize
On an engine resize, rather than destroy & recreate the Outbuf
structure (and the associated surface) we can just call the
eng_output_resize function (which in turn will call
outbuf_reconfigure) to update Outbuf with new properties. This saves
us from having to create a whole new Outbuf every time we resize.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-06 13:03:52 -05:00
Stefan Schmidt e90622ec41 all: use void if we really want to make sure we do not accept parameters
In C we need this to make clear that we really do not accept parameters.
Found by the smatch source code matcher. I had run and fixed this before
but it seems to creep in again over time.
2016-12-06 17:16:24 +01:00
Stefan Schmidt 10fb982ac0 evas: native_dmabuf: make sure we check for NULL before not after we dereference
Same change as  just done in evas_native_tbm in commit
38dbe932db5c12f66ff2e045ac74107e149c14da.
2016-12-06 11:05:41 +01:00
Stefan Schmidt 7d93a1d45f evas: native_tbm: make sure we check for NULL before not after we dereference
Using *im and dereferencing it before doing the actual NULL check does not make
much sense. I kept the checks as they have been there before so the intent was
probably that they could be NULL and should be checked.

CID: 1270030, 1270029, 1270028
2016-12-06 11:05:41 +01:00
Carsten Haitzler e25b3eedb4 evas - protect against outbuf alloc fail possibility
this should fix T4967
2016-12-06 11:21:28 +09:00
Cedric BAIL 6427c77707 evas: refactor initialisation and shutdown of evas_common. 2016-12-05 11:22:52 -08:00
Chris Michael 5c1d6b1064 evas-wayland-shm: Don't recreate Outbuf if we are hidden
If the hidden flag is set, then we don't need to recreate the Outbuf
for a given canvas as the window is hidden and we are not going to
render there until it's shown again.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-05 09:21:20 -05:00
Chris Michael 9492ee21df evas-wayland-shm: Fix issue of destroying & recreating wl_surfaces on hide
When a canvas gets hidden, we don't need to destroy & recreate the
wl_surface. We can simply attach a NULL wl_buffer to the surface which
achieves the same result. This saves us from having to always destroy
& recreate surfaces when we hide/show.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-02 14:25:10 -05:00
Chris Michael 725e439545 ecore-evas-wayland: Add a 'hidden' field to engine structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-02 14:25:10 -05:00
Jean-Philippe Andre 182418dc1c gl drm/x11: Fix compilation for EGL < 1.5
This is an attempt at fixing compilation for systems with old
EGL headers (version < 1.5).

Thanks Roy for the report!
2016-12-02 14:26:47 +09:00
Derek Foreman f0e8ebeaea gl_drm: Fix eglCreateImage for 32-bit systems
eglCreateImageKHR and eglCreateImage have different prototypes, but we
treated them the same.  Fix that so 32-bit users can have them too.
2016-12-01 15:06:58 -06:00
Derek Foreman adabe89b3a gl_drm: Don't query gl functions that don't exist anywhere
We're just making stuff up now and hoping they magically match existing
prototypes, I guess.

Hardly the weirdest thing in this file.
2016-12-01 15:06:58 -06:00
Derek Foreman 9b6ec1ecc3 wayland_shm: enable dmabuf by default
Software rendered wayland clients will now attempt
to use dmabuf on some platforms.  This results in a window
that a compositor may be able to drop into a plane without a copy.

Disable it with the env var EVAS_WAYLAND_SHM_DISABLE_DMABUF
but if you need to disable it, please ping me or file a bug report.
2016-12-01 15:05:52 -06:00
Jean-Philippe Andre a3276714ee evas/x11: Fix EGL engine for recent nvidia binary
Thank you NVIDIA for breaking your drivers regularly!
eglGetDisplay(x11_display) should work but was consistently
returning 0 instead.

Apparently EGL 1.5 introduced "eglGetPlatformDisplay" that
is more advanced to open a display. So, prefer that over
eglGetDisplay if it's available.

@fix
2016-12-01 15:32:17 +09:00
Jaeun Choi b9965ffd8f evas: bug fix in bmp loader
when the DIB header is BITMAPINFOHEADER (size 40),
a bitmap file has alpha channel only if the compression method is BI_ALPHABITFIELDS (= 6).
the original code enabled alpha channel when the compression method was BI_RGB (= 0),
which made an opaque bmp image loaded as a transparent one.

@fix
2016-11-30 11:33:33 +09:00
Carsten Haitzler 254919d6d4 evas gl common engine - handle render to texture atlases properly 2016-11-22 20:01:25 +09:00
Jean Guyomarc'h 90c7a95a54 evas-gl_cocoa: add missing EVGL function
Not providing a call to the first method segfaults in elm_glview
right away. Instead of crashing, we now just issue a runtime error
about the method not being implemented.
2016-11-20 16:54:24 +01:00
Jean Guyomarc'h d91caf3e3b evas-gl_cocoa: fix error message
The call is actually NOT implemented.
2016-11-20 16:51:10 +01:00
Derek Foreman 8a7c154a57 gl_drm: Release any unqueued buffer before starting a render
If there's a "next" buffer set, we're better off freeing it before we
start to render.  This lets us keep gbm from allocating an extra buffer
which it currently never frees.
2016-11-18 09:43:15 -06:00
Derek Foreman aa3479570d ecore_drm2: Add a panic mode to drm2_fb_release
Previously we'd call this only when we absolutely needed to, so it made
sense to always attempt to free a buffer, including ones on scanout or
pending flip.

However, it's useful to have a way to release the "next" only, so we can
do that before starting a render to free up the buffer that's never going
to be scanned out.
2016-11-18 09:41:52 -06:00
Chris Michael 0f1e7bad92 evas-gl-generic: Add missing EINA_UNUSED for unused function parameter
NB: No real functional changes, just adding a missing EINA_UNUSED

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-18 08:13:47 -05:00
Chris Michael 55e2ed5279 evas-software-generic: Add missing EINA_UNUSED for unused function
parameter

NB: No real functional changes, just adding a missing EINA_UNUSED

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-18 08:09:17 -05:00
Carsten Haitzler 3eb0df1022 evas engines - add more support for noscale pixel buffers esp in gl
for gl noscale buffers are texture atlases that are fbo's. the point
is never to scale or transofmr them but to render them pixel for pixel
and just store pre-rendered data where its cheaper to do this than
rebuild every time. this is the enigne infra for sw and gl with the gl
code... it SHOULD work... in theory...
2016-11-17 18:41:32 +09:00
Carsten Haitzler 622277c82a evas - add engine api to get a specific fbo/surf that wont be scaled
this is to allow gl to specifically use an fbo as an atlas for these
kinds of buffers
2016-11-17 18:41:31 +09:00
Carsten Haitzler a479745e4f evas - add a prepare stage for objects before render
preparing an object is a good idea. especially with gl. you want to do
texture uploads BEFORE using textures all in one batch. otherwise this
may mean the gl implementation has to make a copy of your data in a
tmp location then copy it in later when texture becomes "unused" as it
may be in use at the moment, or it may have to stall and wait.

i have seen somewhere around 7-10% speedups on nvidia and intel
drivers with this on given a very special test case i brewed up (1000
32x32 images where i change 1 pixel every frame). this should have
impact really when we are modifying textures a lot. this is all i've
implemented for now, but this should/would/could do much more like
re-order map, proxy renders to render FIRST in a pre-render list
instead of inline and to pre-render fbo/buffer content for complex
objects like text or textblock etc.
2016-11-17 18:41:31 +09:00
Carsten Haitzler dbebf2835f evas surface/buffer wl support - define missing egl ifdefs if missing
this will define EGL_WAYLAND_PLANE_WL and EGL_WAYLAND_BUFFER_WL if
missing as SOME older egl public headers dont expose them and yet we
still wans to compile and support the feature should the egl BINARY
etc. actually support this (or be upgraded to support it after efl
compilation).

@fix
2016-11-17 18:41:31 +09:00
Carsten Haitzler 35cbdbb08f evas gl engines - buffer age - remove 'if age changes go to full' code
this technically isn't needed. it does help in some cases hide driver
or other buffer swap bugs, but in and of itself is not needed, so
remove. at least the drm egl bugs still happen on my pi3 so its
something else...
2016-11-17 18:41:31 +09:00
Carsten Haitzler e146371ed9 evas modules - only unregister log domain if its registered
some modules did check, some didnt... but this makes them consistent
and silences and eina err log. :)
2016-11-17 18:41:31 +09:00
Subhransu Mohanty 16cb5f7af9 evas/gl: Added support for stencil buffer creation while creating gl Surface.
Reviewers: jpeg, cedric

Reviewed By: jpeg, cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-11-16 13:46:40 -08:00
Stefan Schmidt 1976a02951 docs: module: add some missing docs in our modules using eo 2016-11-11 10:59:08 +01:00
Carsten Haitzler b1e5539005 swap mode - add evlog logging for querying surface age
more debugging to hunt down possible blocks in getting buffer age if
it happens
2016-11-07 11:47:46 +09:00
Carsten Haitzler ad9cc1676e egl engines (wl, x11, drm) - add buffer age events for debugging
this adds evlog events that give buffer age details for event log
debugging to help hunt down issues.
2016-11-07 11:45:08 +09:00
Carsten Haitzler d762f74962 wl_drm and eayland_egl buffer age fix for gl when age changes
so i was just about to add buffer age debugging evlogs to everywhere
doing buffer age and i found... drm gl and wayland gl engines DONT
HANDLE age change like gl_x11! they dont reset to a "full render" for
that frame. well well. this explains bugs i am seeing for sure. very
very bag! i thought this was handled properly. this does lend some
credence to my thoughts about somehow having a single universal buffer
swapping/update calculating and "applying" api inside efl somewhere...

anyway - this fixes this issue for these 2 engines which is a real
necessary fix to be correct.

@fix
2016-11-07 11:40:02 +09:00
Guilherme Iscaro 0fa8dc48cd Evas FB: Add support for region push hook.
This will be useful to support the Ecore_Evas VNC server
under FB backend.
2016-11-04 18:29:42 -02:00
Jean-Philippe Andre b8a76e20af evas: Fix masking with window rotation, take 2
The first patch did not work for maps. This explains why the
original code was so weird. But it actually made sense.

After struggling a bit I realized that we really just need
to shuffle around the pixel position on the window to map that
of the position in the canvas (unrotate it).

Note that compatibility with GLSL-ES (for OpenGL ES) implies
we can not use an array initializer like:
  vec2 pos[4] = vec2[4](a,b,c,d);
So the code could probably be optimized. But at least this works.

This patch also avoids calling glGetUniformLocation again and
again.
2016-11-04 15:28:56 +09:00
Jean-Philippe Andre 4071af438a Revert "evas: Simplify GL masking and fix window rotation"
This reverts commit 562528d28c.

This patch did not work with mapped images.
2016-11-04 15:26:41 +09:00
Carsten Haitzler 4ed2e01591 remove xcb support in ecore_x and evas engines as per mailing list
as per mailing list discussion about dropping xcb support now. it
hasn't been complete for a long time, thus not recommented for being
turned on. as we are moving to a wayland world xcbmakes even less
sense. as agreed, time to clean up a bit and remove a distraction as
well as not well tested code. this also updates po's too.

@feature
2016-11-03 22:22:54 +09:00
Jean-Philippe Andre 562528d28c evas: Simplify GL masking and fix window rotation
The original solution was really complex and relied on
transforming the current gl_Position into the screen
coordinate in pixels, and map that to the pixel position
in the mask.

This new solution simply pushes the required vertices for
the mask, based on its geometry. This fixes masks when used
in a rotated window.

Why was it so hard to get right? :(

@fix
2016-11-03 17:22:14 +09:00
Derek Foreman af4a71bcf0 wayland evas engines: share engine info structure
These engines are incredibly similar - by sharing the same engine info
structure we'll be able to simplify the wayland ecore_evas bits and
make them much more maintainable.
2016-11-02 13:37:01 -05:00
Derek Foreman 0b9f77ac96 wayland_egl: Remove unused wl_egl_window variables 2016-11-02 13:37:01 -05:00
Derek Foreman 54cf6dac4a wayland evas engines: rename wayland display to wl_display
Continuing to make the shm and egl engines closer to eachother.
2016-11-02 13:37:00 -05:00
Derek Foreman 3f75c45122 wayland_egl: Rename surface to wl_surface
Making this code more closely match the wayland_shm engine
2016-11-02 13:37:00 -05:00
Derek Foreman 9e43a15526 wayland_egl: Remove pre_post_swap_callback_set
This stuff seems copied from gl_x11 which actually has API to use it.

In this engine nothing can actually set it, so it's just all dead code.
2016-11-02 13:37:00 -05:00
Derek Foreman 96aba5021c wayland_egl: Remove Evas_Engine_Info_Wayland_Egl_Swap_Mode enum
Nothing uses this.
2016-11-02 13:37:00 -05:00
Derek Foreman 47718ae3ea wayland_egl: Remove screen from engine info
Doesn't appear to actually be used for anything.
2016-11-02 13:37:00 -05:00
Derek Foreman d960adee72 wayland_egl: Remove some leftovers from www
The render post callback and "wobbling" variable were only required for
the client side effect.
2016-11-02 13:37:00 -05:00
Chris Michael 21a8fbde7e evas-wayland-shm: Don't post updates to surface if no surface
In the event that an ecore_evas (using wayland_shm) gets hidden then
the corresponding wl_surface gets destroyed. If evas_norender is
called after that, the outbuf_redraws_clear function follows.
Outbuf_redraw_clear function ends up trying to post updates to the
wl_surface however if that wl_surface is gone, then we end up crashing.

This patch addresses that issue by checking for a valid wl_surface
inside the engine before trying to post updates to that wl_surface.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-28 09:55:27 -04:00
Chris Michael 2c09a35b6c evas-wayland-shm: Fix formatting
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-28 09:55:27 -04:00
Chris Michael 001d8255b8 evas-wayland-shm: Remove unused varible
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 12:18:30 -04:00
Chris Michael 0fa7abae7b evas-wayland-shm: Get page flips out of the render thread
Now that we have redraws_clear exposed through software generic, we can
use that to do the final buffer swap from the main thread instead of doing
it in outbuf_flush which runs from the render thread.

This becomes more important later when other call sites in the main thread
will perform buffer flips.

Based on 95a00b8e49 by Derek Foreman

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 12:00:39 -04:00
Chris Michael f3d1b2d7da evas-wayland-shm: Improve next buffer selection algorithm
When triple buffering it's possible that we'll only need two buffers at
a time for long durations.  When we finally call upon a third buffer it
hasn't been used recently enough to do a partial redraw.
By picking the oldest available buffer when multiple buffers are free we
can increase the likelihood of doing partial redraws.

Based on 79409757c6 by Derek Foreman.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:53:49 -04:00
Chris Michael bb2a55ead6 evas-wayland-shm: Default to triple buffering
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:33:07 -04:00
Chris Michael d8600a4f25 evas-wayland-shm: Fix max buffer age
Highest possible buffer age should actually be 4, not the number of
available buffers.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:19:28 -04:00
Chris Michael 2ceb37e14d evas-wayland-shm: Fix formatting
NB: No functional changes, just formatting

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:19:06 -04:00
Guilherme Iscaro 8040d20f90 This series fixes two problems in the VNC implementation.
One deadlock and one segfault.

Patch 1:

Software X11 Evas Engine: Fix deadlock

Summary:
The patch bc6e8d2692 introduced a callback responsible to notify the pixels
that were sent to the X server. Since all EFL rendering is done by another
thread, the callback should be called from the main thread context.
To achieve this behaviour evas_software_x11_region_push_hook_call()
was using ecore_thread_main_loop_begin(), which may cause deadlocks, since
evas mainloop waits for the render thread and the render thread waits
the mainloop.

In order to fix this problem, the function
ecore_main_loop_thread_safe_call_async() will be used to
schedule the callback to run in the main loop context.

Since a callback is schedule to run in async manner, the pixels that
were sent to the X server must not be deleted until the user is informed.
In order to avoid more mallocs(), this patch adds the support for refcounts to the
X_Output_Buffer and Xcb_Output_Buffer.

Patch 2:

Ecore_Evas VNC: Use the image size to create the buffer.

In same cases they may differ and may lead to a segfault, since
memcpy() causes a buffer overrun.

Reviewers: bdilly, raster

Reviewed By: raster

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4323
2016-10-21 13:56:00 +09:00
Derek Foreman 1809b3b959 gl_x11: Do KHR Partial Damage properly
KHR partial damage must be set once at the beginning of rendering with
buffer damage for the entire scene to be rendered.  Doing otherwise can
result in graphical anomalies on some GL implementations.
2016-10-20 14:30:00 -05:00
Derek Foreman 6a65253f68 wayland_egl: Remove weirdo buffer age kludge cargo culted from gl_x11
There's no reason why we'd need a full redraw if the buffer age for
this buffer isn't the same as the buffer age for the last buffer, so
let's cut out this thing.
2016-10-19 16:29:05 -05:00
Derek Foreman a44352a10f wayland_egl: Use surface damage instead of buffer damage
We should always pass surface damage to eglSwapBuffersWithDamage.
2016-10-19 16:29:05 -05:00
Derek Foreman c3a31ff213 gl_drm: Use surface damage instead of buffer damage
We should always pass surface damage to eglSwapBuffersWithDamage.
2016-10-19 16:29:05 -05:00
Derek Foreman 7a978fe58c evas_engines: Send both surface and buffer damage to outbuf_flush callback
Some engines should using sending surface damage, until now we'd only ever
provided them with buffer damage.

The difference is that surface damage is the damage to the surface the
compositor is displaying, and the buffer damage is the damage to the
buffer the client has rendered.  These are different when the client
is using multiple buffers of different ages to render into.

Anything that calls eglSwapBuffersWithDamage, wl_surface_damage() or
wl_surface_damage_buffer() should be using surface damage, and not
buffer damage.

This patch is intended to make no functional change - any flush cb that
used buffer damage before still should.  Actual fixes to follow.

Apologies if I broke any engines - it's a bit of a copy and wasteland
out here.
2016-10-19 16:29:05 -05:00
Derek Foreman 455afb707f Revert "wayland_shm: Add swap mode fallback when buffer age changes"
This reverts commit 62ca4486ea.

Honestly, I think the gl_x11 code doesn't make sense either. :)

There's no logical reason that we have to do that, though it may be
hiding some other bug?  If that's the case, the bug should be fixed
properly.
2016-10-19 16:29:05 -05:00
Jean-Philippe Andre b88093c847 evas: Last fix... now it builds 2016-10-19 14:05:31 +09:00
Jean-Philippe Andre e67d9c4e1c evas: More compilation fixup with EGLImage
This is what happens when you can't test a patch yourself ^^
2016-10-19 13:40:08 +09:00
Jean-Philippe Andre 5fd4875ad4 evas: Fix compilation with older EGL (maybe <1.5)
EGLImage was not introduced until very recently. EGLImageKHR was
the proper type. Thanks Roy for the report.
2016-10-19 13:35:12 +09:00
Jean-Philippe Andre 62ca4486ea wayland_shm: Add swap mode fallback when buffer age changes
This copies the behaviour in opengl_x11 engine, where the buffer
age needs to be continuously the same to be taken into account.
If the age varies, then we fallback to a full redraw.

Apparently this fixes issues on actual devices. I tested this
patch in weston (I didn't have issues before and buffer age is 1).
2016-10-18 17:40:01 +09:00
Derek Foreman 3d6aae4633 evas gl x11 engine - Wrap eglCreateImage
eglCreateImage and eglCreateImageKHR have different parameters - the
attribute list is EGLint for one and EGLAttrib for the other.  Since
EGLAttrib is long, on a 64-bit system it's a different size than EGLint.

This was causing a crash in Enlightenment's wl_x11 on 64-bit machines when
trying to use a gl client.

Add a thin wrapper to use whichever is available and pass the appropriate
sized data.
2016-10-14 16:07:08 -05:00
Subhransu Mohanty 8b7f060946 evas/module: add a new module in vg_saver for eet
Reviewers: cedric, jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4350
2016-10-14 15:52:51 +09:00
Subhransu Mohanty 45b103eb0a evas/module: add a new module in vg_loader for eet
Reviewers: jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4347
2016-10-13 17:09:39 +09:00
Subhransu Mohanty 0d9b168146 evas/module: Added a new module vg_loader for svg
Reviewers: cedric, jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4346
2016-10-12 18:39:10 +09:00
Jean-Philippe Andre 0f7dfdedfd evas: Fix async filters following changes in EO
EO is now extremely restrictive wrt. threads so that efl_data_scope_get()
can't work outside the main loop. This patch fixes the usage to create
sw buffers as shared objects (accessible from both the main loop and evas
async thread) and use plain old pointers where possible.

The buffers now have no parent because efl_add(CLASS, obj_from_mainloop)
does not work with shared objects. This is bad, as the buffers conceptually
belong to the main loop, and only need to be accessible from the draw thread
for a few calls. The main loop determines their lifecycle.

Fixes T4628
2016-10-06 12:24:59 +09:00
Chris Michael 7b049ab7ac evas-software-x11: Remove unused variable and mark unused parameters
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-04 09:41:53 -04:00
Subhransu Mohanty d54b5fba6c ector: make the ector objects as shared object after eo changes.
As ector objects are acessed by draw thread we need to create it as
 shared object in order to access it from other thread.
 Note: there is some performance lag...

Summary: make ector object as shared eo object to acess from other thread.

Reviewers: cedric, jpeg, raster

Reviewed By: jpeg, raster

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4319
2016-09-28 16:02:12 +09:00
Carsten Haitzler c88c74de1b evas sw x11 - disable the loop begin/end that deadlocks evas
this is quick to get evas working again. this disables part of
7e2d700d06 that creates deadlocks. this
thread waits on mainloop. mainloop waits on this render thread. BOOM.
deadlock.
2016-09-27 16:14:31 +09:00
Guilherme Iscaro 7e2d700d06 Evas Software X11: Add a callback that informs the current screen content pixels.
This is necessary in order to implement a VNC server. Using this
callback the VNC server will be able to draw the current screen to the
VNC clients.
2016-09-26 22:06:59 -03:00
Jean-Philippe Andre d7b9db44f0 evas_fb: Avoid invalid dereference
If buf->priv.fb.fb was NULL the function would have crashed. So
buf->priv.fb.fb can't be NULL. I'm keeping the if(buf->priv.fb.fb)
anyway, but not sure the else case is valid.

Thanks @jiin.moon for the report.
2016-09-23 17:32:38 +09:00
Stefan Schmidt 9079d2b575 evas: model_save: remove unused label after error handling change
In commit 8272d14927 the error handling was
moved upwards and the need for the goto label removed. Catching up here and
removing the label as well.
2016-09-21 10:45:12 +02:00
Hermet Park c998fd5ee7 evas software_engine: ++safety code. 2016-09-21 16:24:42 +09:00
Hermet Park ff7511ae12 evas engine: correct null check
check null first, before access it.
2016-09-21 13:16:36 +09:00
Hermet Park 545161d954 Revert "evas engine: return as soon as possible if the surface or context is not valid."
This reverts commit 2f158ebe65.

misunderstood ^ operator.
pinged by jpeg.

previous code was correct.
2016-09-21 13:06:18 +09:00
Hermet Park 2f158ebe65 evas engine: return as soon as possible if the surface or context is not valid.
And later, the surface and context are accessed.
So both of arguments should be valid necessarily.
2016-09-21 12:24:49 +09:00
jiin.moon 8272d14927 eet: fix memory leak
Summary:
If ef is null, have to return before _set_material_to_eet_file_from_mesh api.
New momory will be allocated in the api.

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-09-20 15:01:48 -07:00
Derek Foreman a4fa556925 evas-drm: update drm engine recovery from all buffers used
Use the relatively new buffer release API to free up buffers instead
of immediately going nuclear and blowing away all buffer ages.
2016-09-16 16:12:22 -05:00
Oleksandr Shcherbina ce1f1c9ebe evas: Fix possible crash in evas_model_save_eet.c
Summary: @fix

Reviewers: cedric, raster, Hermet

Reviewed By: Hermet

Subscribers: artem.popov, jpeg

Differential Revision: https://phab.enlightenment.org/D4293
2016-09-13 15:17:53 +09:00
Chris Michael 45ce4c8008 ecore-drm2: Rename output_fb_release to just fb_release
As this function releases FBOs on a given output, lets just shorten
the API function name so it can stay grouped into the ecore_drm2_fb.c
file ... leaving it as ecore_drm2_output_fb_release reads like it
should have gone into the ecore_drm2_output.c file...

NB: No real function changes here, just an API rename.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-09 15:10:47 -04:00
Derek Foreman 95bb942aa7 gl_drm_ee: Remove repulsive hack and do proper gbm buffer accounting
We no longer need this hack as we now have a way to properly handle the
buffer locking in the engine, and don't currently deal with multi-head.
2016-09-09 13:39:05 -05:00
Derek Foreman 0722eae960 ecore_drm2: Store gbm_bo for Fbs and add a getter function for it
This will aid with proper locking in gl_drm later
2016-09-09 13:39:05 -05:00
Derek Foreman 088c9675ef ee_gl_drm: Stop calling fb_dirty
So yeah, fb_dirty is for marking dirty regions when rendering
directly into the front buffer attached for scanout on a manually
updated display.  Absolutely none of those things apply here, so
let's stop doing it.
2016-09-08 13:55:25 -05:00
Derek Foreman ace55231a3 ee_drm: simplify flipping
We no longer have to track draw and display buffers - the display buffer
is completely handled by ecore_evas_drm's busy tracking.
2016-09-08 13:55:24 -05:00
Derek Foreman 95a00b8e49 ee_drm: Get page flips out of the render thread
Now that we have redraws_clear exposed through software generic, we can
use that to do the final buffer swap from the main thread instead of doing
it in outbuf_flush which runs from the render thread.

This becomes more important later when other call sites in the main thread
will perform buffer flips.
2016-09-08 13:55:24 -05:00
Derek Foreman 79409757c6 ee_drm: Improve next buffer selection algorithm
When triple buffering it's possible that we'll only need two buffers at
a time for long durations.  When we finally call upon a third buffer it
hasn't been used recently enough to do a partial redraw.

By picking the oldest available buffer when multiple buffers are free we
can increase the likelihood of doing partial redraws.
2016-09-08 13:55:24 -05:00
Derek Foreman 5eec34812e evas_engines: Add a redraws_clear callback
This gives us a callback from the main thread after outbuf_flush occurs -
this is useful to get timing right on the drm and wayland engines.
2016-09-08 13:55:24 -05:00
Derek Foreman ce7991b993 ecore_drm2: Implicitly set buffer busy status when flipping
This simplifies other code that shouldn't need to deal with this.
2016-09-08 13:55:23 -05:00
Derek Foreman 794798f559 ee_drm: Move all ticking into ecore_evas_drm and use new tick system
Combines all the gl_drm and drm ticking code into one set in
ecore_evas_drm and uses the new evas tick register/unregister callbacks
to set it up.
2016-09-08 13:55:23 -05:00
Derek Foreman 3d39c1e9b8 ecore_drm2: Add a function to set the pageflip callback data once
Instead of passing the user data for the page flip callback every time,
set it just once.

This will make it easier to push tick logic into ecore_evas_drm, as there
will be a transitional period where page flips are driven in two places
that don't have access to the same pointers.
2016-09-08 13:55:23 -05:00
Derek Foreman cfd172c64b ee_drm: use the ecore_drm2_fb busy bit
Use the new busy getter/setter on the fb instead of keeping state in the
outbuf
2016-09-08 13:55:23 -05:00
Derek Foreman 1591e095d5 ee_drm: Fix max buffer age
The highest possible buffer age should actually be 4, not the number of
available buffers.
2016-09-08 13:55:23 -05:00
Chris Michael 578099f915 evas: Remove set but unused variables
Gcc reports that these variables are set but not used, so remove them

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-07 08:28:08 -04:00
Jean-Philippe Andre b2d92f2626 evas: Implement support for external buffers
This brings support for the eo api for external buffers (like
the old data_set / data_get). The new API now works with slices
and planes.

The internal code still relies on the old cs.data array for
YUV color conversion. This makes the code a little bit too
complex to my taste.

Tested with expedite for RGBA and YUV 422 601 planar, both
SW and GL engines (x11).
2016-09-06 16:55:00 +09:00
Jean-Philippe Andre 2f737e8f3b evas: Change internal function image_data_direct 2016-09-06 16:54:54 +09:00
Jean-Philippe Andre 8ee431572d evas: Switch EO APIs to Eina_Slice for gfx buffers (map)
This adds a plane and eina slice argument to the map/unmap
functions, instead of void_ptr + length.
2016-09-06 16:54:53 +09:00
Jean-Philippe Andre 1773ba5d82 evas: Internally switch to Eina_Slice for buffers
This will be used for the gfx buffer map/unmap eo apis.
2016-09-06 16:54:53 +09:00
Tom Hacohen 9c779dca90 Rename efl_self to efl_added
It has been discussed on the ML (thread: "[RFC] rename efl_self") and
IRC, and has been decided we should rename it to this in order to avoid
confusion with the already established meaning of self which is very
similar to what we were using it for, but didn't have complete overlap.

Kudos to Marcel Hollerbach for initiating the discussion and
fighting for it until he convinced a significant mass. :)

This commit breaks API, and depending on compiler potentially ABI.

@feature
2016-09-05 16:59:56 +01:00
Tom Hacohen 45707a7bb6 Evas engine drm: Fix style (and thus compilation warning).
Double parenthesis in ifs, such as "if ((x = 5))" should only be used
iff using assignment inside of conditions (like the example above). This
explicitly conveys the intention to both the compiler and other
programmers and essentially eliminates the class of bugs that result
from accidental assignment when a comparison was intended and vise-versa
in conditions.
2016-08-30 13:39:39 +01:00
Tom Hacohen d5e321466e Efl object: Rename Eo_Event -> Efl_Event.
This is the last step of the Eo renaming efforts.
2016-08-30 13:34:10 +01:00
Jean Guyomarc'h 60215a5c53 evas-gl_cocoa: migrate to gl_generic infrastructure
It has been a long journey, but here we are at last...
The infamous gl_cocoa engine has been migrated to the
gl_generic infrastructure. This should provide great
improvements and hopefully reduce side-channels b0rkage.

Fonts seems better, scrolling is smoother, expedite
does not segfault anymore... I haven't found a
regression with elementary_test, elementary_config,
terminology, expedite.
2016-08-25 23:29:27 +02:00
Jean Guyomarc'h d8e488b1c8 evas-gl_cocoa: start refactoring for gl_generic 2016-08-25 21:41:17 +02:00
Jean Guyomarc'h c2856b040a evas-gl_cocoa: remove unused code 2016-08-25 21:41:17 +02:00
Jean Guyomarc'h 54b417fa30 evas-gl_cocoa: cleanup eng_setup 2016-08-25 21:41:17 +02:00
Jean Guyomarc'h f4f94a9f79 evas-gl_cocoa: cleanup eng_info 2016-08-25 21:41:17 +02:00
Jean Guyomarc'h 62c342c4e3 evas-gl_cocoa: init/shutdown cleanup 2016-08-25 21:41:17 +02:00
Derek Foreman ae83b96030 wayland_egl: Destroy gl context if engine info updated with NULL wl_surface
We set the wayland surface to NULL in engine info, then destroy the wayland
surface later.  The GL stack tries to render to the destroyed surface and
dies.

If we destroy the GL surface when we set the engine info (before we destroy
the wayland surface)it stops the GL stack from doing bad wayland calls.

This fixes a crash on exit, or when any window closes when using mali GL
drivers.  Surprisingly, Mesa was tolerant of this.
2016-08-23 15:27:06 -05:00
Jean Guyomarc'h 84679d3173 evas-gl_cocoa: fix crashes at engine startup
Recently, the gl_cocoa engine started to crash at
startup. glGetIntegerv() in gl_common was called
without any gl context, and therefore segfaulted.

We now make sure it is called after a gl context
has been created and used.

Thanks jpeg for troubleshooting.

Fixes T4402
2016-08-22 19:56:08 +02:00
Derek Foreman a71b688b10 evas_engines: Update remaining enges for damage_region_set callback
I missed several engines when I changed this.

Make sure they all build.
2016-08-22 08:39:44 -05:00
Jean Guyomarc'h 52295607e5 evas-engines: fix compiling of the fb engine
Build was broken after commit 0c21a926a3
which changed an internal API.
2016-08-20 14:06:27 +02:00
Derek Foreman 0774088c90 wayland_egl: Fix EGL_KHR_Partial_Update usage
Use the new damage region set callback to do partial updates that actually
work.  Fixes gl rendering on mali.

@fix
2016-08-19 16:26:32 -05:00
Derek Foreman 0c21a926a3 engines: Add a damage_region_set callback
To properly implement EGL_KHR_partial_update we need to know the buffer
damage before any drawing operations take place.  Add a new callback to
software_generic that takes place after combining of surface damage and
swap mode when we actually have this available.

Note: This means the three copy pasta implementations of
EGL_KHR_partial_update scattered around the tree are all wrong.  bummer.
2016-08-19 16:26:20 -05:00
Derek Foreman 20f9acdf19 wayland_shm: Fix dmabuf orientation
So apparently when dmabuf support went into weston it went in with a
Y axis inversion that has since been corrected.

This updates our code to match.
2016-08-19 14:51:55 -05:00
Derek Foreman 7828d0e072 wayland_egl: Fix rendering on systems without buffer age
If buffer age isn't present we really want to return MODE_FULL, but we were
previously returning MODE_AUTO.

On recent mali drivers this resulted in accidental partial updates leading
to incorrect rendering.
2016-08-17 16:24:05 -05:00
Derek Foreman 6ce113791e wayland_egl: Remove swap_mode from engine info
This was never set anywhere and always defaulted to 0, or AUTO
2016-08-17 16:21:29 -05:00
Minkyoung Kim 042e94f10d evas/gl_x11 : Add multiple_buffer member in native surface x11 type union.
Summary:
If native surface is multiple buffer pixmap such as named pixmap, Evas should recreate eglImage everyframe.
Because DDK get the buffer ID once at eglImageCreate time.
So if internal buffer ID is changed, should recreate eglImage.

Test Plan: Wearable Tizen.

Reviewers: wonsik, raster, cedric, jpeg

Reviewed By: jpeg

Subscribers: spacegrapher, dkdk, cedric

Differential Revision: https://phab.enlightenment.org/D4211
2016-08-17 17:56:17 +09:00
Jean-Philippe Andre be5381960b evas: Fix BMP load with region set and scale down
This fixes usage of photocam on large BMP images.
Follows previous commits by @jiin.moon.
2016-08-17 17:28:53 +09:00
Jean-Philippe Andre 0193e40d8c evas: Fix region test in jpeg load with region + zoom
The previous commit exposed an issue with the region test
does not take into account the scale down factor.

Not a @fix in itself, as it depends on the previous patch.
2016-08-17 17:28:53 +09:00
jiin.moon 922a1bcd9e evas: Add support for region load with PNG files
Summary:
PNG loader support  region_set when decoding
@feature

Reviewers: cedric, jpeg, jypark, raster

Subscribers: raster

Differential Revision: https://phab.enlightenment.org/D4165
2016-08-17 17:28:53 +09:00
jiin.moon a76fd7b37e evas: Support region_set for BMP image
Summary:
1) BMP loader support region decoding.
     @feature

2) Fix an issue what BMP loader can't decode an 16bit image with bit field
    @fix

Test Plan: attached sample codes

Reviewers: cedric, jpeg, jypark

Differential Revision: https://phab.enlightenment.org/D4228
2016-08-17 17:28:53 +09:00
Stefan Schmidt 31f289ff4c evas: engine: remove set but unused variable 2016-08-16 16:22:06 +02:00
Jean-Philippe Andre d5da8d31ce gl: Fix usage of GLX/EGL/GL extensions
This is reverts:
e4c641ed1e
  build fix
19eb7b727fbf35620a13fb65b50d3056a484360e:
  glx: Fix black windows in E on nvidia

For all extension functions, we need to match with the extension itself
since GetProcAddress() can return a non-NULL value even when the function
does not exist. Drivers can do a runtime mapping depending on the
context. So, we only trust the return value of GetProcAddress() when
we know for sure that the extension exists.

Thus, if a symbol exists we will always prefer it rather than relying
on GetProcAddress().

Also, glGetString(GL_EXTENSIONS) is now deprecated so we're lucky
it still works most of the time. glGetStringi() should be used
instead. This patch changes some of the use cases, but not all.

Fixes T3030 (again)
Fixes T4288

@fix
2016-08-16 16:14:21 +09:00
Jean-Philippe Andre 8fb2dca520 evas: Implement GL map/unmap for the simple case
Most of the code relies on the software generic engine
implementation, using inheritance between engines.

This fixes expedite image map RGBA test.
2016-08-16 16:14:21 +09:00
Carsten Haitzler 40250fda22 evas gl x11 engine - fix buffer age symbol find and use
it serems some changes broke our buffer age querying - we were using
the wrong symbol... the EXT or ARGB onenot the core one which does
work. use that first. then we get buffer age.

@fix
2016-08-16 15:19:21 +09:00
Tom Hacohen e65aae994e Eo: Finish the renaming of Eo to the EFL.
This renames all the rest of the API to the EFL namespace except for
Eo_Event that will follow soon.

Obviously breaks both API and ABI.
2016-08-15 15:07:42 +01:00
Jean-Philippe Andre ad4c92ceeb evas: Fix shader for text masking
Fixes T4338

@fix
2016-08-12 11:10:36 +09:00
Tom Hacohen c662934be8 Change the EFL to follow the new Eo rename. 2016-08-11 17:04:43 +01:00