path: root/src/modules/evas (follow)
AgeCommit message (Collapse)Author
2021-09-06evas - gl x11 - dont crearte eglimage multiple times in same frameCarsten Haitzler (Rasterman)
if we're rendering in multiple scissor regions/updates - dont create the eglimage multiple times for each bind+pass - only once for that frame.
2021-09-05evas - gl - ensure surfaces are 0 when destroyedCarsten Haitzler (Rasterman)
easier on debugging when we know that we destroyed them already
2021-07-28evas gl: bind texture with external target for mapShinwoo Kim
Summary: egl images created using tbm surface for native surface set use GL_TEXTURE_EXTERNA_OES as texture target, so we should bind to this target when rendering. Or there is a GL_INVALID_OPERATION error on glBindTexture in function _orig_shader_array_flush. Thia patch follows logic of following commit; 7db0e20 evas/gl: Bind texture with external target for tbm surface Reviewers: Hermet, raster, jsuya, herb Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-07-05evas - tga - remove errant printfCarsten Haitzler (Rasterman)
2021-06-18evas_vg_load_svg: Fix color parsingJunsuChoi
Summary: Remove unnecessary point movement in rgb(255, 255, 255) case in svg parsing. In svg parsing, move the pointer by 'rgb(' before calling _color_parser() in the rgb(255, 255, 255) case. In function, string pointer moved unnecessary, so parsing is incorrect. Therefore, remove unnecessary point movement. Test Plan: svg sample code ``` <svg xmlns:svg="" viewBox="0 0 300 300"> <path d="M 0 0 h 200 v 200 z" style="fill:rgb(255, 155, 55);"/> </svg> ``` before {F4504779} after {F4504778} Reviewers: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-05-24gif loader: show the current frame image if getting row is failedTaehyub Kim
Summary: Change-Id: I17c79f89550e9a758a532babd55826b3c7ad2810 To show gif animation smoothly, we keep the current frame even if getting line is failed. Currently, the frame image will be freed if getting gif line is failed and this makes the frame drop. Reviewers: Hermet, kimcinoo, raster Reviewed By: raster Subscribers: raster, cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-05-18egl: silence warning of deprecated feature test.Alastair Poole
2021-05-03evas gl - dont swap with damages if we are debugging partialCarsten Haitzler (Rasterman)
2021-05-03evas - image loader - tiff - switch types to avoid deprecated warningsCarsten Haitzler (Rasterman)
2021-05-03evas - saver - tiff - change types to remove deprecated warningsCarsten Haitzler (Rasterman)
2021-04-17modules: Rename EAPI macro to MODAPI for modulesFelipe Magno de Almeida
Summary: Patch from a series of patches to rename EAPI symbols to specific library DSOs. = The Rationale = EAPI was designed to be able to pass `__attribute__ ((visibility ("default")))` for symbols with GCC, which would mean that even if -fvisibility=hidden was used when compiling the library, the needed symbols would get exported. MSVC __almost__ works like GCC (or mingw) in which you can declare everything as export and it will just work (slower, but it will work). But there's a caveat: global variables will not work the same way for MSVC, but works for mingw and GCC. For global variables (as opposed to functions), MSVC requires correct DSO visibility for MSVC: instead of declaring a symbol as export for everything, you need to declare it as import when importing from another DSO and export when defining it locally. With current EAPI definitions, we get the following example working in mingw and MSVC (observe it doesn't define any global variables as exported symbols). Example 1: dll1: ``` EAPI void foo(void); EAPI void bar() { foo(); } ``` dll2: ``` EAPI void foo() { printf ("foo\n"); } ``` This works fine with API defined as __declspec(dllexport) in both cases and for gcc defining as `__atttribute__((visibility("default")))`. However, the following: Example 2: dll1: ``` EAPI extern int foo; EAPI void foobar(void); EAPI void bar() { foo = 5; foobar(); } ``` dll2: ``` EAPI int foo = 0; EAPI void foobar() { printf ("foo %d\n", foo); } ``` This will work on mingw but will not work for MSVC. And that's why EAPI is the only solution that worked for MSVC. Co-authored-by: João Paulo Taylor Ienczak Zanette <> Co-authored-by: Ricardo Campos <> Co-authored-by: Lucas Cavalcante de Sousa <> Reviewers: vtorri, jptiz, woohyun, lucas, SPAM-smith78899 Reviewed By: vtorri, SPAM-smith78899 Subscribers: SPAM-smith78899, raster, SPAM-cabanacatalogs, cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-04-16evas gl - drm - native bind - handle null eglimage create on bindCarsten Haitzler (Rasterman)
this can happen if dmabuf is invalid (already destroyed) so handle this so evas knows and falls back to rendering a rect and complains to stderr so we know @fix
2021-04-09improve heif loader: * efl coding style * faster head callback * faster ↵Vincent Torri
copy of image data Summary: and minor fix of some values in avif loader Test Plan: entice still can read heif Reviewers: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-04-04evas - gl - optimize dither shader - use integer vecs and go to 2x2Carsten Haitzler (Rasterman)
a 2x2 matrix visually here is about as good as 4x4. at least in what i see, but on low end gpu's it can halve the cost. in fact i was watching the gpu on my old i5-4200u drop down to 340-410mhz (no dithering is 320-360mhz). i got to 630-660mhz with the original 4x4 code. the 4x4 is still there ifdefed out. perhaps i can bring it back with a high-quality dither option, but 2x3 i think is good enough.
2021-04-02evas gl - add env var to disable dither because some gl's are brokenCarsten Haitzler (Rasterman)
this adds a EVAS_GL_RENDER_DISABLE_DITHER=1 env var (set it to anything) to disable dithered rendering.p this is an added cost, but normally not much at all, but it seems some gl implementations are broken, and they can't generate correct code for the dither shader, so this disables this if this env var above is set
2021-03-31Evas avif loader: fix segfault when the avif loader tries to load a non avif ↵Vincent Torri
image Test Plan: entice is not crashing Reviewers: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-03-28Avif image loader: add another check to verify that libavif has been built ↵Vincent Torri
with an AV1 decoder Summary: libavif can be built without a AV1 decoder. Check this in the image loader Test Plan: entice Reviewers: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-03-26evas - gl add export for getting dmabuf formats and modifiersCarsten Haitzler (Rasterman)
we need this to do formats and modifiers properly... and this is what broke on the rpi4 - it started using interesting formats etc. ... new feature to support a bug fix in e @feat
2021-03-26evas - gl - respect yinvert now as it ... seems to work.Carsten Haitzler (Rasterman)
2021-03-20evas - gl - stop leaking images and never freeing them from cacheCarsten Haitzler (Rasterman)
the subject says it all @fix
2021-03-09evas gl - remove freed gl image from context image listCarsten Haitzler (Rasterman)
fix asan memory mis-access @fix
2021-02-13gl: remove memory leak of orient_setShinwoo Kim
Summary: The tex->pt->references is descreased by evas_gl_common_texture_free -> pt_unref if tex->references is 0 And tex->pt->texture is removed by evas_gl_common_texture_free -> pt_unref -> glDeleteTextures if tex->pt->references is 0 The evas_gl_common_texture_free decreases tex->references only if tex->references is bigger than 0. There is no chance to decrease tex->pt->references at this point. So if orient_set increases both references of tex and tex->pt, then the tex->pt->reference is not decreased till tex->references is 0. So do not increase tex->pt->references in eng_orient_set. Reviewers: raster, cedric, Hermet Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2021-02-06Added the heif loaderthierry1970
Summary: that supports images : *.heif, *hiec and *.avif I have disabled *.avif images, there is already a loader. Reviewers: stefan_schmidt, raster Subscribers: raster, vtorri, cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-02-06evas - gl engine - look for extension in the right extension string setCarsten Haitzler (Rasterman)
this fixes slow operation on what seems to be a minority of instances that dont advertise the extension in both egl and gl strings @fix
2021-02-01evas - tga loader - ignore origin as it leads to valid tga's not loadingCarsten Haitzler (Rasterman)
2021-01-14evas - let's not set dynamic img hints if extns not thereCarsten Haitzler (Rasterman)
2021-01-14gl: remove invalid read and writeShinwoo Kim
Summary: There could be 2 evas_gl_image referencing 1 evas_gl_texture. evas_object_image_orient_set could make this case. In this case, when one evas_gl_image is removed(free), the evas_gl_texture is not removed because its reference count. After this point, if the other evas_gl_image is removed without drawing (see function evas_gl_common_image_draw, line "im->tex->im = im") then evas_gl_texture is reading invalid adress when it is removed. Reviewers: Hermet, jsuya, herb, devilhorns Reviewed By: devilhorns Subscribers: devilhorns, cedric, #reviewers, #committers Tags: #efl Differential Revision:
2021-01-06evas webp loader - stop complainig its an invalid fileCarsten Haitzler (Rasterman)
when a file has no extension to guess by.. evas goes back to trying every loader until one works. this leads to noise. loaders should not printf/stder or eina log err anything if the file seems to not be valid. @fix
2020-12-18evas - avif - fix for 0.8.2 libavif that broke apiCarsten Haitzler (Rasterman)
also require 0.8.2 ... as well - no point trying to support older versions forever and this is still experimental. fixes T8844 @fix
2020-12-07png: handle 9-patch ends with stretchShinwoo Kim
Summary: The strech region has paired information; total and strechable. Refer to function _strech_region_load retrieving strech region info. But if 9-patch information line ends with strechable, png did not push the strechable information. And it leads to devide by zero. This patch is adding strechable info to the strech region, if 9-patch information ends with strechable. Test Plan: [Code] {F4219278} {F4219280} [Test] ECORE_EVAS_ENGINE=opengl_x11 ./evas-image-9patch ./end_with_strech.9.png Reviewers: Hermet, jsuya, herb, cedric Reviewed By: Hermet Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2020-11-30evas - fix build on bigendianCarsten Haitzler (Rasterman)
macro forgot to () a param ... so it broke on bigendian as it has spaces and a | ... fixes T8860
2020-11-27evas gl - experiment with dithered gl renderingCarsten Haitzler (Rasterman)
this adds a dither func (4x4 dither matrix) to experiment with higher quality rendering in gl - this assumes you have a normal 8bit per channel buffer for now (99% of people) and will approximate values in between the 256 steps 8 bits provides by using the dither matrix based on gl_FragCoord position. it's just a flag in the shader flags for now so can be turned on/off in code. this definitely makes blurs look much better... everything else seems basicall the same. let's see how this goes. @feat
2020-11-25ui transit: improve zoom effect smoothness by subpixel rendering.Hermet Park
Summary: evas image might have a better quaility if scaling/transform is not necessary, so we have a condition to check if image is axis-aligned transformed or not. On the other hand sub-pixel(floating point coordinates unit) rendering necessary if image has an effect such a zooming. This would result in a smoother effect than integer coodinate system. We need a more precise condition to confirm this, so we intrduce "anti-alias" option to decide the condition. now, anti-aliased objects will have a sub-pixel rendering always. Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2020-11-20evas gl: make 9 patch workShinwoo Kim
Summary: The 9 patch is using image_stretch_region_get, but GL did not override it. So the 9 patch did not work for GL engine at all. Test Plan: Evas_Object*img = evas_object_image_filled_add(evas); evas_object_image_file_set(img, "test.9.png", 0); evas_object_show(img); Reviewers: Hermet, jsuya, herb, cedric Reviewed By: Hermet Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2020-11-02vg_load_svg: Prevent memory overflow for tag_nameJunsuChoi
Summary: When copying tag_name, if length of referenced string is longer than general case, it is not used as tag_name. Test Plan: N/A Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: kimcinoo, herb, cedric, #committers, #reviewers Tags: #efl Differential Revision:
2020-10-14vg_load_svg: Implement ClipPath featureJunsuChoi
Summary: Supports case of using style attribute for defined <clipPath> and node. In SVG, <clipPath> can be used as a "clipPath" attribute or a style "clip-path". If there is a clip-path node, save it as a composition node and use composition method(matte_alpha) to compose it. Below node types support clip-path. <circle> <ellipse> <g> <path> <polygon> <polyline> <rect> Test Plan: Please see attached svg files {F4026162} Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: #reviewers, #committers, cedric, herb, kimcinoo Tags: #efl Differential Revision:
2020-10-12evas svg: Fix build errorJunsuChoi
Fix build error from 9e14a57020
2020-10-12evas svg: avoid unnecessary memory clear.Hermet Park
2020-10-12vg_load_svg: Add points copy of missing polygon/polylineJunsuChoi
Summary: When using <use> node, do atrribute copy. At that time, when target(url) is polygon or polyline, points array is not copied, causing a problem in output. So, add missing array copy. Test Plan: - Test SVG code <svg version="1.1" id="Layer_1" xmlns="" xmlns:xlink="" x="0px" y="0px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve"> <g opacity="0.5"> <defs> <polygon id="test" opacity="0.5" points="41.8,14.5 22.2,14.5 22.2,22.8 41.8,40.7"/> </defs> <use xlink:href="#test" overflow="visible"/> </g> </svg> Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: #reviewers, #committers, kimcinoo, herb, cedric Tags: #efl Differential Revision:
2020-09-24build: fix dependencies of software engineMarcel Hollerbach
before the efl-one refactoring ecore_x_deps contained all the dependencies for x11. After that not anymore, however, we should link software_x11 to x11 libs directly, which is again happening after this here.
2020-09-19evas - psd loader - check read values to try make coverity happyCarsten Haitzler (Rasterman)
this is trying to fix CID 1402688, 1402687, 1402682, 1402665. not sure it will or will not but it does dot i's and cross t's
2020-09-17evas_outbuf: Fix memory leak.Woochanlee
Summary: In certain use cases, when image data is created twice, the existing memory pointer is isolated and a memory leak occurs. Reviewers: raster, Hermet Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8813 Differential Revision:
2020-09-15vg_load_svg: Support dasharray attribute for strokeJunsuChoi
Summary: It supports stroke-dasharray, one of the stroke properties of svg. Test Plan: [Test SVG] <svg viewBox="0 0 30 10" xmlns=""> <!-- No dashes nor gaps --> <line x1="0" y1="1" x2="30" y2="1" stroke="black" /> <!-- Dashes and gaps of the same size --> <line x1="0" y1="3" x2="30" y2="3" stroke="black" stroke-dasharray="4" /> <!-- Dashes and gaps of different sizes --> <line x1="0" y1="5" x2="30" y2="5" stroke="black" stroke-dasharray="4 1" /> <!-- Dashes and gaps of various sizes with an odd number of values --> <line x1="0" y1="7" x2="30" y2="7" stroke="black" stroke-dasharray="4 1 2" /> <!-- Dashes and gaps of various sizes with an even number of values --> <line x1="0" y1="9" x2="30" y2="9" stroke="black" stroke-dasharray="4 1 2 3" /> </svg> Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: kimcinoo, herb, cedric, #committers, #reviewers Tags: #efl Differential Revision:
2020-09-11vg_load_svg: Add Mask, ClipPath nodees as dummy.JunsuChoi
Summary: Mask and clippath TAG are not supported yet. If this TAG is used, the Child TAG declared with this TAG may cause problems. To prevent that, declare them as Unknown types until they are supported. (display=none) Test Plan: N/A Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: cedric, herb, #reviewers, kimcinoo, #committers Tags: #efl Differential Revision:
2020-09-11vg_load_svg: Fix missing loader.gradients updateJunsuChoi
Summary: When both <defs> and <svg> gradients are declared, the update of gradient declared in is omitted. Therefore, this patch fixes any missing gradient updates. Test Plan: N/A Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: #reviewers, #committers, cedric, herb, kimcinoo Tags: #efl Differential Revision:
2020-09-10vg_load_svg: Supports case when only rx or ry is declaredJunsuChoi
Summary: In relation to the declaration of rx and ry attribute of rect, the following three cases occur. rx="10" (or ry="10" rx="10" ry = "0" (or rx="0" ry = "10") rx="10" ry = "10" To cover these case, we check the rx and ry declarations. Test Plan: N/A Reviewers: Hermet, smohanty Subscribers: kimcinoo, herb, cedric, #reviewers, #committers Tags: #efl Differential Revision:
2020-09-04vg_load_svg: Fix pointing to wrong parentJunsuChoi
Summary: If defs type is open empty style, it is not included in stack. Because the current logic is weak to group tags in sibling relationships. If defs of open-empty type is placed before the group tag, the group tag refers to the wrong parent. This patch prevents it. This change is the same concept as the D12127, which was reverted to 5065c9d0c2. Test Plan: N/A Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: cedric, herb, kimcinoo, #committers, #reviewers Tags: #efl Differential Revision:
2020-09-03Revert "SvgLoader: Defs type nodes are not saved in loader's node list."Hermet Park
This reverts commit 40b6e44947740133df20d97ca3ed65268037af20. This has some side effects, we will intrdouce it again after fix it.
2020-09-02SvgLoader: Defs type nodes are not saved in loader's node list.JunsuChoi
Summary: If there is an empty (unused) <defs /> inside the svg file, this can cause problems. <defs> node is managed separately in loader->def. So it doesn't have to be added to loader's list. Test Plan: N/A Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers, kimcinoo, herb Tags: #efl Differential Revision:
2020-08-25evas - sw generic - fix enum cast warn - valid checkedCarsten Haitzler (Rasterman)