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
Summary:
Separate EGL extensions from GL/GLES extension list, since
we have extension list for each GL version, and we do not want to
check EGL extensions differently when different GL versions are used.
This also simplifies extension string get function as we just need to
concatenate EGL and GL extensions rathan than keeping track of
GL extensions only.
Summary:
We should make current to an Evas GL context before calling _surface_buffers_destroy,
otherwise resources from GL backend will be removed.
@fix
Summary:
When either FBO or EGL image from texture extension is not supported,
we can use pixmap surface as indirect surface fallback.
Since native pixmaps have (0,0) in the upper left while
FBOs have (0,0) in the lower left, we should invert the y coordinates
when native pixmaps are used as the render target.
To accomodate run-time y-invert check we add a new callback for
EVAS_NATIVE_SURFACE_EVASGL type.
Reviewers: cedric, jpeg
Subscribers: wonsik, mer.kim, cedric
Summary:
Remove surface buffer create/allocate in pbuffer_surface_create.
In evgl_make_current, we should use direct_mem_opt, direct_override values
set in EVGL_Surface struct, not the global value set by env variables.
@fix
Summary:
We should destroy egl image when surface is destroyed
to avoid memory leak.
@fix
Test Plan: Evas GL test cases
Reviewers: jpeg
Subscribers: mer.kim, mythri, wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D2357
Summary:
Now we can support EVAS_GL_GLES_1_X version for GLX backend
with both direct and indirect rendering.
Refactored api get functions to have similar code path for each version.
@feature
Test Plan: Evas GL test case
Reviewers: cedric, jpeg
Subscribers: cedric, mer.kim, mythri, wonsik
Differential Revision: https://phab.enlightenment.org/D2342
Thanks Dongyeon for finding out this solution. Now that was
one nasty bug :)
Somehow the currently bound texture id would not match what
Evas expected, so Evas would not call glBindTexture when
required. As a result it was drawing black (sampling from tex 0).
@fix
Summary: These fields are not needed in the outbuf structure as they
are never used, so just remove them.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
if yuou use 709 instead of 601 yuv (ycbcr) evas will just be wrong and
use 601. this fixes that and implements 709. it also fixes a scaling
bug for yuv in the gl engine. no one noticed but me, so i won't call
this a bug fix, and it can go into the next efl release - no need to
backport unless it actually bothers peolpe (which it seemingly doesn't)
Summary:
Use fourth component texture. Update mechanism generation pixels, scene renderer
to texture and geting color pixels from texture. Update shader for color pick.
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: Oleksander, cedric
Differential Revision: https://phab.enlightenment.org/D2549
Summary:
Use RGBA texture unit for generation shadow. Use separate framebuffer and
renderbuffer for shadow map.
Refactor shadow map shader to use position of shadow and pack depth value in
RGBA texture.
Refactor shader function for generation shadow factor to unpack depth value from
RGBA shadow map.
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2578
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
so you know the files should change when you "make" and shf files are
updated, add notes to the .x files generated to indicate they should
be committed back to the repo so it is clear
Summary:
Add alpha test in shader code instead of function glAlphaFunc that doesn't supported
in GLES2.0
Add gag and TODO in shader function that generate shadow. Without it all scene is
shadowed, because shadow effect doesn't work yet.
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2529
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Instead of "@in type name;" we now use "@in name: type;". This change
is done because of consistency with the rest of Eolian; pretty much
every other part of Eolian syntax uses the latter form.
This is a big breaking change in the .eo format, so please update your
.eo files accordingly and compile Elementary together with the EFL.
@feature
Summary: We should be marking the framebuffer dirty regions Before we
send the pageflip to the kernel so that the kernel can properly
optimize drawing dirty regions before scheduling a pageflip.
NB: Slightly optimizes evas drm rendering a bit more. Thanks to Daniel
Stone for the help :)
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
EGL might very well not support RGBA read mode, so we
need to check for it first.
Also remove some error logs (see previous commit), and useless
initialization of the Evas GL engine.
@fix
Based on a quick git diff we check that the glsl code has not changed.
This should fix out-of-tree builds and avoid all source modification
unless required.
When compiling from a tarball there should be no git tree (err 129),
or if there's one the files should not be checked in (ie. no diff).
If you changed the glsl files in a tarball... too bad for you.
If this is still not enough to fix the build, then go ahead and disable
the script from Makefile_Evas.am
I would like to note that the auto-generation during make is extremely
useful when working on the shaders, which is why I'd rather keep it enabled.
@fix
Summary:
Bind flag atlas_enable.
Build adjusting matrix only in case getting texture unit with atlas.
Reviewers: Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2473
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Used engine function for load image/data and use texture unit through
Evas_GL_Image object
Used Evas_ColorSpace format instead Evas_3D_Color/Pixel format
Added transformation matrix for adjusting texture unit coordinates in shader
Added property in Evas_3D_Texture for mark possibility get texture without atlas
(see https://phab.enlightenment.org/conpherence/54/, I suppose it will done
after this patch)
Reviewers: Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2371
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
It is need in case Evas_3D_Mesh created with not normileze texture coordinate
and flag repeat mode for Evas_3D_Texture
Additional info see here https://phab.enlightenment.org/conpherence/54/
Use Evas_GL_Image for generation texture unit for Evas_3D_Texture
see here https://phab.enlightenment.org/D2371
Reviewers: jpeg, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2375
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
T2338
Thanks to DaveMDS to take the time to report accurately the issue. That helped
a lot figuring out things. And another thanks to Vincent Torri for the help on
the math side.
Summary: No real function changes, just commented out some debug so we
have less noise for release.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes an issue where the wrong swapmode was being
returned to the evas render function. This was causing focused windows
to blink.
NB: Big thanks to Derek for assisting !! :)
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: As we override the software_generic function for
eng_output_resize, so we can handle resize edges, we should also be
updating the software_generic's render engine size here because the
function for software_generic->output_resize never gets called.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes a possible race condition that could happen when
using more than 2 buffers. Instead of searching for a free buffer in
various places, find a free buffer when evas requests the buffer data
and save that free buffer as the 'current buffer'
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: evas_cache and evas_cache2 are expecting the width of the
buffer when caching so just use that directly rather than calculating
bpl.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The GL scaled images is a fast path for masking where
the shader scales masks on the fly.
This optimization actually fixes some issues where the current
texture binding was incorrect.
Summary: This fixes Ticket T2289 where the mouse pointer was leaving a
trail while moving. This was caused due to not waiting for the page
flip to complete
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If we are using 4 buffers, we should be returning
MODE_QUADRUPLE for render_mode_get function
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
modules/evas/engines/software_generic/ector_surface.c: In function '_ector_cairo_software_surface_surface_set':
modules/evas/engines/software_generic/ector_surface.c:89:4: warning: implicit declaration of function 'evas_common_cpu_end_opt' [-Wimplicit-function-declaration]
evas_common_cpu_end_opt();
^
Masking in GL assumes only one texture to sample from. This means
RGB+Alpha and YUV types are not supported. While it would
make sense for RGB+Alpha, it doesn't make any sense for YUV (because
masks are alpha planes and YUV is opaque...)
This should fix Dave's crash with the GL engine.
Indeed the pointer to the color array is passed directly
to the driver, without memcpy. Then, during glDrawArrays, the
driver will try to address it... but it could as well be NULL or
invalid. So, crashes would occur.
Also mark use_vertex as always true. We keep this field only for the
alloc() function.
Since the new shader selection system is able to check the
value of nomul, we can avoid pushing color when they are not
required (color is opaque white).
Hopefully this will fix Dave's crash (mayyyyybe...)
Summary: This fixes Coverity CID1270028, CID1270029, CID1270030 where
variables RGBA_Image and Native where dereferencing function input
paramaters Before null checking them.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes Coverity CID1293519 where einfo was being used
Before it was being null checked (which Could have caused a crash if
in fact einfo Was NULL).
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes a resource leak of eina_array in
eng_ector_renderer_draw which would return without freeing an
allocated array.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: The Evas Drm engine makes use of Ecore_Drm functions now so
we no longer need private versions of the same code
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: As we already have Ecore_Drm which handles all things drm
related, let's make use of it in the Evas Drm Engine. This modifies
the 'meat' of the Evas Drm engine to use Ecore_Drm functions rather
than keeping private versions of the same code.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: With the evas drm engine refactor, some of the fields in the
Render_Engine structure are unused so remove them.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: With the evas drm engine refactor, a lot of these fields in
the Outbuf structure are unused so remove them. This also removes
unused private function declarations.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: A few of these engine fields are no longer needed or were
unused in the Evas Drm engine so remove them.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This removes an internal evas drm engine function and instead
uses the new ecore_drm_fb_dirty function call to mark the framebuffer
as dirty
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
For GLX backend, we should dlopen libGL.so*
@fix
Test Plan: Evas GL 1.x test cases
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: mythri, mer.kim, wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D2322
Summary:
Evas GL surface buffers are allocated at make current time now
rather than surface creation time, and since we pass evas gl surface handle
to the backend, we do not need direct surfaces hash anymore.
Test Plan: elementary test and evas gl test cases
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: cedric, mythri, mer.kim, wonsik
Differential Revision: https://phab.enlightenment.org/D2320
Summary:
Hopefully this will fix some of the multiple windows issues for elm glview but not all.
@fix
Test Plan: elementary glview tests
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2317
Summary:
@fix
During execution example evas-3d-obj, part of 3D objects showed with red ripple.
The reason is not completely initialize component vector gl_FragColor
Reviewers: cedric, Hermet
Reviewed By: Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2292
Summary: This commit changes the evas drm engine to use Ecore_Drm_Fb
for framebuffers. We remove the old 'Buffer' structure from the evas
engine and replace it in Outbuf with Ecore_Drm_Fb. This also removes
unused functions from the evas_drm.c file as we can now use
ecore_drm_fb calls
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This file is not needed for the software drm engine. This was
added (initially) for combining the drm software & hardware engines
into one. As that is not the case, this file is unused.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Test case:
- Elementary Test
-- GLView
--- Direct rendering
Direct rendering would never happen in reality, because Evas GL
had to fallback. The reason being that DR requires the window
to have a depth buffer, but this depth buffer was no present
in the default config.
From elm, the solution is to set a special accel_preference,
for instance "gl:depth". But setting this value right before
calling elm_win_add() for the GLView test was already too late.
Indeed, evas_x would keep the default configurations and reuse
them no matter what was requested (ie. only RGB and RGBA would
work).
Solution:
Implement a slightly more complex cache based on a hash map instead
of just two static variables. Always request a new config if it's
not found in the current hash. Store that config, and reuse it for
the same config requests.
Tons of line changes because of the name changes and the whitespace
adjustments. Also some variables disappeared into the magic hash table.
Summary:
This reverts commit 4af7a947a6.
There is more convenient way remove noise in vector gl_Fragcolor at shadow_map
shader, because current decision lead to useless issue with shadow effect.
Need just add default initialize at the begining in shader file smth like that
gl_FragColor = vec4(1);
I suppose do that after this patch.
Reviewers: cedric, raster, Hermet
Reviewed By: Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2290