Commit Graph

82 Commits

Author SHA1 Message Date
Jean-Philippe Andre 61b847d47a Evas masking: Simplify and fix vertex logic in GL
There was some geometry problem, and this commit also
simplifies a lot of code by factorizing it a lot.
2015-01-07 15:06:03 +09:00
Jean-Philippe Andre 2bd5cf6e6f Evas masking: Use new texm sampler instead of texa
texa should be used only for RGB+A whereas texm should
be used for masking. This should fix RGB+A masking, too.
2015-01-07 15:06:03 +09:00
Jean-Philippe Andre 6552e8a6cc Evas masking: Add support for YUV, YUY2, NV12 masking in GL
RGB+A masking needs to be implemented, because there's a
clash (only one texture name "texa" is available).
2015-01-07 15:06:03 +09:00
Jean-Philippe Andre a2604956f9 Evas masking: Add support for BGRA/ARGB masking
Also, refactor font & image GL masking.
2015-01-07 15:06:03 +09:00
Jean-Philippe Andre 1fac1dcf57 Evas masking: Font masking for GL 2015-01-07 15:06:03 +09:00
Jean-Philippe Andre 124ab102b7 Evas masking: Implement image masking for GL engines 2015-01-07 15:06:02 +09:00
Mun, Gwan-gyeong d1b8d52e0e evas/gl_drm: add native surface for wayland_egl_client.
Reviewers: zmike, devilhorns, cedric, gwanglim

Reviewed By: cedric, gwanglim

Subscribers: jpeg, torori, cedric

Differential Revision: https://phab.enlightenment.org/D1507
2014-12-04 17:59:30 +09:00
Jean-Philippe Andre f6e73c7903 Evas GL common: Cosmetic change
Don't cast "ext" a hundred times when you can do it once.
2014-11-24 18:52:14 +09:00
Jean-Philippe Andre 2e83b076db Evas GL common: Scan extension string for ETC1 subimage
There is an official name for it:
GL_EXT_compressed_ETC1_RGB8_sub_texture

Thanks Mythri for pushing that specification.
2014-11-24 18:52:14 +09:00
Jean-Philippe Andre 09934be788 Evas GL common: Fix RGB+A textures draw
Also rename texm into texa for consistency.
Even though texa might be a mask image, it's still used only
for it's a (alpha) channel.
2014-11-24 18:52:14 +09:00
ChunEon Park 3ffcdb67de evas/gl_common: remove dead code. 2014-10-31 19:19:15 +09:00
ChunEon Park 5718763ca3 evas/gl: code refactoring.
improve code readibility.
2014-10-19 15:39:51 +09:00
Chris Michael 6480b8b75d evas-gl-common: Fix compile for EGL due to missing GL_LINE_SMOOTH
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>
2014-10-08 09:04:21 -04:00
ChunEon Park 026e767b86 evas: support anti-alias for gl line drawing. 2014-10-08 15:47:58 +09:00
Carsten Haitzler 0b6fb19b77 evas - fix unused variable
fixes CID 1039921
2014-08-25 12:51:17 +09:00
Carsten Haitzler 2098e8c856 evas gl - fix yuv smooth rendering
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!
2014-08-15 12:11:33 +09:00
Carsten Haitzler f5cff9490e evas gl - did not free all atlas formats - fix
we have expanded atlas formats long since - so use #define to free
correct amount instead of 6
2014-08-07 18:25:20 +09:00
Carsten Haitzler 8b796edce7 evas gl - fixz minor leak on exit of rectangles
these were static rect cutouts, so they stayed around on exit and thus
we "lost" them. this nukes them on context free and each new frame.
fixes the "leak"
2014-08-07 18:15:50 +09:00
Cedric BAIL 9a9d78dfcb evas: provide GetProcAddress by the engine. 2014-07-25 20:24:28 +02:00
Cedric BAIL 0d00b476cb evas: export symbol from gl_common so that loading gl_generic can expose them. 2014-07-11 15:32:51 +02:00
ChunEon Park 7e8d43ee85 Revert "evas/gl: improve the rendering quality."
This reverts commit 5e18223f67.

Conflicts:

	src/modules/evas/engines/gl_common/evas_gl_context.c

we've got a side effect(another quality issue) of the patch. so revert it.
2014-07-11 14:50:20 +09:00
Jean-Philippe Andre 7512a54954 Evas gl: Fix upload of RGB+A textures [INCOMPLETE]
The textures have duplicated borders, take them into account.
2014-07-11 13:41:38 +09:00
Jean-Philippe Andre 24f38eaf6d Evas gl: Replace all remaining references to mask stuff by alpha
Masking is not used (there even was a recent commit by Hermet to
remove most of the occurences of mask shaders in GL), and I've
introduced a new ETC1+Alpha feature. Replace the old texm and
associated variables by texa for alpha texures.
2014-07-11 12:20:07 +09:00
Jean-Philippe Andre 48bcf182b4 Evas gl: Add support for ETC1+Alpha textures
Compile-in the required shaders, add support for the
new EVAS_COLORSPACE_ETC1_ALPHA, and upload textures as RGB+A
pairs.

@feature
2014-07-09 09:04:55 +09:00
ChunEon Park b3d11fae4c evas/gl - removed MASK ramains. 2014-07-07 17:08:22 +09:00
ChunEon Park dad74f7455 evas/gl - removed redundant shader masking code. 2014-07-04 21:10:20 +09:00
Jean-Philippe Andre b0df307927 Evas gl: Add support for S3TC textures
Add support for DXT1, DXT3 and DXT5 textures (4 formats in total).

@feature Add support for S3TC textures if the GPU supports them
2014-07-03 15:36:22 +09:00
ChunEon Park 4cbc73ce1d evas/gl - ... removed white trailing. 2014-06-27 21:47:00 +09:00
ChunEon Park 7341887851 evas/gl: fix indentation. 2014-06-27 21:38:30 +09:00
ChunEon Park 5e18223f67 evas/gl: improve the rendering quality.
To avoid texture bleeding in the texture atlas,
we adjust texture uv point as much as a half uv point.
Especially, this improves the rendering quality when the image has the border
area.

Unless apply this patch,
You might find the rendering result is different with software backened,
if the image has the borders.

In the software backened,
the border line was clear but the gl wasn't.
because the border line was interpolated so the rendering result was not the one we expected.

@fix
2014-06-27 21:29:24 +09:00
Rajeev Ranjan bd65b5db5d evas: improvement of Eina Rectangle Pool and integration with Evas GL backend.
Summary:
This patch introduce various new logic for packing/unpacking of Eina Rectangle in a pool.
It is then used by Evas GL backend texture allocation to improve how efficiently we pack
image in texture atlas. This lead to improved memory usage and reduced power consumption
with usually a more stable higher FPS (as it use less texture to do the same task, their
is less texture switch, so saving memory and speed at the same time).

This patch was developped on Cedric's suggestions to optimize the packing logic using Skyline
algorithm. This patch is based on master and is a new submission for earlier phab link
https://phab.enlightenment.org/D774.

Signed-off-by: Sanjay Nirankari <sanjay.n1@samsung.com>
Signed-off-by: Rajeev Ranjan <rajeev.r@samsung.com>
Signed-off-by: Sreedeep Moulik <sreedeep.m@samsung.com>

Reviewers: cedric, raster

CC: wonsik, jpeg, sreedeep.m, sanjay, govi

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

Signed-off-by: Cedric BAIL <c.bail@partner.samsung.com>
2014-06-19 16:48:45 +02:00
Nicolas Aguirre 7182f87d51 evas: force equality in check otherwise i get debug output even if the environnement variable is not set. 2014-06-18 11:34:07 +02:00
Jean-Philippe Andre d0d9dbfdba Evas: Add encoding parameter to the savers
ecore_evas_convert: Add -e/--encoding option

This uses directly the encoding parameter.
For now, used only by the TGV saver, but there is no other way
to specify between ETC1 and ETC2. And we don't have a mixed ETC1+2
mode (yet).

@feature
2014-06-13 16:05:48 +09:00
Jean-Philippe Andre dbd576b858 Evas gl: Enable texture atlasses with ETC1/2
We prefer ETC2 textures when ETC2 support has been detected.
According to the spec, glCompressedTexSubImage2D should work
for ETC2.

Try even with ETC1. This may fail at runtime. The fallback path
is very dubious right now but without a proper test case I'm
not sure which approach to take.

We can also imagine cases where the GPU supports TexSubImage for
ETC1 but ETC2 is not supported at all. This will need testing, as
this case is not handled.

@feature
2014-06-12 14:47:16 +09:00
Jean-Philippe Andre 90985d2282 Evas gl: Remove dlsym of glCompressedTexImage2D
The function was used directly in evas_gl_texture.c
It must be part of OpenGL core functions (since GLES 1.1
and OpenGL 2 I think).
2014-06-12 14:47:16 +09:00
Jean-Philippe Andre 86ce491a86 Evas gl_x11: Add ETC2 support to the GL/X11 engine
This should allow texture upload with ETC2 RGB8 or RGBA8 formats.
Untested for now...

@feature
2014-04-25 16:50:29 +09:00
Jean-Philippe Andre c0aa0b3410 Evas gl: Don't swap RGBA colors with ETC1
Since rg_etc1 now outputs proper BGRA data, the shaders should not
swizzle the colors around. Stick to the normal fragment shaders.

Note: This is not tested.
2014-04-22 19:53:55 +09:00
Jean-Philippe Andre ecb8ce8748 Evas gl: Fix colors when using ETC1 textures
We need to use the RGBA shader to invert R and B otherwise
those will be inverted on the screen.
2014-04-04 10:16:01 +09:00
Jean-Philippe Andre c67db4c47b Evas gl: Fix dlsym usage for glCompressedTexImage2d
This symbol should be part of the loaded libraries, can be found
using dlsym, even if eglGetProcAddress() returns NULL.

Add etc1 flag in the debug output.
2014-04-04 10:08:09 +09:00
Cedric BAIL 854dd14474 evas: add ETC1 texture format support to Evas. 2014-04-01 22:00:54 +09:00
Anand caabcbe408 evas: Fixed warning for uninitialized variables
Summary:
Warning fixed of evas

modules/evas/engines/gl_common/evas_gl_context.c: In function 'evas_gl_common_context_new':
modules/evas/engines/gl_common/evas_gl_context.c:392:32: warning: 'minor' may be used uninitialized in this function [-Wuninitialized]
modules/evas/engines/gl_common/evas_gl_context.c:314:8: note: 'minor' was declared here
modules/evas/engines/gl_common/evas_gl_context.c:392:16: warning: 'major' may be used uninitialized in this function [-Wuninitialized]
modules/evas/engines/gl_common/evas_gl_context.c:313:8: note: 'major' was declared here
@fix
Compilation Warning Fixed

Test Plan: Compile efl

Reviewers: singh.amitesh

CC: seoz, cedric

Differential Revision: https://phab.enlightenment.org/D656
2014-03-24 17:03:32 +09:00
Cedric BAIL a9d38e6df7 evas: cleaner fail handler. 2014-03-24 11:41:20 +09:00
Jihoon Kim 014183a1b7 evas_gl: fix memory leak in case that version doesn't include dot
fix CID 1193479
2014-03-23 13:36:00 +09:00
ChunEon Park 461555e4cc evas/gl - fill up missed blend mode.
Still there few mode are unsatisfied.

@fix
2014-03-22 21:09:58 +09:00
ChunEon Park f556cd1328 evas/gl - don't set blend function in RENDER COPY mode.
it's enough that just disabling the blend mode.
2014-03-22 20:30:27 +09:00
Cedric BAIL 837391c5da evas: let's be more resistant even with things that should never happen.
Fix CID 1193212.
2014-03-20 16:53:13 +09:00
Jean-Philippe Andre 1a9b58f083 Evas gl: Fix buffer dump filenames
evas_gl_common_buffer_dump can be used to dump all frames into
a series of PNG files. But the filename contained some garbage
characters (and potential segv, too).

(cherry picked from commit a0f886138ed5a28d0d1596df3b805fca06d1ae31)
2014-03-18 15:44:13 +09:00
Jean-Philippe Andre 7ad4a269e0 Evas gl_x11: Fix usage of glReadPixels
It is not necessary to dynamically link to glReadPixels since
this is not an extension. This code wouldn't even work on some
devices.

Also, the pixels returned are not premultiplied (yeah >_<)

And some devices (EGL) don't support GL_BGRA... so glReadPixels
would just fail and not fill in the pixels. Conversion is required.
2014-03-13 17:04:42 +09:00
Jean-Philippe Andre 59f5216391 Evas gl_x11: Add support for glReadPixels
This will be needed by the filters for proxy rendering,
for textures and maps (displacement).

Add new engine functions to unleash the (sluggish) power of glReadPixels.
The idea is to be able to bypass glReadPixels later, so 3 new APIs are
added:
- surface_lock
- surface_read_pixels
- surface_unlock
They must be called in that order.

Note (for history):
glReadPixels was always getting the wrong data during first draw,
but the right data during a redraw...
Why? Well simply because for OpenGL itself, the image had never
been drawn in teh first place! Only the Evas GL context knew
about the image drawing, as it was queued somewhere in the pipe.

One line solution: Call evas_gl_common_context_flush before
doing anything else.
2014-03-07 11:07:09 +09:00
Sung W. Park 2b4a7b438d evas gl: added partial rendering support for qcom extension
When running in direct rendering mode, properly support partial
rendering if the extension is properly supported.

Also, fixed the SwapBufferwWithDamage rectangle coordinate bug.
It wasn't properly y-inverted before.
2014-02-15 02:33:47 +09:00