There was a terribly complex mechanism to call this function
from the gl_x11 engine to gl_common (evas gl core)... and it
simply didn't work because the function pointer would be NULL.
It is safe to release the compiler at any time since the next
call to glCompileShader will restore it. This may even be a no-op
for all we know (this is driver-dependent).
Instead of generating the shaders at compile-time, do this at
runtime. Also load only the required shaders in memory.
This saves 25000 LOC, lots of strings inside the .so files
and save a non negligible amount of memory since those shader
binaries can weigh a few megabytes in total.
The current shader selection mechanism is a bit complex and
uses eina_hash_int32 but this can be optimized later if it's
deemed too slow.
Summary:
Returning from default would result in memory leak of f. Now the memory
is not leaked.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric
Differential Revision: https://phab.enlightenment.org/D3272
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Use same way using color pick under GLES and not:
Use GL_RGBA texture insted of GL_RED
Generate and pass to engine 3 components color of mesh
See T2761
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3135
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: In efforts to reduce tearing in the gl_drm engine, implement
support for eglSetDamageRegionKHR to mark parts of a surface as being
damaged.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
In efforts to reduce tearing in the gl_drm engine, find and link to
the eglSetDamageRegionKHR function so we can mark damaged regions of a
surface
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The engine setup code already checks if we are disabling vsync
(defaults to on), so we should be setting the Outbuf vsync according
to what the engine info has
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Support for using EVAS_NATIVE_SURFACE_WL was missing/incomplete in the
wayland_egl engine. This commit addresses that issue so that now the
wayland_egl engine can support both EVAS_NATIVE_SURFACE_OPENGL and
EVAS_NATIVE_SURFACE_WL.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: With linux kernels >= 4.2.x, the gl_drm engine was not
functional. This is due to the egl config returning an improper config
which did not match the expected pixel format. This commit fixes that
issue and gl_drm evas engine works again. Should fix ticket T2807
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
According to my understanding of this function, this check of im_old is
redundant, as im_old will never be NULL. For im_old to be NULL, image should be
NULL. But that is checked at line 637. im is assigned image and im is checked for NULL. At line 654 im_old is assigned image and it is not modified till line 673. So this check would always return true and enter if case and would never
enter else case. So removing the redundant code.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D3233
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Checking for NULL is redundant here, because if cfgs was NULL, then at
line 760 it would fail.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric
Differential Revision: https://phab.enlightenment.org/D3238
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: When we are told to resize the canvas, we should also be
resizing the gbm_surface. This should fix the issue of wl_drm module
in E not working when the canvas gets resized (WFM now)
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Typos, lack of NULL check, excessive sizeof(type) not matching
the object type, no border set, etc... This all lead to a crash
and then no render (with an error message and then without...).
This also simplifies the implicit loading of ETC1 as ETC2 when
supported by the driver.
@fix
so the evas thread renderer didnt START rendering until evas FINISHEd
walking all objects generating a render queue. this means all the cpu
time spend generating commands couldn't allow a parallel thread
actually go and DO the rendering.
this flushes the render thread every render command thus waking up the
render thread to work in parallel to the mainloop generating commands.
this actually means int he traces i see the render thread finished byt
he time evas_render completes thus brinign forward the frame display
by quite a bit.
thanks to evlog for pointing this out.
@fix
we use a bit more memory than we need by having unused fields for
shaders. the old binary data ptrs and size fields we just have not
used for years now as we dont compile in shader binaries anymore as no
living drivers need this anymore. so this removes that with no actual
side-effects.
no shortcuts. we used the same img sharder for pixles as for native
surf. so need new shaders to do the swiszzling. add them all,
generation scripts metadata and enums etc.
@fix (along with previous 3 commits)
this fixes rendering on ppc (bigendian) where we have thnigs swizzled
oddly. not bgra -> argb but rgba -> grab ...
so generate a bigendian shader file and use if on bigendian.
this should fix T2721
it fixes it in the visual screenshots i can get remotely.
While OSMesa may support surfaceless contexts, we don't support
them yet in the SW engine. Instead of switching to NULL, NULL,
let's error out and do nothing instead.
If the current context & surface are already null, avoid
calling eglMakeCurrent again, since it can return an error
(EGL_FALSE but with no error code, thanks Nvidia).
Since @raster changed the behaviour of the dirty flag on images,
damages must be added to redraw the GL surface. Evas_Image checks
if it is an Evas GL surface by looking at its native surface.
But in case of SW engine, there was no native surface information
for Evas GL surfaces. Also, the OPENGL surface type was awfully
abused for OSMesa support. Luckily EVASGL surface type lets us
pass arbitrary pointers :)
This is only one step into making the software engine actually
work the same as a proper GL engine from Evas GL APIs point of view.
This is necessary for the test suite (coming next).
Show an error message and call make_current(NULL, NULL) only if
the object (context, surface) being destroyed is current.
Otherwise, avoid changing the current context & surface.
For me on a intel driver val is -1 and it needs to be inverted.
So we need to checkout that val is not 0 and not equals to 1.
Thx to raster for helping debugging this thing :).
As spotted by @FurryMyad I inverted the logic for source_clip.
This should restore the proper behaviour while keeping my previous
fixes working. See D2940.
This reverts commit f51168f4ec.
if this is right or not... this RESULTS in enlightenment becoming
totally unusable. put this back WHEN other issues are fixed you think
that exist. last i knew we query yinvert start with glx per native
surface and use that info - so as best i know it is and has been right
for a long time.
:)
Following this patch, the correct enum type is now passed to this
function. It's also passing the same value (0), but now from the correct
enum. This doesn't change behaviour, and looks like what was intended.
This fixes the clang warning.
Double parenthesis comparison is reserved for evaluation for assignment, not just comparison.
So for example you should do ((x = 2)) and (x == 2), but not ((x == 2)) or (x = 2).
Summary: As we loop the regions of the output buffer and accumulate
changes to post, we should be freeing the rectangles when we are done
with them.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Seems we were never setting any merge_mode for the
wayland-shm engine. This fix implements setting merge_mode
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
valgrind pointed this one out. we access freed memory when we dup a
context because the context CONTAINS ptrs to things like rects for
cutouts. we didnt dup these. use the proper context dup call (and
properly ref pixman color image too). this was a random bug/crash
waiting to happen and valgrind caught it. suprising it hasnt turned up
before :/
@fix
Summary: We really don't need to be allocating a shm pool this large
during resize, so reduce the size of the pool.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This just adds support for 'smart' merge mode in the evas
gl_drm engine to keep in line with gl_x11 engine.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This just adds support for 'smart' merge mode in the wayland
egl engine to keep in line with the gl x11 engine
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Change type of texdepth from GL_R(doesn't support with GLES) to GL_RGBA.
Don't use useless additional framebuffers for shadows.
Use same shader code for generation shadow map texture.
Turn always using software alpha-test.
It reduce and simplify code in general.
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3115
Evas_GL_Image created for font glyphs in evas_common_font_rgba_draw
is sometimes freed after Evas_Engine_GL_Context is freed.
Since gc is already freed, pt_unref returns and leaves pt behind.
@feature
this makes the gl engine by default not do bounding box, but instead
try and smartly merge nearby update regions. this means multiple
render passes IF your drivers support buffer age, but it seems to
actually help. in my test case on nvidia drivers which support buffer
age, i saw compositor cpu overhead drop by about 30%
Summary:
Bug reproduce if delete evas_gl_3d_shaders.x and try re-build.
Source file include.shd for generation shader code consist m4 macro definitions.
After this revision https://phab.enlightenment.org/D3056 order of the quatation
marks in function pcf was broken.
@fix
Reviewers: cedric, Hermet
Reviewed By: Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3085
this optimizes draw ctxt cutouts by skipping small ones and
remembering the last cutout added so it isn't double-added as well as
extending the minimum cutout array to 512 and going up in blocks of
512 instead of 128. also optimize the clipping code a bit more.
This is a huge patch, but keep in mind that 4326 line changes
were automatically generated from the template GLSL files.
This also adds some minor refactors here and there to accomodate
for the new shaders, but nothing crazy.
"GL fast-path" downsampled masks should now look pretty good.
Summary:
cur_tex* are unsigned int, so minus value should not be set.
Also, add cur_texa, cur_texm here.
Test Plan: Local tests
Reviewers: jpeg
Subscribers: mer.kim, wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D3036
After clip_image_get, the old mask may be replaced by a new one,
and unref'ed, but it is later on set back as the context mask image.
Maybe it's possible that there was 0 reference and the image
got freed in between.
No idea how to test this.
@fix
Okay, I'm being paranoid and this can't possibly happen (calloc
fail? yeaaaah) but this makes sure we don't return NULL after
freeing the original image.
evas gl common was simply resetting to the wrong texture id in the gl
context struct - it was using pipe[0] not state.current. why i don't
know. i know i wrote the pipe[0] code many years ago - really don';t
know. it may have been a transitional piece of code that just happened
t6o work 99% of the time that never got fixe when i added pipes.
@fix
this pulls yuv in line with yuy2 textures and dobule buffers them.
this is a workaround some driver bugs where either the driver doesnt
block and wait for the gpu to finish with a texture when updating OR
it does wait, and when it does it blocks and spins using cpu.
so... if you load a non-jp2k file using openjpeg, you can get an abort
deep inside the openjpeg library that we can't do anything about. we
set all error handlers but literally the openjpeg code has ab assert
there that causes this bug. it shouldn't and newer opengjpeg libs have
it removed, but 1.5.2 has it and this causes an untrappable crash.
this is simply bad behavior in openjpeg not allowing it to be used
safely to loade image files. the relevant backtrace:
w=w@entry=0x7fffffffb548, h=h@entry=0x7fffffffb54c,
alpha=alpha@entry=0x7fffffffb556 "", map=map@entry=0x7fff29ac2000,
length=<optimized out>, error=error@entry=0x7fffffffb5bc,
opts=<optimized out>)
at modules/evas/image_loaders/jp2k/evas_image_load_jp2k.c:111
the relevant code in openjpeg:
int cio_numbytesleft(opj_cio_t *cio) {
assert((cio->end - cio->bp) >= 0);
return cio->end - cio->bp;
}
so that assert is triggered. and nothing can be done about it which is
pretty poor.
so an upgrade of openjpeg should fix this as in newer versions have
dropped the assert line in that function, but until poeople have that from
their distro, this adds magic number checks for file headers that avoids
using openjpeg if it's not "apparently" a jp2k file. this does not
stop a corrupt file or a maliciously designed file still causing this
problem, but it does just result in an abort() and isnn't seemingly an
overflow isse that can be exploted, so if you still suffer, find a way to
upgrade openjpeg to 2.x. until then... this reduces inadvertent damage.
@fix
Summary:
When Evas GL apis are called outside of on pixels callback,
evas gl backend context may have been made current, and Evas GL will
render into a wrong context.
So here we provide context restore mechanism of keeping track of
currently bound context and calling make current when needed.
@feature
Test Plan: Run Evas GL test cases
Reviewers: jpeg, cedric
Subscribers: mythri, mer.kim, wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D2956
Summary: if EGL_KHR_partial_update extension is implemented in the
driver, set damage region. This is done before the draw calls.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Some files were still including SDL-1 headers even though we only link
against SDL2 libs.
URL: https://bugs.gentoo.org/551882
Reported-by: Barnaby <badbit@me.com>
Reported-by: Romain Naour <romain.naour@openwide.fr>
Summary:
If EGL_KHR_partial_update extension is implemented by the driver,
set the damage region. This is done before the draw calls.
@feature
Reviewers: wonsik, spacegrapher, jpeg
Reviewed By: spacegrapher
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2828
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This fixes T2625 where launching filemanager would cause a
deadlock. The issue here is that wl_display_dispatch actually uses
poll() which will block and wait, while using
wl_display_dispatch_pending does not case any blocking.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
This fixes a rendering issue with wayland apps. We consume all buffers then
drop any attempted renders that take place while we have no buffers.
This fix now waits for the server to give us some buffers back.
This is the cause of T2612
@fix
#Kansas
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2897
Summary: As we need access to the wl_display in order to dispatch
events on the queue while we wait for free buffers, pass it in to the
surface creation function and set it in the Shm_Surface structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: These functions need to have an additional wl_display
parameter so that we can set the field inside the Surface structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: In order to fix an existing rendering issue, we need access
to the wl_display so that we can dispatch events on the que while we
wait for a free buffer
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This just adds a field so we have some place to store the
wl_display for use in the evas wayland engine
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes a crash which Could occur if no outbuf depth was
given during a call to reconfigure.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
We now track each shm buffer's time since last draw so evas can tell
what it needs to re-render.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2893
Summary:
This is when we're about to start a new render, so it's the best
time to set up the next buffer to draw to.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2892
Summary:
We already have *current, but we're not using it properly. Let's throw
out curr_buff and just use *current.
This temporarily makes swapmode_get do full renders, this will be
fixed in a future commit that adds proper buffer ages.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2890
Summary:
Split out the buffer picking stuff because we're going to want to call
it from somewhere else.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2889
Summary:
It doesn't redraw anything, it posts a buffer full of data to the
compositor.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2887
Summary:
Set size of texture unit without 2 pixels for borders in case use it without
atlses. Just one case if texture for 3D use repeat mode and non-normalized
tuxture coordinates
Reviewers: Hermet, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2805
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Since the surface_swap functionality is changed now, we no
longer need to bother checking if the leaf is busy as we don't use the
leaf itself inside this function anymore.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Looks like the recent changes to swap/redraw have fixed a problem with
damage tracking and we no longer need this.
Damage history seems ok without it now.
@fix
Reviewers: zmike, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2876
Summary:
The way things were, we'd be committing a buffer we hadn't rendered to
yet.
Now redraw() contains all the attach/damage/commit logic, and swap() is
called afterwards to set up a new target buffer for the next render.
@fix
Reviewers: zmike, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2875
Summary:
We don't need to - all the frame callback does for us is ensure a queue
push.
We should destroy any callback we receive when we receive it.
@fix
Reviewers: zmike, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2874
Summary: This fixes an issue where we may been missing a frame
callback due to the wl_surface_commit being called before the frame
callback listener was setup. Now we will setup the frame callback
listener before doing any wl_surface_commit so that we don't miss
frames.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Before this patch, those EGL/EvasGL functions can not work
without a current context. But EGL does not require any
current context for those to work, or at least, this should
be left to the driver to decide.
Evas GL was only able to get a pointer to the display
if a context was current.
The display pointer should be infered from Evas_GL unless
we can find a current display. EGL does not require a
context to be current in most of these function calls.
This should bring evasgl a little bit closer to EGL in terms
of behaviour (those are EGL-only extensions, btw).
Thanks @spacegrapher for the quick review
@fix
When glClear is called in direct rendering move (DR), we usually
have to skip the call altogether because clearing out transparency
would erase the pixels in the evas backbuffer. This means Evas
would not be able to blend an RGBA GLView on top of other objects.
But COPY mode should allow Evas GL to poke holes in a window
backbuffer.
Thanks @spacegrapher for the review :)
NOTE: Elm GLView also needs to pass the render op to its Evas.Image.
@fix
evas_gl_native_context_get is an internal function
passed around from an evas engine to evas_gl so that we can
implement evasglCreateImageForContext without exposing
any evas engine internal structure to evas_gl.
It's all a ittle bit ugly but the previous solution with
dlsym(DEFAULT) didn't work.
If the TLS variable was not initialized, Evas GL can't get a pointer
to a valid EGLDisplay which is required by eglImageDestroy.
So, we keep track of the dpy used at creation time and use that
if we're in another thread.
This reverts commit 5beb47aa4d.
Revert "image_savers/jpeg: fix undefined behavior of using sigsetjmp on jmp_buf"
This reverts commit 84c7751e19.
these end up with efl simply not compiling. efl tree does not build at
all now and this warrants a revert.
lib/evas/.libs/libevas.so: undefined reference to sigjmp'
collect2: error: ld returned 1 exit status
Makefile:19321: recipe for target 'bin/evas/evas_cserve2' failed
.. etc.
i was runing perf top and noticed that evas_image_load_file_data_eet(0
was being called. in fact - it was #1 on the list of functions being
called. why? it didn't make sense. i found out. just a blinking cursor
in terminology was causing the background to be unloaded and
re-loaded. the new "actually unload" changes for 1.15 made this happen
and thus we kept sucking in new data all the time even if the
scalecache already had the data - and that was the problem.
so now calcecache prepare tells you if you don't have cached data and
if you likely then have to ensure the data is loaded. this cuts down
quite a bit of work.
while i'm at it... we definitely need to clean house on the internals
of evas. a decade+ of features, mess, optimizations needs to be fixed.
i mean really house-cleaned. rewritten clenl;y re-using existing code
where appropriate.
Those two functions were doing exactly the same thing[1], which
is free an image, so this commit only attempts to simplify the code
a little bit.
[1] Actually image_map_surface_free() might even not have worked
properly with cserve2 sw (calling unload instead of close).
Summary: Gcc suggested parens around the truth value here, however
as some developers don't like overly used parens, just modify the code
slightly to not use an if on the assignment line.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Otherwise there would be conflicts in certain circumstances.
This also requires adding const on many existing functions,
and similar work is necessary in Elementary.
@fix
Summary:
Add NULL type check in output_free of evas fb engine.
If engine setup is failed,
Render_Engine wil be NULL so output_free also need to
handling NULL check.
Test Plan:
It needs specific condition to reproduce,
engine of ecore_evas is set to fb, and setup is failed,
then Render_Engine is NULL, but ecore_evas_free will call
output_free in fb engine's evas_engine.c
Reviewers: raster, cedric, Hermet
Reviewed By: Hermet
Subscribers: cedric, seoz, eagleeye, singh.amitesh
Differential Revision: https://phab.enlightenment.org/D2743
Summary:
After this commit 684c51360f it didn't work
Miss bind color pick texture to drawable data
@fix
Reviewers: Hermet, cedric
Reviewed By: cedric
Subscribers: cedric, Ievgen, se.osadchy
Differential Revision: https://phab.enlightenment.org/D2724
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This cleans up nasty compiler warnings when building the
gl_drm engine. If we do not define EGL_EGLEXT_PROTOTYPES then we end
up with implicit declaration warnings
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This change adds support for using EGL_MESA_platform_gbm to
get the display directly from gbm and to create a window surface
(usable by egl) directly from the gbm surface.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Add null check for glGetString version check and evgl_engine
Test Plan: Local tests
Reviewers: jpeg
Reviewed By: jpeg
Subscribers: wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D2699
Summary:
When evas is recreated, this static variable value remains,
so it references already freed memory.
Test Plan: Local tests
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: wonsik, mer.kim, cedric
Differential Revision: https://phab.enlightenment.org/D2678
Summary: This cleans up the gl-drm engine code a bit and avoids the
need to constantly destroy and recreate the gbm device itself. This
also adds checks during Outbuf create to handle the swap_mode as per
previously added enum.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This adds an enum we can use for setting/determining the
swap_mode to use for the gl_drm engine
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
<CID 1304559: Logically dead code>
The dead code is only valid for GLES backend, so move if statement
to be used for GLES backend only.
<CID 1304560: Bad bit shift operation>
When calculating depth bit, bit shifting could be done with negative values.
@fix
Test Plan: Local tests
Reviewers: jpeg
Reviewed By: jpeg
Subscribers: wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D2654
Evas_Image_Orient is an enum starting at 0 thus we never go below 0. Remove
unneeded checks.
modules/evas/engines/software_generic/evas_engine.c:1558:4: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
modules/evas/engines/software_generic/evas_engine.c:1560:8: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
Summary: If we fail to lock the front buffer, we will not get a valid
bo returned so we should not be calling other functions which require
a bo.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes a crashing issue in evas image cache due to the
engine returning an improper swap mode.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: The pre/post swap callbacks were forgotten when doing the
engine rewrite, so readd them
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Previous gl_drm evas engine code did not work properly (or at
all really). This reworks/refactors the gl_drm engine code to work
again with the changes made to ecore_drm.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Evas has quite a number of shaders, and resetting the projection matrix
for all shaders takes some time, which is an overhead when target surface
is continuously being changed (ie. when using proxy).
So here we reset the projection matrix for shaders that are actually used.
Summary:
Evas GL now supports surfaceless make current, where
evas_gl_make_current can be called with sfc parameter NULL.
This closely resembles EGL_KHR_surfaceless_context extension,
where applications that only want to render to client API targets
can make current to NULL surface instead of creating a dummy egl surface.
@feature
Summary:
When direct rendering is enabled, FBO configuration should match
window surface configuration as FBO will be used in fallback cases.
So create FBO with configuration from window surface.
@fix
Summary:
When default framebuffer(0) is bound, attachment should contain
COLOR, DEPTH or STENCIL for glDiscardFramebufferEXT.
When a framebuffer object is bound, attachment should contain
COLOR_ATTACHMENT0, DEPTH_ATTACHMENT or STENCIL_ATTACHMENT.
This should be correctly taken into account for indirect rendering,
where internal FBO is used.
@fix