Commit Graph

2628 Commits

Author SHA1 Message Date
Shinwoo Kim ba09a8101b evas_image: fix memory leak
Summary:
On the sw engine, an im could be changed and removed by evas_cache_image_size_set.
In this case, there is no chance to free its resource and ends up in memory leak.

Reviewers: Hermet, raster, jsuya, cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10334
2019-10-14 11:10:18 +09:00
Carsten Haitzler 0f3bbb51f4 build - images loaders and saver modules need to link to evas
if your platform is picky enough it won't want to leave unresolved
symbols (which wshould be resovled at runtime from the host lib) so we
need to link these modules to evas. the problem is due to the
complicated build of some modules being static and some shared, evas
is declared with evas_goal and this has to be declared after static
modules are declared but since i was declaring static and shared at
the same time from a table this breaks. so i have to move all the
static and shared module stuff into evas_goal into 2 phases. one phase
for the static and one for the shared after evas is delcared so evas
as a target exists to link to.
2019-10-05 18:39:38 +01:00
Carsten Haitzler 9371cdfef8 build - bring back loaders and savers as modules and/or static
so the evas modules able to be static or not was a bit pointless as it
could inline all evas modules (or none) not just the most common or
not, but ecore evas modules were still modules, so it really wasn't
being useful.

image loaders ans savers omn the other hand were *ALL* being
statically built in without exception. this was kind of a regression
in the build system in the move to meson. some were static due to
micro optimizations and performance inlining the most common to save a
little extra loading + linking + page fragmentation for loaders you
are likely to need in most cases as well as save the drity pages from
linking in their dependencies (libgif, libtiff, libwebp and all their
dependencies too etc. etc.). this now brings back the ability to
decide which are static and which are shared modules (not exposed to
the user as options for meson - fixed in meson.build files which i
think is good enough given the purpose of this).
2019-10-05 13:21:02 +01:00
Carsten Haitzler 6d8e39a642 build - remove evas-modules option as its rather pointless
evas-modules affects evas engine modules if they are static or shared,
but ecore evas modules are still modules... so all in all this doesnt
help much as it still requires modules to be separate from the shared
libs, thus disallowing for statically linking efl into an app anyway
etc. etc. etc. ... so less options to deal with, less complexity.
better.
2019-10-04 13:33:42 +01:00
Carsten Haitzler 13ecc4898c evas - gl_drm - handle modifiers for drm formats
this was/is breaking e on rpi4 as modifiers are used to pass tiling
info it seems. we had no support thus leaving garbage in buffers. this
fixes that.
2019-09-30 22:07:21 +01:00
Shinwoo Kim 081e318d90 evas filter: Implement grayscale filter in pure GL
Summary:
Initial version implementing grayscale filter in pure GL.
This patch needs a logt of love as 5bce712 did.

Grasyscale formula:
https://www.tutorialspoint.com/dip/grayscale_to_rgb_conversion.htm

Test Plan:
1. Create filter_example with following .
efl_gfx_filter_program_set(image, "grayscale ()", "grayscale");

2. Run.
ELM_ACCEL=gl ./filter_example

Reviewers: Hermet, jsuya

Subscribers: ali.alzyod, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9858
2019-09-27 15:35:03 +09:00
Carsten Haitzler 88888a00a6 osx - require full opengl for gl support on osx
the default still is gl-es as documented. you need to explicitly turn
on full opengl to get gl support on osx because thats all the engine
does. document this exception for osx (having gl magically being full
on osx and gle-es elsewhere is another option but then we need
different os specific defaults for this which is kind of bad in other
ways).
2019-09-23 21:22:22 +01:00
Hermet Park eb2c1311ae ector engine: +null checking.
Null pixels is allowed when drawing region is 0,

In that case, the pixel buffer can be destroyed earlier by vg.

@fix
2019-09-23 21:15:28 +09:00
Hermet Park cdfe946358 evas gl: remove unnecessary null check.
If we check reference validation, the rest of other usage
should keep the reference check as well.

Remove it since gl prorgram must be valid always here
to shutdown the static analyzer reporting this suspicous logic.
2019-09-19 13:42:22 +09:00
junsu choi 3932c68382 evas_vg_load_svg: Change strtod to eina_convert_strtod_c for locale issue
Summary:
Crash depending on LOCALE when using strtod.
So change to eina_convert_strtod_c which is made to prevent strtod problem.

Test Plan: N/A

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9988
2019-09-17 21:18:47 +09:00
Boris Faure 511faf3cbf meson.build: allow to disable tiff evas loader
Summary:
@fix

eina benchmarks: ssize_t is defined in <sys/types.h>

Reviewers: #reviewers, bu5hm4n, zmike, stefan_schmidt

Reviewed By: zmike

Subscribers: vtorri, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9927
2019-09-13 11:26:19 -04:00
Marcel Hollerbach 2801b45d8f meson: make sure evas buffer engine is built before edje_cc
Summary:
ensure that the evas buffer engine is available.

fix T8220

Reviewers: zmike

Reviewed By: zmike

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8220

Differential Revision: https://phab.enlightenment.org/D9918
2019-09-12 14:45:47 -04:00
Hermet Park dc0056ca93 ector: removed cairo backend.
For reducing maintainability burden,
We drop supporting cairo backend.

The default backend is to software implementation from now.
It's well maintained so far and works good.x
2019-09-11 13:14:56 +09:00
Carsten Haitzler d1c5e201be fix xpm again - to be threaded not region decode capable 2019-09-06 15:42:47 +01:00
Carsten Haitzler 5e1f2cd68c fix xpm loader to be threadable - fixes so much stuff...
fixes ylee's xpm loading issue... it really is just that xpm's didn't
load if you preload/load from a thread... because it wass the only
loader that claimed it couldnt be threaded... which it can be.

@fix
2019-09-06 14:19:31 +01:00
Carsten Haitzler 44a0a6f7c8 evas -gl engines - buffer age - bring back fix for changing buffer age
so we USED to... if buffer age changed between frames, force a full
redraw and add that to the pipeline... somehow someone removed that.
this brings that back as it's really needed to deal with updating
correctly.

@fix
2019-08-29 17:35:02 +01:00
junsu choi e850e3e5dc evas_vg_load_svg: Support "display" attribute.
Summary:
If the display attribute is "none", VG object is not show.
The default is "inline" which means visible and "none" means invisible.

Depending on the type of node, additional functionality may be required.
refer to https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/display

Test Plan:
[SVG]
<svg viewBox="0 0 220 100" xmlns="http://www.w3.org/2000/svg">
  <!-- Here the yellow rectangle is displayed -->
  <g display="none">
    <rect x="0" y="0" width="100" height="100" fill="skyblue"></rect>
  </g>
  <rect x="20" y="20" width="60" height="60" fill="yellow"></rect>

  <!-- Here the yellow rectangle is not displayed -->
  <rect x="120" y="0" width="100" height="100" fill="skyblue"></rect>
  <rect x="140" y="20" width="60" height="60" fill="yellow" display="none"></rect>
</svg>

[C CODE]
int main(int argc, char **argv)
{
   setenv("ECTOR_BACKEND", "default", 1);
   elm_init(argc, argv);

   Evas_Object *win = elm_win_util_standard_add(NULL, "test");
   evas_object_smart_callback_add(win, "delete,request", win_del, 0);
   elm_win_autodel_set(win, 1);

   Evas *evas = evas_object_evas_get(win);

   Evas_Object *vg = evas_object_vg_add(evas);
   evas_object_show(vg);
   Evas_Object *container = evas_vg_container_add(vg);
   evas_object_vg_root_node_set(vg, container);

   Evas_Object *svg = efl_add(EFL_CANVAS_VG_OBJECT_CLASS, container);
   efl_file_simple_load(svg, "./test.svg", NULL);
   efl_gfx_entity_size_set(svg, EINA_SIZE2D(600, 600));
   efl_gfx_entity_visible_set(svg, EINA_TRUE);
   evas_object_size_hint_weight_set(svg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(svg, EVAS_HINT_FILL, EVAS_HINT_FILL);

   elm_win_resize_object_add(win, vg);
   evas_object_resize(win, WIDTH, HEIGHT);
   evas_object_show(win);
   elm_run();
   elm_shutdown();
   return 0;
}

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9640
2019-08-20 20:32:15 +09:00
Shinwoo Kim 2a0eeba4e5 evas: fix png regression issue
Accidentally commit "382c580 evas: add support for .9.png file to PNG loader."
adding the 9 patch feature with small code refactoring missed a line calling
eina_file_map_all taking EINA_FILE_SEQUENTIAL for data decoding.

You can see the previous change adding the line from the following commit.

   e60baa0 evas: change mapping policy to be less agressive into loading file
           in memory.

This is a response to the request of @cedric on D9580

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9614
2019-08-19 16:47:22 -07:00
Vincent Torri 01b987df59 make mman.h private
Summary:
integrate mman.h to make Evil private to the EFL, as mman.h does not exist on Windows. After a discussion with raster, i include sys/mman.h only on non Windows platform.

One issue, though, is that src/modules/emotion/generic/Emotion_Generic_Plugin.h has inlined functions using mmap()

Test Plan: compilation on Windows

Reviewers: cedric, raster, zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9542
2019-08-19 09:55:13 -04:00
Hermet Park ce3d1ec7e7 evas svg: fix svg spec compatibility.
Minus degree value must be transformed to the signed before Radian.

It's easily tested i.e. the rotation degree is -350.

@fix
2019-08-19 21:37:45 +09:00
Shinwoo Kim f5aa672853 evas: fix png regression issue
Summary:
The evas_image_load_file_data_png had called png_set_tRNS_to_alpha
from following commit.

   6988a38 evas: fix png loader to actually produce lower resolution
           content when asked.

You could refer to following information regarding png_set_tRNS_to_alpha
which is available on page http://www.libpng.org/pub/png/libpng-manual.txt

   The following code transforms grayscale images of less than 8 to 8 bits,
   changes paletted images to RGB, and adds a full alpha channel if there is
   transparency information in a tRNS chunk.  This is most useful on
   grayscale images with bit depths of 2 or 4 or if there is a multiple-image
   viewing application that wishes to treat all images in the same way.

       if (color_type == PNG_COLOR_TYPE_PALETTE)
           png_set_palette_to_rgb(png_ptr);

       if (png_get_valid(png_ptr, info_ptr,
           PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);

       if (color_type == PNG_COLOR_TYPE_GRAY &&
           bit_depth < 8) png_set_expand_gray_1_2_4_to_8(png_ptr)

Accidentally commit "382c580 evas: add support for .9.png file to PNG loader."
adding a new feature with small code refactoring missed the line calling
png_set_tRNS_to_alpha.

So we got a rendering issue. It made around 75% size white rectangle
using a grayscale and transparent image. I'd like to attach the image
which has following type information for test purpose.

$ identify -verbose ./grayscale_transparent.png | grep type -i
  Mime type: image/png
  Type: Bilevel
    png:IHDR.color-type-orig: 0
    png:IHDR.color_type: 0 (Grayscale)

Test Plan:
This is the sample image file grayscale_transparent.png

{F3748665}

Reviewers: cedric, Hermet, jsuya

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9580
2019-08-16 16:55:12 +09:00
Carsten Haitzler e0f0165220 evas - png loader - fix leake in error case of pixels
fix CID 1403027

@fix
2019-08-11 12:47:37 +01:00
Carsten Haitzler 9149767184 getenv - reduce continually calling getenv for the same vars do once
do it once and remember the result from the first one. drops overhead
for sure by a chunk i actually could see in perf reports like about 1-2%
of cpu...
2019-08-08 23:57:02 +01:00
Boris Faure cdb920ab08 get rid of shadow variables
Summary: gl: add some EINA_FALLTHROUGH

Reviewers: #reviewers, zmike

Reviewed By: zmike

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9525
2019-08-08 17:18:46 -04:00
Carsten Haitzler 064b46b7a3 evas egl - esnure we always destroy surfaces because creating new ones
be sure we dont leak them.
2019-08-07 16:59:43 +01:00
Carsten Haitzler 8e67e9d18e evas - gl_drm - delete old surfaces before creating new ones
we shouldnt go have multiple drm window surfaces per drm surface...
this is bad.

@fix
2019-08-07 16:39:10 +01:00
Carsten Haitzler 21efff6d3e evas image - eina file - be paranoud about double closes
tracking some seemingly not so good asan hits on the eina file where
we're accessing an eina file already closed... so be extra paranoid
about it and set things to null after free/close...
2019-08-05 18:59:33 +01:00
Carsten Haitzler c56791180d gif loader - dup eina file as we keep our own copy of it in the loader
we didnt dup the eina file handle since  we kee our own handle. we
need ot do that. asan found this.
2019-08-05 18:59:33 +01:00
Daekwang Ryu cf818a84be evas_gl: implement EvasGL ES 3.2
add a wrapper function for glFramebufferTexture.
some bugs were fixed.
I tested on Ubuntu 14.04(x64) and nVidia 375 driver with VK-GL-CTS

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D4831
2019-08-01 10:42:55 -07:00
Hermet Park e092878d11 vg json: --log level
Vector needs to try load a lottie file in a brutal force way,
If the input source is not identified.
2019-07-31 15:12:19 +09:00
SubhransuSekhar Mohanty dd484a54dc efl_canvas_vg svg: free the svg tree returned by eet_data_read()
The eet_data_read() api creates the structure by referencing the wwt data structure
and reading from eet file. So the structure should be deleted by the user of the function.
As eet_data_read() api documentation dosen't specify about the ownership I guess
we need to free this structure to avoid memory leak.
2019-07-25 15:19:41 +09:00
junsu choi 2e4c928d81 evas_vg_load_svg: Support multiple gradient without <defs> part
Summary:
Multiple gradients can be declared.
There is a problem of keeping only one gradient information
when it is declared outside defs or when defs is not declared.
It supports the use of multiple gradients even if no defs are declared.

Test Plan:
(with D9312 patch)
cd src/example/edje
edje_cc -beta svg.edc && gcc -o svg-test svg-test.c `pkg-config --libs --cflags evas ecore ecore-evas edje`
./svg-test

Reviewers: Hermet, kimcinoo, smohanty

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9315
2019-07-15 21:23:38 +09:00
junsu choi 84fcc5d073 evas_vg_load_svg: Prevent duplicate operations on radial gradient variables
Summary:
This solves the problem of radial gradient being displayed
abnormally when the radial gradient variables are 0 to 1.

Test Plan:
Sample SVG
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <defs
     id="defs11">
    <linearGradient id="linearGradient1" x1="0" y1="0" x2="0.2" y2="0.2" spreadMethod="reflect">
      <stop style="stop-color:#ff0000;stop-opacity:1;" offset="0"/>
      <stop style="stop-color:#0000ff;stop-opacity:1;" offset="1"/>
    </linearGradient>
    <radialGradient id="radialGradient222" r="0.2" cx="0.3" cy="0.3" spreadMethod="reflect">
      <stop style="stop-color:#ffFF00;stop-opacity:1;" offset="0"/>
      <stop style="stop-color:#00FFff;stop-opacity:1;" offset="1"/>
    </radialGradient>
  </defs>
  <rect x="0" y="0" width="100" height="100" fill="url(#linearGradient1)"/>
  <rect x="50" y="50" width="50" height="50" fill="url(#radialGradient222)"/>
</svg>

Reviewers: Hermet, kimcinoo, smohanty

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9312
2019-07-15 21:22:49 +09:00
Cedric BAIL 382c580182 evas: add support for .9.png file to PNG loader.
This support Android 9 patch file format. Only black is a recognized color for both
the stretch area and the content area. All other color are associated with being
"white".

Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9103
2019-07-12 09:54:18 -07:00
Cedric BAIL 6a93e2ef3d evas: add infrastructure to feed 9 patch information from file loader to image object.
This is just the plumbing that feed data provided along android 9 patch image for example
into Evas object image new stretch and content region infrastructure for rendering them
properly.

Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9102
2019-07-12 09:54:16 -07:00
Cedric BAIL ce076d1323 evas: break Image_Loader API to allow for getting property from the data field of an image.
Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9101
2019-07-12 09:54:14 -07:00
Cedric BAIL 9f35c74d9d evas: break Evas_Loader API and introduce a version numbering for Image_Loader.
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9099
2019-07-12 09:54:11 -07:00
Hermet Park 7fcf887b63 evas svg: fix missing node opacity attribute.
Any svg node could have its opacity value, we missed implementing it.

If a node have a opacity, it's opacity could be multiply with fill and stroke colors.

@fix
2019-06-27 13:18:28 +09:00
Hermet Park 35a5ed1494 evas svg: remove unnecessary initialization. 2019-06-27 13:18:28 +09:00
Marcel Hollerbach 8103b56874 meson: fix building of svg / eet / json loader if its disabled
the problem was that the savers are defining the same defines as the
loaders. Because of me beeing paranoid, i would like to keep the double
define, as later on, someone will likely forget it, and it does not do
any harm here.

this fixes ci.

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D9174
2019-06-25 17:19:08 +02:00
Hermet Park 23af6ec640 evas vector: support json loader for rlottie integration.
Summary:
Introduce a new evas json loader to support lottie animation.
This json loader uses rlottie library which is a new github open project.

These days most ui frameworks (windowpws, skia, qt, xamarin, react, nativescript) supports lottie,
the rlottie was designed to support lottie as a standalone library and compatible with efl as well.

To enable this,please install rlottie library then remove json disabler in meson_options.txt

For more information, See lottie/rlottie project and its a introdcution article:

https://airbnb.io/lottie/#/
https://github.com/samsung/rlottie
https://hermet.pe.kr/143

Co-authored-by: JunsuChoi <jsuya.choi@samsung.com>

{D8941}
{D8944}

Reviewers: #committers, jsuya, bu5hm4n

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8940
2019-06-21 17:35:48 +09:00
Mike Blumenkrantz 012ca46377 gl_generic: directly copy existing image when changing orientation
Summary:
in gl engines, orientation is applied during the draw. this is different from
sw engines where the orientation is directly applied to the internal pixel data
which results in a state change of the object internals.

this preserves image cache state and allows the image to be loaded normally instead
of displaying a black rectangle if orientation is set prior to a texture being
created

@fix
Depends on D8916

Reviewers: Hermet, cedric

Reviewed By: Hermet, cedric

Subscribers: Hermet, cedric, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8918
2019-06-03 08:56:11 -04:00
Mike Blumenkrantz 16e6cb7c7f gl_generic: handle image orientation setting when texture has not been created
Summary:
this occurs when orientation is set during image construction

@fix

Reviewers: segfaultxavi, cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8916
2019-05-29 12:29:03 -04:00
Vincent Torri 24e4881efb Evas: remove Evil.h when not needed and use evil_private when needed
Test Plan: compilation

Reviewers: zmike, raster, cedric

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8921
2019-05-20 08:46:02 -04:00
Hermet Park 7ef58f9581 evas png: apply interpolation when scale down image loading.
Summary:
This patch improves png quality when image uses scale-down at image loading.

Since current scale-down logic just works like point sampling,
image result could be wholely different,

Simply, if source data is consist of continous white and black pixels,
and scale down factor is 2, the sampled data would be only white,
and lose all black pixels, or vice versa.

The result can be unexpected by users.
Even current jpeg scale-down works with interpolation.

Before:
{F3711651}

After:
{F3711652}

Original:
{F3711653}

Reviewers: cedric, raster, #committers, kimcinoo, jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8788
2019-05-13 15:47:22 +09:00
Mike Blumenkrantz 4e67aae489 meson: enable and fix build of ddrag+gdi engines for evas
there are some specific defines and cflags needed for these builds
to succeed and provide the expected functionality
Depends on D8733

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Differential Revision: https://phab.enlightenment.org/D8734
2019-05-06 17:00:57 +02:00
Shinwoo Kim c3c9fed7d9 evas_object_image: save EVAS_IMAGE_CONTENT_HINT_DYNAMIC image
Summary:
evas_gl_common_image_content_hint_set makes RGBA_Image NULL if content hint
is EVAS_IMAGE_CONTENT_HINT_DYNAMIC with 'sec_tbm_surface' and 'egl_tbm_ext'.

efl_file_save(_efl_canvas_image_internal_efl_file_save_save) does not work
in this case because ENFN->image_data_direct_get returns FALSE.

This patch makes ENFN->image_data_direct_get work but you need to free its
returned data after using it.

Reviewers: Hermet, jsuya

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8516
2019-05-02 20:50:24 +09:00
Hermet Park ebd8b21d30 Revert "evas png: apply interpolation when scale down image loading."
This reverts commit 53cdf850ba.

It's still on reviewing, I didn't intend submitting.
2019-05-02 20:19:24 +09:00
Hermet Park 53cdf850ba evas png: apply interpolation when scale down image loading.
Summary:
This patch improves png quality when image uses scale-down at image loading.

Since current scale-down logic just works like point sampling,
image result could be wholely different,

Simply, if source data is consist of continous white and black pixels,
and scale down factor is 2, the sampled data would be only white,
and lose all black pixels, or vice versa.

The result can be unexpected by users.
Even current jpeg scale-down works with interpolation.

Before:
{F3711651}

After:
{F3711652}

Original:
{F3711653}

Reviewers: cedric, raster, #committers, kimcinoo, jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8788
2019-05-02 17:02:00 +09:00
Hermet Park 0fda181e0a evas engine: convert data without any possible loss. 2019-04-30 17:15:54 +09:00
Hermet Park 1f438bd1f0 evas png loader: optimize scale down logic.
Previously, mannual scale down logic was too primitive,
it copied pixel data each channels. Obviously, it's ineffective.

We know the general case - 4 bytes channel which is the most usage,
If loader copies data per four bytes, instructions could be reduced.

When I load scale-downed image(original 8k), about 0.02 secs was reduced by this.
2019-04-29 20:02:34 +09:00
Hermet Park 25aec3ba7b evas waylang_egl: flag on msaa to optimize map drawing.
This msaa flag could help map drawing by avoiding unnecessary framebuffer mapping.
2019-04-26 17:00:46 +09:00
Hermet Park 7324164a63 evas wayland_egl: set up config depth/stencil/msaa properly. 2019-04-25 18:42:31 +09:00
Lauro Moura 132c00a4cb meson: Fix evas engine install directory.
Evas module loading code assumes engines are installed in
evas/modules/engines.

As part of the fixes building evas with meson, the engines are under a
subproject named evas/engines, causing the modules to be installed in
libdir/evas/engines/modules by default.

This commit adds a override of the directory the engine modules are
installed to use the correct location.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8693
2019-04-24 15:11:17 +02:00
Hermet Park 3bd57c2c66 evas x: code refactoring.
keep simple code as possible.
2019-04-24 16:45:05 +09:00
Marcel Hollerbach 87d430df46 meson: ensure that buffer header is installed correctly
the directory it was installed to was <prefix>/include/evas/engine-1/
instead of <prefix>/include/evas-1/ which is wrong. This fixes
enlightenment building.

Reviewed-by: Lauro Neto <lauromauro_>
Differential Revision: https://phab.enlightenment.org/D8692
2019-04-24 08:52:43 +02:00
Hermet Park 808df5ecc2 evas wbmp: fix wrong calc order.
Double check patch again, since my wrong logical thinking,
Every width must be considered to rounding up fiting 8 bits.
this new compuation must be correct.
2019-04-24 14:03:37 +09:00
Hermet Park bffce65f9c evas wbmp loader: coming previous patch with fixing wrong calc.
Those bits must be rounded if they are not fit to 8 bits.

see: 68fe9ec6bf
2019-04-24 10:18:57 +09:00
Hermet Park 54754ab878 Revert "evas-wbmp: revert previous two patches"
This reverts commit 0ebf41c003.
2019-04-24 10:10:36 +09:00
Mike Blumenkrantz 0ebf41c003 evas-wbmp: revert previous two patches
Revert "evas wbmp: remove unnecessary size overflow."
This reverts commit 1061d0a751.
Revert "evas image: check format more strong way for wbmp."
This reverts commit 68fe9ec6bf.

this caused wbmp files to no longer be loadable

ref T7824

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8689
2019-04-23 17:48:41 +02:00
Hermet Park 1061d0a751 evas wbmp: remove unnecessary size overflow.
since this patch 68fe9ec6bf
it checks size validation earlier,
this varification doesn't need anymore...
2019-04-23 21:33:40 +09:00
Hermet Park 68fe9ec6bf evas image: check format more strong way for wbmp.
wbmp format doesn't have any tags for verifying file header,
It's easy to pass other format headers if they have the first 1 byte 0x0,

This ocassionally brings wrong result (= succeeed loading image),
if unknown file format is tried.

So, to make it sure, here verify the size of image additionally.
if the image size is not expected, It returns fail as the result.

This problem is actually happened in this scenario.

open any mpeg file with elm_image.
elm_image_file_set() will return true though it fails to read data.
since wbmp make it pass to succeed.

@fix
2019-04-23 19:19:07 +09:00
Marcel Hollerbach bb6c7c6782 meson: make it possible to link our engines against evas
Summary:
it FINALLY happend! With this python bindings should be able to work
again with a meson build, you can also enable b_lundef right now. And it
appears to work, with this we can also get another step closer to a
windows build.
Depends on D8669

Reviewers: zmike, stefan_schmidt, cedric, vtorri

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8670
2019-04-19 14:39:31 -04:00
Marcel Hollerbach 0deba6ef4c meson: seperate the engine build file from the rest
Summary:
this is required later on, where we want to build the engines
undependend from image loaders etc.
Depends on D8668

Reviewers: zmike, stefan_schmidt, cedric, vtorri

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8669
2019-04-19 14:39:25 -04:00
Marcel Hollerbach c8c374ef48 meson: move build definitions of software_generic to libevas
Summary:
with this we don't have any static module anymore in the engine
directory. This means either *all* modules in the enignes directory are
static OR shared. There is no mixture anymore. This is a requirement for
the directory to be build whenever we want it to be build.
Depends on D8667

Reviewers: zmike, stefan_schmidt, cedric, vtorri

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8668
2019-04-19 14:39:22 -04:00
Marcel Hollerbach a974c864ad meson: move gl_common to gl_generic
Summary:
sooo, gl_common stuff is only used by gl_generic, (and maybe others.
However, it is build static anyways and only linked into gl_generic).

This means, only software_generic is still in here and we can remove one
special case from the build instructions.

Reviewers: zmike, stefan_schmidt, cedric, vtorri

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8667
2019-04-19 14:39:17 -04:00
junsu choi 41152dc29e vg_common_svg : Implement gradientTransform property of linearGradient
Summary:
Svg parser gets transformation matrix information from svg.
If there is a matrix, calculate matrix operations
on the start and end points of the gradient.

TODO: We should implement gradientTransform of radialGradient.

Test Plan: N/A

Reviewers: Hermet, smohanty

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8663
2019-04-19 15:07:12 +09:00
junsu choi 5403af9629 vg_common_svg: Prevent duplicate operations for percentage value
Summary:
x1, y1, x2 and y2 of Svg_Linear_Gradient structure must be a percentage value.(0 ~ 1)
but these variables are reused with efl_gfx_gradient_linear_start/end_set/get
and duplicate operations occur.

Test Plan: N/A

Reviewers: Hermet, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8662
2019-04-19 13:56:49 +09:00
Hermet Park 3856e1a002 evas gl: move to floating point coordinate system.
Summary:
GL engine has used integer coordinates system since it's born though
OpenGL basically uses floating point vertex coordinates system.

There were many dissatisfaction, complaints about this
since object's transition is jiggled, not perfectly smooth.

It's obvious because Positioning must be stepping with integer units
without any subpixel rendering.

Our gl engine currently supports msaa options and evas map allows to
have double precivion coordinates system, our engine must do handle this over as well,
to work together.

If you don't like change,

We could switch behaviors optionally (turn on, only when msaa is enabled)
But I think it's pointless using integer coordinates system in GL thesedays.
It just make code complex to maintain.

There will be an additional patch coming for SW backend map behavior soon.

Left: before patch
Right: after patch

{F3694624}

Reviewers: #committers, raster

Reviewed By: #committers, raster

Subscribers: raster, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8552
2019-04-18 20:08:16 +09:00
Hermet Park 9c66a4751c evas map: move to floating point coordinate system in high-quality drawing.
evas map has used integer coodinate system since it's born,

since object's transition is jiggled, not perfectly smooth.

It's obvious because Positioning must be stepping with integer units
without any subpixel rendering.

Currently, this patch is a sort of preparatory to improve this,
only valid for high-quality evas map (smooth + anti-aliasing)
2019-04-18 19:47:54 +09:00
abdulleh Ghujeh bc5df48ffe Unreachable code
Summary: Removed condition that will never be fulfilled

Reviewers: ali.alzyod, bowonryu, woohyun, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8606
2019-04-15 13:55:19 +02:00
junsu choi 9dc611784e svg_parse: Support gradient when <defs/> is not declared.
Summary:
Even if linear or radius gradient is declared,
it will not be output if there is no <defs/>
It can be supported because it stores the declared gradient in loader.gradient.

Test Plan: N/A

Reviewers: Hermet, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8591
2019-04-11 17:18:10 +09:00
junsu choi 8ef6c422af svg_parse: Change initial value of gradientUnits of linearGradient
Summary:
The initial value of gradientUnits is objectBoundingBox.
If userSpaceOnUse is declared, change user_space to true.
We do not have to recalculate each value by this change.
The default unit for linear x1, y1, x2, y2 is percentages.
This can be a value from 0 to 1. If svg want to use a value between 0 and 100, it must have a '%' symbol

That is accroding to gradientUnits in here
https://www.w3.org/TR/2015/WD-SVG2-20150915/pservers.html#LinearGradientElementGradientUnitsAttribute

Test Plan:
cd ./src/examples/edje
edje_cc -beta svg.edc && gcc -o svg-test svg-test.c `pkg-config --libs --cflags evas ecore ecore-evas edje`

Reviewers: Hermet, smohanty

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8589
2019-04-10 18:03:05 +09:00
junsu choi 96e6d307b8 svg_parse: The percentage gradient value divide by view's size
Summary:
The default unit of gradient value is percentage.
This can be a value from 0 to 1.
If svg use the '%' symbol, we must divide by 100.
And it must be calculated the same as any other case.

Test Plan: N/A

Reviewers: Hermet, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8590
2019-04-10 17:39:36 +09:00
Carsten Haitzler 3439134ea1 Revert "evas gl engines - avoid getting context if possible"
This reverts commit e7771438a2.

This should fix T7764

zmike - you're right. thanks for narrowing down the commit... revert
time.
2019-03-29 00:18:13 +00:00
Marcel Hollerbach 17e60a5585 evas_3d: stop just segfaulting straight away
Summary:
there have been wrong function calls, that did not work at all, since
the function pointer had the wrong type. This fixes the segfaulting
examples of evas3d. However, they still do not render, at least, they
don't crash anymore.

Depends on D8381

Reviewers: cedric, segfaultxavi, zmike, stefan_schmidt

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8382
2019-03-26 10:09:42 -04:00
Christopher Michael 0d63743be9 evas drm: Implement support for outbuf_idle_flush 2019-03-22 12:42:39 -04:00
Christopher Michael 3dfec81be1 evas drm: Implement support for damage_region_set
Summary:
This patch implements engine support for outbuf_damage_region_set that
we can use to mark a framebuffer as being dirty, and to set the dirty
regions on that framebuffer.

ref T7690
Depends on D8403

Reviewers: raster, cedric, zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7690

Differential Revision: https://phab.enlightenment.org/D8404
2019-03-22 12:41:47 -04:00
Christopher Michael 745de87c78 evas drm: Fix software output rotation
Summary:
Don't use redraws_clear to handle buffer swapping. Buffer swapping
should be done on outbuf_flush. This patch fixes evas drm software
output rotation (along with other patches in the series).

ref T7690

@fix
Depends on D8402

Reviewers: raster, cedric, zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7690

Differential Revision: https://phab.enlightenment.org/D8403
2019-03-22 12:41:43 -04:00
Christopher Michael 95ae131502 evas drm: Don't use eng_output_resize or redraws clear
Summary:
We don't need to use eng_output_resize in this engine as
eng_output_update will take care of that. Also, don't use
redraws_clear to handle buffer swapping. This is part one of software
rotation fixes.

ref T7690

@fix
Depends on D8116

Reviewers: raster, cedric, zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7690

Differential Revision: https://phab.enlightenment.org/D8402
2019-03-22 12:41:38 -04:00
Jiyoun Park 9a700c92a7 evas_gl_generic: fix wrong gl context set
example:
...
im=evas_object_image_add()
evas_gl_surface_create
...
evas_object_image_native_surface_set(im, xx)-> MAIN CONTEXT
evas_gl_make_current -> CONTEXT A
.....
evas_object_image_size_set(im, x,x) ->WRONG CONTEXT A

evas_object_image_size_set of image have native_surface finally calls
eng_image_size_set function of gl_generic.

eng_image_size_set cannot get the proper context related with
evas_gl_common_image_native_enable.
It ruined gl context and texture of main context has gone wrong.

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8338
2019-03-15 09:27:51 -07:00
Hermet Park d45e3df689 evas vg: replace to eina_file instance caching by vg.
Here is a replacement to use eina_file from a vg obj instance
to map file data by vg loaders.

This brings a benefit that integrated access to load data
between vg object and vg loaders.
2019-03-12 12:58:31 +09:00
Daniel Kolesa d3c5384cd0 eolian: enable checking of beta/stable contexts in all classes
Summary:
This enables all the checks unconditionally, without ignoring
classes that don't have an Efl namespace. This required a lot
of beta marking to make it build. It most likely doesn't
mark types correctly, as that is not fully enabled yet.

Reviewers: zmike, cedric, segfaultxavi, bu5hm4n

Reviewed By: segfaultxavi

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8266
2019-03-11 13:42:29 +01:00
Mike Blumenkrantz 58fb597acc Revert "Emile: Move colorspaces to Efl.Gfx"
This reverts commit 0d41ad0c83.

stop defining legacy types to eo types!!!!
https://i.redd.it/95mmznk5wo021.gif

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8243
2019-03-08 12:06:20 -08:00
Christopher Michael f5fed8764d evas-gl-drm: Fix issue of rotation not actually rotating
When we call evas_outbuf_reconfigure (when rotation changes), we need
to update the Outbuf with new values for width, height, rotation, etc.
Failing to do this here causes any rotations applied to the engine to
fail.

ref T7690

@fix

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8109
2019-03-06 11:34:51 -08:00
Mike Blumenkrantz 6b046ec845 efl.gfx: remove Efl.Gfx.Image_Load_Error
Summary:
this is now implemented through Eina.Error

ref T7718

Depends on D8066

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl_api

Maniphest Tasks: T7718

Differential Revision: https://phab.enlightenment.org/D8067
2019-03-04 13:36:57 -05:00
Carsten Haitzler b9049925f3 evas gl - swap with damage - look for KHR extn string too
as per shortlog - look for KHR in addition to EXT for swap with damage
region extn detection.
2019-02-28 11:14:56 +00:00
Marcel Hollerbach b805f11c89 build: next attempt to fix build race condition
the source should be used in the dependency. However, only the generated
header source, not the .c files or we will get duplicated sources.

This is another attempt to fix the build OSX travis failure

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D7896
2019-02-08 15:48:02 +01:00
Marcel Hollerbach 7ef793e7ef build: fix macos race condition
There was the problem that evas_ector_software_buffer.eo was not arround
but required by the gl_generic engine, this fixes that by adding the
generated source and dependencies to the software_generic dependency.

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D7871
2019-02-04 11:08:03 +01:00
Vincent Torri f7c560c311 replace hton and ntoh family functions with ones defined in eina
Summary: This fixes especially the execution of edje_cc on Windows

Test Plan: execution of edje_cc

Reviewers: cedric, raster

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7834
2019-02-01 14:25:35 +00:00
Marcel Hollerbach 4e0079eaa9 meson: fix race condition in building
the error
```
./src/modules/evas/engines/gl_generic/../software_generic/evas_ector_software.h:31:10: fatal error: 'evas_ector_software_buffer.eo.h' file not found
```
Came up when building efl on osx with meson. This is caused by the fact that gl_generic was build before the .eo files of evas_ector have been created in software_generic, this fixes this race condition by adding a new dependency to avoid that.

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D7831
2019-01-30 18:16:47 +01:00
Marcel Hollerbach e59603ee4c Revert "meson: fix race condition in building"
This reverts commit e1f3a4232e.

git push on the wrong branch - sorry
2019-01-30 17:07:08 +01:00
Marcel Hollerbach e1f3a4232e meson: fix race condition in building
this came up on travis with osx. However, it should hit everyone, and
its questionable why it did not happened ever before.

Differential Revision: https://phab.enlightenment.org/D7831
2019-01-30 17:06:34 +01:00
Marcel Hollerbach 34efdfb1b1 efl: convert all classes to the new eolian syntax
ref T7459

Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7684
2019-01-18 16:31:26 +01:00
Daniel Kolesa b1ee0f3acd evas/engines/gl_generic: remove multiclass inheritance
evas_ector_gl_buffer/evas_ector_gl_image_buffer contained a regular
class in extensions list, which is wrong.
2019-01-16 20:00:16 +01:00
Carsten Haitzler 3511b96448 emile+ tgv saver - stop using deprecated lz4 functions to remove warnings 2019-01-15 12:39:21 +00:00
Ali Alzyod f78ef852da optimize glyph images data copy into 4 byte aligned images
Differential Revision: https://phab.enlightenment.org/D7461
2019-01-10 13:05:17 -06:00
Hermet Park 07521f5e07 evas vg: refactor internal function name.
Specify explict svg name in vg common function
since the function totally depends on svg spec.

No logic changes.
2019-01-09 14:59:01 +09:00
Derek Foreman 70b16099a9 gl_drm: use dlsym looked up symbol for extension check
We looked this up with dlsym, so I guess we should use that even though
the direct call seems to work just fine most of the time.

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Chris Michael <cp.michael@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7433
2018-12-14 10:29:55 -06:00
Hermet Park fbe92aa67f evas ector: add software implmentation for masking feature.
This implementation uses Ector_Buffer to generate mask image from vg container,
and pass it to Ector engine. Ector renderer could blend this image as a mask.
Yet only vg container works as a mask, we could extend shape to support masking later.

Still vector gl drawing is not completed, We use software ector buffer to draw on it.
This is on progessing.
2018-12-07 19:50:08 +09:00
Hermet Park 950059ce9a evas vg: revise basic vg cache logic.
There was a big trouble that vg cache didn't free cached data properly.
Plus, there was a unnecessary copy of vg tree data.

This revised version is a improvement of our evas vg cache
in stable and optmization.
2018-12-07 19:08:34 +09:00
Hermet Park 093e32a0fb evas vg: code refactoring.
keep internal variable and structre names consisteny.
no logical changes.
2018-12-07 17:14:15 +09:00
Hermet Park c435cdf173 evas ector: use proper prefix name 2018-12-04 13:55:29 +09:00
Marcel Hollerbach c1dd57d210 meson: use eolian_gen with -S
this ensures that eolian does not parse installed .eo files

Differential Revision: https://phab.enlightenment.org/D7405
2018-12-03 19:00:26 +01:00
Hermet Park 8453b06bf8 evas gl: Remove single-line pipe code of gl commands.
Summary:
GLPIPES is proved to use since it's been used for many years as the default.
On the other hand, single-line routine hans't, acutally it's not maintained properly.
Even this single-line routine doesn't compileable right moment.

This patch is one refactoring to clean up code that's not valuable to maintain.

Reviewers: #committers, raster, cedric, ManMower

Reviewed By: #committers, ManMower

Subscribers: ManMower, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7328
2018-11-30 13:30:15 +09:00
Hermet Park c71a561997 evas gl: recover current program state.
Summary:
When we meets a new shader program in shape_context_push(),
it loads a shader binary, if it is necessary, create a new program for the shader.

In this step, the current program state could changed to this new one.
But still our gl context by shader_flush() could keep the previous program for next shader flush.

But it doens't know current program was changed by dropping by.

Here is a simple scenario:

1. evas_gl_common_context_image_push():
This image requires Program A. it calls evas_gl_common_context_push() internally.
then shader_array_flush() instantly.
It stores the current context including shader program(Program A)

2. evas_gl_common_context_xxx_push():
call evas_gl_common_shader_program_get().
xxx draws first time, it loads a new shader program.
Now this changed the current program to a new instant one.

...

3. shader_array_flush():
draw image which requires Prorgam A (No.1).
Unfortunately, stored context is same to this.
So, it skips some gl context setting including shader program.

@fix

Reviewers: #committers

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7309
2018-11-27 11:25:13 +09:00
Carsten Haitzler 91184f7324 evas gl - shader cache - warn - use bigger buffer to avoid trunc warn 2018-11-09 11:44:00 +00:00
Carsten Haitzler df5702a609 evas sw x11 - warn - use void ptr for error handler
warnings now are being super picky with:

../src/modules/evas/engines/software_x11/evas_xlib_buffer.c: In
function ‘evas_software_xlib_x_output_buffer_new’:
../src/modules/evas/engines/software_x11/evas_xlib_buffer.c:306:56:
warning: cast between incompatible function types from ‘void
(*)(Display *, XErrorEvent *)’ {aka ‘void (*)(struct _XDisplay *,
struct <anonymous> *)’} to ‘int (*)(Display *, XErrorEvent *)’ {aka
‘int (*)(struct _XDisplay *, struct <anonymous> *)’}
[-Wcast-function-type]
                                  ph = XSetErrorHandler((XErrorHandler)

can we really match a struct <anonymous> somehow? i don't think so...
so... void to the rescue.
2018-11-09 11:44:00 +00:00
Carsten Haitzler 143bef348f evas gl extn sym finding - warn - use void catss for no more warns
so gcc now is being very picky about types. since we'r ereallyjast
throwing void *'s around for pointers to funcs and looking them up by
hand - use void *'s to avoid warnings.
2018-11-09 11:44:00 +00:00
Carsten Haitzler a447bbd489 evas blur filter - fix warnigns about unused labels
if no asm is defined.. then you hit this.
2018-11-09 11:43:59 +00:00
Carsten Haitzler e7771438a2 evas gl engines - avoid getting context if possible
so getting context at least on some dviers is expensive. it may really
impact cpu usage a lot (in this cate getpid() was being called by the
nouveau drivers and that can be expensive. it is on ARM as it's a full
syscall and 1-2% of cpu time was just getting pid all the time thanks
to this...

@opt
2018-11-09 11:43:58 +00:00
Daniel Kolesa 5a3d79d383 meson: add eolian custom dependencies support
This uses the meson/ninja depfile functionality + eolian to make
sure proper dependencies between generated files and .eo files
are managed, to ensure consistent re-generation of all generated
files that are affected upon .eo file modification.

For custom rules with multiple outputs, Ninja currently does not
support depfiles. Therefore, split those into two custom rules
so that the depfiles functionality can be enabled. While this
is ugly and slows down the process a little by having to invoke
Eolian twice instead of once, it has to be done and it's still
better than what we had in Autotools anyway.

Differential revision: D7187

Fixes T6700.
2018-10-24 12:02:55 +02:00
Marcel Hollerbach d3122474d4 meson: link gl_drm to gdm
gl_drm uses that - this was forgotten. Sorry.

Reported by ApBBB.
2018-10-13 12:10:39 +02:00
Carsten Haitzler 01109a8c7b glx extns - check client and server extns
in case... client should be a superset...
2018-10-11 16:25:06 +01:00
Carsten Haitzler 76725b2d3b evas gl x11 - add working measure funcs for debugging performance 2018-10-11 16:25:06 +01:00
Marcel Hollerbach 46d464e5bf here comes meson
a new shiny buildtool that currently completes in the total of ~ 4 min..
1 min. conf time
2:30 min. build time
Where autotools takes:
1:50 min. conf time
3:40 min. build time.

meson was taken because it went quite good for enlightenment, and is a traction gaining system that is also used by other mayor projects. Additionally, the DSL that is defined my meson makes the configuration of the builds a lot easier to read.

Further informations can be gathered from the README.meson

Right now, bindings & windows support are missing.

It is highly recommented to use meson 0.48 due to optimizations in meson
that reduced the time the meson call would need.

Co-authored-by: Mike Blumenkrantz <zmike@samsung.com>

Differential Revision: https://phab.enlightenment.org/D7012
Depends on D7011
2018-10-02 17:22:50 +02:00
Hermet Park 431c8cc090 evas gl: fix invalid image size.
Summary:
When we reset of texture for a valid object,
this object cache size become -1 x -1 with null texture.

Later, we reset a new texture of the object,
Its texture size could be -1 x -1.
That brings to incorrect result drawing.

Can't see any points of using cache size there.

This bug was introduced by 9e01cf2698

@fix

Reviewers: #committers, raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7077
2018-10-01 21:07:07 +09:00
Derek Foreman b5b7e6a0e6 wayland_egl: Fix drop shadows on radeon
Summary:
We're doing this all wrong.

We've asking for "at least 1 bit" of A, R, G, B color depth.

ARGB2101010 fits that nicely, so mesa on radeon gives it to us.

This only fixes the drop shadows though, it's entirely possible that
a fullscreen window without alpha would get ARGB2101010 instead of
XRGB8888, so this code probably needs a rethink for multiple engines.

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: devilhorns, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7022
2018-09-11 12:22:06 -04:00
Hermet Park 423d8a2296 evas image: fix a bug in image preloading.
Summary:
Current preloading is too buggy since it's on thread-based.
This is a fundamental improvement to fix a bug.

The critical issue here is,
When preloading img object suddenly cancel its preloading,
the object possibly cannot render image next then because
renderer doesn't have any idea when async cancelling is
finished. Renderer just tries to render regardless of
image loading status, and this could occur no-texture(in gl case)
image object.

So, here improvement is, adding a notification for async cancelled
so that putting img objects to redraw images properly after their preloading is
cancelled.

The best scenario to reproduce this bug is this one.

Evas_Object *img2 = evas_object_image_filled_add(evas);
evas_object_image_file_set(img2, "test.jpg", NULL);
evas_object_image_preload(img2, EINA_FALSE);
evas_object_resize(img2, 200, 200);
evas_object_show(img2);

Evas_Object *img = evas_object_image_filled_add(evas);
evas_object_image_file_set(img, "test.jpg", NULL);
evas_object_image_preload(img, EINA_FALSE);
evas_object_move(img, 200, 200);
evas_object_resize(img, 200, 200);
evas_object_show(img);

evas_object_image_preload(img2, EINA_TRUE);
If you run this on gl backend, occasionally happens rendering fail.

Yet there other bugs on preloading feature....

@fix

Reviewers: #committers, raster

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6919
2018-09-03 17:12:55 +09:00
Chris Michael d05ddaba62 evas-eglfs: Remove cserve2 support
Summary:
ref T7226

Depends on D6932

Reviewers: raster, cedric, zmike, Hermet

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6933
2018-08-30 13:45:01 +09:00
Chris Michael 96a46ea944 evas-gl-drm: Remove cserve2 support
Summary:
ref T7226

Depends on D6931

Reviewers: raster, cedric, zmike, Hermet

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6932
2018-08-30 13:44:30 +09:00
Chris Michael d3eaf330f6 evas-gl-x11: Remove cserve2 support
Summary:
ref T7226

Depends on D6930

Reviewers: raster, cedric, zmike, Hermet

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6931
2018-08-30 13:43:49 +09:00
Chris Michael 38ee4167bc evas-software-genereric: Remove cserve2 support
ref T7226

Depends on D6929
2018-08-30 13:42:55 +09:00
Chris Michael 4e2287ecaf evas-gl-common: Remove cserve2 support
ref T7226

Depends on D6927
2018-08-30 13:39:31 +09:00
Chris Micheal e800139953 evas-gl-generic: Remove cserve2 support
ref T7226

Depends on D6925
2018-08-30 13:34:57 +09:00
Hermet Park 54f2a554da evas cache: refactor internal logic.
Summary:
Adding cache targets in other modules are inproper.
This can't be managed by cache module inside.

One representive scenario is,
when preload cancel is triggered, preload canceling sequence
can't be performed properly because cache targets implicitly were
increased by backend modules.

And then, Cache itself couldn't get notified it.
see this condition.

if ((!ie->targets) && (ie->preload) && (!ie->flags.pending))
in _evas_cache_image_entry_preload_remove()

Consequently, I move preloaded callbacks to sync with adding cache targets,
not to add by backed engines themselves.

This will bring Cache to manage cache targets properly.

Reviewers: #committers, raster

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6912
2018-08-30 13:26:06 +09:00
Chris Michael ad9e13ea56 evas-software-x11: Remove cserve2 support
Summary:
ref T7226

Depends on D6928

Reviewers: raster, cedric, zmike, Hermet

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6929
2018-08-30 13:25:05 +09:00
Chris Michael 65a36bee2b evas-buffer: Remove cserve2 support
Summary:
ref T7226

Depends on D6926

Reviewers: raster, cedric, zmike, Hermet

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6927
2018-08-30 13:23:23 +09:00
Chris Michael 2d9168e956 evas-wayland-egl: Remove cserve2 support
Summary:
ref T7226

Depends on D6924

Reviewers: raster, cedric, zmike, Hermet

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6925
2018-08-30 13:22:34 +09:00
Chris Michael ea857a500f evas-wayland-shm: Remove cserve2 support
Summary:
ref T7226

Depends on D6923

Reviewers: raster, cedric, zmike, Hermet

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6924
2018-08-30 13:21:27 +09:00
Chris Michael 7313e6973e evas_drm: Remove cserve2 support
Summary: ref T7226

Reviewers: raster, cedric, zmike, Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6923
2018-08-30 13:19:41 +09:00
Hermet Park 4e1553905c evas cache: remove unused custom task in preload.
Summary:
That redundant code just made code complex.

This is one of intermediate patches for preload

Reviewers: raster, #committers

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6907
2018-08-30 13:17:44 +09:00
Hermet Park 43d8c853aa evas gl: skip twice texture upload.
Summary:
While debugging a problem,
found a hole that upload texture twice unnecessary.

Here is the scenario.

Set up two objects with same image resource plus both preloading - obj1, obj2;

After image preloading,
_evas_cache_image_async_end() will be triggered.
=> ie->flags.update_data = true;

then first obj1 is gonna drawing,
Since it doesn't have any texture uploaded yet,
it will create a texture and upload texture data as well.
along with below sequence.
=> else if (!im->tex && !ie->load_error)

After it, second obj2 is gonna drawing.
But actually its texture is already readied after obj1,
it doesn't need to upload texture agin.

But still ie->flag.update_data == true, it will do dumbly.

Reviewers: #committers, devilhorns, raster

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6902
2018-08-30 13:14:13 +09:00
Hermet Park 78fb9cf124 evas gl: remove redundant code.
Reviewers: devilhorns, #committers, raster

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6901
2018-08-29 13:57:45 +09:00
Hermet Park 43fcca4acd evas cache: code refactoring.
rename to proper internal variables.
Differential Revision: https://phab.enlightenment.org/D6911
2018-08-27 21:25:29 +02:00
Hermet Park c8ddf93707 evas gl: fix missing map texture target.
Summary:
Map context missed setting texture target.
I guess this is one of regression bugs in gl backend.

When shader is flushed, it sets invalid texture target with map texture.
That caused blank map rendering, this could be observed temporary
because gl pipe contexts are reusable and missing texture target means,
it could use previous texture target values that mostly have GL_TEXTURE_2D.

@fix

Reviewers: #committers, ManMower

Reviewed By: #committers, ManMower

Subscribers: ManMower, cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6818
2018-08-14 17:13:24 -04:00
Hermet Park 6e88cc5942 evas gl_common: code refactoring.
Summary: use boolean instead int, no logic changes.

Reviewers: #committers, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6807
2018-08-10 12:06:42 -04:00
Hermet Park 323c87c215 evas sdl: don't make confusing, we only use one-indexed egl handles.
Reviewers: ManMower

Subscribers: devilhorns, cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6693
2018-08-02 12:20:27 +09:00
Hermet Park e7bb795aba canvas vg_loader: close opened file after using it.
Summary:
Here opened eina file is just leaked.
close it properly.

@fix.

Reviewers: devilhorns, #committers, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6549
2018-07-11 16:09:31 +09:00
Derek Foreman 8cd3860d00 evas_drm: Trim the queue of buffers if we've had extra for too long
Summary:
In fixing T7099 I've also allowed the buffer queue to grow quite large,
so now we should prune it back if it's bigger than it needs to be for
a long time.

ref T7099
Depends on D6565

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers, zmike

Tags: #efl

Maniphest Tasks: T7099

Differential Revision: https://phab.enlightenment.org/D6566
2018-07-10 16:53:12 -04:00
Derek Foreman 2668f6196e evas_drm: Move MAX_BUFFERS macro from header to source file
Summary:
It's no longer needed in the header because it doesn't change
the size of the structures there anymore.
Depends on D6564

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6565
2018-07-10 16:53:00 -04:00
Derek Foreman f7fc06bf86 evas_drm: Allocate buffers on demand
Summary:
Instead of allocating a fixed number of buffers immediately, allocate
buffers if needed to render to.

Normally we only need 2 buffers, but we've been allocating 3 to handle
worse case behaviour.  As T7099 shows, this is not always enough.  We
now cap at a max of 10.

For the normal case where we always use 2 this results in a slight
memory reduction (1 buffer) and a slight renering load reduction
because we pick the oldest buffer to render into.

A future patch will trim the buffer queue if it's been too large for
a long time.

fix T7099
Depends on D6563

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers, zmike

Tags: #efl

Maniphest Tasks: T7099

Differential Revision: https://phab.enlightenment.org/D6564
2018-07-10 16:52:46 -04:00
Derek Foreman 5d30f2b0b3 evas_drm: replace outbuf fb array with a list
Summary:
This is just a step towards making it a variable length.

ref T7099
Depends on D6562

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers, zmike

Tags: #efl

Maniphest Tasks: T7099

Differential Revision: https://phab.enlightenment.org/D6563
2018-07-10 16:13:52 -04:00
Derek Foreman f783163ca5 evas_drm: Make the fbs an array of pointers
Summary:
Use pointers instead of an array of structures, since we're going to
replace the array with a list shortly.

ref T7099

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers, zmike

Tags: #efl

Maniphest Tasks: T7099

Differential Revision: https://phab.enlightenment.org/D6562
2018-07-10 16:13:18 -04:00
Carsten Haitzler cb9dc80fdf evas gl-x11 engine - nvidia driver - fix performance drop
this has been going on for a while. on nvidia drivers in gles mode on
x11 there is a massive perf drop to like a few fps with enough windows
if we build for egl/gles instead of opengl. it was the re-creating of
eglimages every frame. put a vendor specific workaround for this and
avoid it. it's not needed there anyway. framerate back to 60fps
smoothness afterwards.

@fix
2018-07-10 16:08:19 +09:00
Derek Foreman a310667bec ecore_wl2: Add a purge option to surface flush
Summary:
We need to be able to forcibly destroy all surface buffers to make
session recovery work safely for software rendering.

@betabreak
Depends on D6278

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6279
2018-06-15 13:18:30 -05:00
Mike Blumenkrantz a6731320f5 evas engines: do not immediately free native surface when unsetting it
Summary:
this is a longstanding issue which was exposed by recent patches to standardize
object lifecycles. when a native surface is used by multiple images, unsetting
the surface from one image must not destroy the native surface or else the
remaining images

fix T6970

@fix

Reviewers: ManMower

Reviewed By: ManMower

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T6970

Differential Revision: https://phab.enlightenment.org/D6235
2018-06-05 12:14:30 -05:00
Mike Blumenkrantz 5b043be1db gl_common: fix invalid memory access
Summary:
code was added which ignores the comment explicitly warning not to
do what was done here

ref 9e01cf2698

ref T6970

==4829== Invalid read of size 1
==4829==    at 0x246D8F06: evas_gl_common_image_update (evas_gl_image.c:907)
==4829==    by 0x246DAA7B: evas_gl_common_image_draw (evas_gl_image.c:1417)
==4829==    by 0x246A2AB6: eng_image_draw (evas_engine.c:1240)
==4829==    by 0x6A87842: _draw_image (evas_object_image.c:1403)
==4829==    by 0x6A8A1BF: _evas_image_render (evas_object_image.c:2171)
==4829==    by 0x6A890C1: evas_object_image_render (evas_object_image.c:1868)
==4829==    by 0x6B09C82: evas_render_mapped (evas_render.c:2292)
==4829==    by 0x6B0CE90: evas_render_updates_internal_loop (evas_render.c:3079)
==4829==    by 0x6B0EACA: evas_render_updates_internal (evas_render.c:3522)
==4829==    by 0x6B1087C: evas_render_updates_internal_wait (evas_render.c:3946)
==4829==    by 0x6B10A4D: _evas_canvas_render_updates (evas_render.c:3971)
==4829==    by 0x6A7A234: evas_canvas_render_updates (evas_canvas.eo.c:212)
==4829==    by 0x6A7BBD4: evas_render_updates (evas_canvas.eo.c:758)
==4829==    by 0x808A7D8: ecore_evas_render (ecore_evas.c:177)
==4829==    by 0x808AA58: _ecore_evas_idle_enter (ecore_evas.c:284)
==4829==    by 0x5CC1E46: _ecore_call_task_cb (ecore_private.h:442)
==4829==    by 0x5CC1EAE: _ecore_factorized_idle_process (ecore_idler.c:35)
==4829==    by 0xBFA4DD4: _event_callback_call (eo_base_class.c:1663)
==4829==    by 0xBFA50A6: _efl_object_event_callback_call (eo_base_class.c:1747)
==4829==    by 0xBFA514C: efl_event_callback_call (eo_base_class.c:1750)
==4829==    by 0x5CC661B: _ecore_main_loop_iterate_internal (ecore_main.c:2352)
==4829==    by 0x5CC3F65: _ecore_main_loop_begin (ecore_main.c:1175)
==4829==    by 0x5CCC856: _efl_loop_begin (efl_loop.c:83)
==4829==    by 0x5CCEF6D: efl_loop_begin (efl_loop.eo.c:28)
==4829==    by 0x5CC40DF: ecore_main_loop_begin (ecore_main.c:1248)
==4829==    by 0x5480EE: main (e_main.c:1090)
==4829==  Address 0x2bfc30f8 is 328 bytes inside a block of size 560 free'd
==4829==    at 0x4C30D18: free (vg_replace_malloc.c:530)
==4829==    by 0x540AE91: _eina_freeq_free_do (eina_freeq.c:118)
==4829==    by 0x540B7B0: eina_freeq_ptr_add (eina_freeq.c:372)
==4829==    by 0x6BCD23C: _evas_common_rgba_image_delete (evas_image_main.c:555)
==4829==    by 0x6B41538: _evas_cache_image_entry_delete (evas_cache_image.c:205)
==4829==    by 0x6B43503: evas_cache_image_drop (evas_cache_image.c:945)
==4829==    by 0x6B43F4F: evas_cache_image_size_set (evas_cache_image.c:1166)
==4829==    by 0x246D6548: evas_gl_common_image_alloc_ensure (evas_gl_image.c:17)
==4829==    by 0x246D8EA8: evas_gl_common_image_update (evas_gl_image.c:869)
==4829==    by 0x246DAA7B: evas_gl_common_image_draw (evas_gl_image.c:1417)
==4829==    by 0x246A2AB6: eng_image_draw (evas_engine.c:1240)
==4829==    by 0x6A87842: _draw_image (evas_object_image.c:1403)
==4829==    by 0x6A8A1BF: _evas_image_render (evas_object_image.c:2171)
==4829==    by 0x6A890C1: evas_object_image_render (evas_object_image.c:1868)
==4829==    by 0x6B09C82: evas_render_mapped (evas_render.c:2292)
==4829==    by 0x6B0CE90: evas_render_updates_internal_loop (evas_render.c:3079)
==4829==    by 0x6B0EACA: evas_render_updates_internal (evas_render.c:3522)
==4829==    by 0x6B1087C: evas_render_updates_internal_wait (evas_render.c:3946)
==4829==    by 0x6B10A4D: _evas_canvas_render_updates (evas_render.c:3971)
==4829==    by 0x6A7A234: evas_canvas_render_updates (evas_canvas.eo.c:212)
==4829==    by 0x6A7BBD4: evas_render_updates (evas_canvas.eo.c:758)
==4829==    by 0x808A7D8: ecore_evas_render (ecore_evas.c:177)
==4829==    by 0x808AA58: _ecore_evas_idle_enter (ecore_evas.c:284)
==4829==    by 0x5CC1E46: _ecore_call_task_cb (ecore_private.h:442)
==4829==    by 0x5CC1EAE: _ecore_factorized_idle_process (ecore_idler.c:35)
==4829==    by 0xBFA4DD4: _event_callback_call (eo_base_class.c:1663)
==4829==    by 0xBFA50A6: _efl_object_event_callback_call (eo_base_class.c:1747)
==4829==    by 0xBFA514C: efl_event_callback_call (eo_base_class.c:1750)
==4829==    by 0x5CC661B: _ecore_main_loop_iterate_internal (ecore_main.c:2352)
==4829==    by 0x5CC3F65: _ecore_main_loop_begin (ecore_main.c:1175)
==4829==    by 0x5CCC856: _efl_loop_begin (efl_loop.c:83)
==4829==    by 0x5CCEF6D: efl_loop_begin (efl_loop.eo.c:28)
==4829==    by 0x5CC40DF: ecore_main_loop_begin (ecore_main.c:1248)
==4829==    by 0x5480EE: main (e_main.c:1090)
==4829==  Block was alloc'd at
==4829==    at 0x4C31A1E: calloc (vg_replace_malloc.c:711)
==4829==    by 0x6BCCF2F: _evas_common_rgba_image_new (evas_image_main.c:509)
==4829==    by 0x6B41588: _evas_cache_image_entry_new (evas_cache_image.c:261)
==4829==    by 0x6B44861: evas_cache_image_empty (evas_cache_image.c:1447)
==4829==    by 0x246D845B: evas_gl_common_image_native_disable (evas_gl_image.c:624)
==4829==    by 0x253F3C09: eng_image_native_set (evas_engine.c:1234)
==4829==    by 0x6A86204: _evas_image_native_surface_set (evas_object_image.c:1021)
==4829==    by 0x6A7E110: evas_object_image_native_surface_set (evas_image_legacy.c:509)
==4829==    by 0x6A8609A: _on_image_native_surface_del (evas_object_image.c:998)
==4829==    by 0x6A55190: _eo_evas_object_cb (evas_callbacks.c:184)
==4829==    by 0xBFA4EB7: _event_callback_call (eo_base_class.c:1686)
==4829==    by 0xBFA51F8: _efl_object_event_callback_legacy_call (eo_base_class.c:1759)
==4829==    by 0xBFA529E: efl_event_callback_legacy_call (eo_base_class.c:1762)
==4829==    by 0x6A968ED: _efl_canvas_object_efl_object_event_callback_legacy_call (evas_object_main.c:1229)
==4829==    by 0xBFA529E: efl_event_callback_legacy_call (eo_base_class.c:1762)
==4829==    by 0x6A55C3D: evas_object_event_callback_call (evas_callbacks.c:413)
==4829==    by 0x6A96D3E: _efl_canvas_object_efl_object_invalidate (evas_object_main.c:1279)
==4829==    by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829==    by 0xBFA0A09: _efl_invalidate (eo_base_class.c:170)
==4829==    by 0xBFA2737: _efl_object_parent_set (eo_base_class.c:734)
==4829==    by 0xBFA6BDA: efl_parent_set (efl_object.eo.c:12)
==4829==    by 0xBFA2537: efl_del (eo_base_class.c:686)
==4829==    by 0x6A96082: evas_object_del (evas_object_main.c:1041)
==4829==    by 0x2C9D519F: _bar_icon_preview_del (bar.c:762)
==4829==    by 0x6A55190: _eo_evas_object_cb (evas_callbacks.c:184)
==4829==    by 0xBFA4EB7: _event_callback_call (eo_base_class.c:1686)
==4829==    by 0xBFA51F8: _efl_object_event_callback_legacy_call (eo_base_class.c:1759)
==4829==    by 0xBFA529E: efl_event_callback_legacy_call (eo_base_class.c:1762)
==4829==    by 0x6A968ED: _efl_canvas_object_efl_object_event_callback_legacy_call (evas_object_main.c:1229)
==4829==    by 0xBFA529E: efl_event_callback_legacy_call (eo_base_class.c:1762)
==4829==    by 0x6A55C3D: evas_object_event_callback_call (evas_callbacks.c:413)
==4829==    by 0x6A96D3E: _efl_canvas_object_efl_object_invalidate (evas_object_main.c:1279)
==4829==    by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829==    by 0x7BE9326: _efl_access_object_efl_object_invalidate (efl_access_object.c:634)
==4829==    by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829==    by 0xBFA0A09: _efl_invalidate (eo_base_class.c:170)
==4829==    by 0xBFA2737: _efl_object_parent_set (eo_base_class.c:734)
==4829==    by 0xBFA6BDA: efl_parent_set (efl_object.eo.c:12)
==4829==    by 0xBFA2537: efl_del (eo_base_class.c:686)
==4829==    by 0x6A96082: evas_object_del (evas_object_main.c:1041)
==4829==    by 0x7CD5F2C: _efl_ui_widget_efl_canvas_group_group_del (efl_ui_widget.c:855)
==4829==    by 0x6AAD303: efl_canvas_group_del (evas_object_smart.c:1862)
==4829==    by 0x7AFF104: _elm_box_efl_canvas_group_group_del (elm_box.c:362)
==4829==    by 0x6AAD303: efl_canvas_group_del (evas_object_smart.c:1862)
==4829==    by 0x6AABB79: evas_object_smart_del (evas_object_smart.c:1288)
==4829==    by 0x6A97179: _efl_canvas_object_efl_object_invalidate (evas_object_main.c:1336)
==4829==    by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829==    by 0x7BE9326: _efl_access_object_efl_object_invalidate (efl_access_object.c:634)
==4829==    by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829==    by 0xBFA0A09: _efl_invalidate (eo_base_class.c:170)
==4829==    by 0xBFA2737: _efl_object_parent_set (eo_base_class.c:734)
==4829==    by 0xBFA6BDA: efl_parent_set (efl_object.eo.c:12)
==4829==    by 0xBFA2537: efl_del (eo_base_class.c:686)
==4829==    by 0x6A96082: evas_object_del (evas_object_main.c:1041)
==4829==    by 0x2C9D41DA: _bar_icon_preview_hide (bar.c:450)
==4829==    by 0x5CFE14C: _ecore_call_task_cb (ecore_private.h:442)
==4829==    by 0x5CFE5C4: _ecore_timer_legacy_tick (ecore_timer.c:160)
==4829==    by 0xBFA4DD4: _event_callback_call (eo_base_class.c:1663)
==4829==    by 0xBFA50A6: _efl_object_event_callback_call (eo_base_class.c:1747)
==4829==    by 0xBFA514C: efl_event_callback_call (eo_base_class.c:1750)
==4829==    by 0x5CFF880: _efl_loop_timer_expired_call (ecore_timer.c:634)
==4829==    by 0x5CFF6AF: _efl_loop_timer_expired_timers_call (ecore_timer.c:587)
==4829==    by 0x5CC6522: _ecore_main_loop_iterate_internal (ecore_main.c:2317)
==4829==    by 0x5CC3F65: _ecore_main_loop_begin (ecore_main.c:1175)
==4829==    by 0x5CCC856: _efl_loop_begin (efl_loop.c:83)
==4829==    by 0x5CCEF6D: efl_loop_begin (efl_loop.eo.c:28)
==4829==    by 0x5CC40DF: ecore_main_loop_begin (ecore_main.c:1248)
==4829==    by 0x5480EE: main (e_main.c:1090)

Reviewers: ManMower

Reviewed By: ManMower

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6234
2018-05-31 13:12:18 -05:00
Derek Foreman 684d6a69d6 ee_wayland: remove edges flag
Summary:
Nothing needs this anymore.
Depends on D6121

Reviewers: zmike, cedric

Reviewed By: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6122
2018-05-08 13:26:22 -05:00
Derek Foreman af9ae04eda ee_wayland_shm: Remove resize flag
Summary:
This hasn't been useful in a very long time.
Depends on D6120

Reviewers: zmike, cedric

Reviewed By: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6121
2018-05-08 13:26:18 -05:00
Derek Foreman cadf0728fd ee_wayland_egl: Remove some amazing weirdness
Summary:
I don't even know what to put here, but I'll try.

wl_egl_window_resize()'s final two parameters indicate new attachment
points for a buffer relative to the previous top left corner.  When the
compositor is resizing a window it already handles the corner placement.
Fortunately, compositors seem to ignore the new attach co-ords during
resize, so this code hasn't broken anything.  It's just a complicated
NOP.

The new attachment points are intended for use in spontaneous resize,
not drag resize, but the only time these functions are called is for
drag resize.
Depends on D6119

Reviewers: zmike, cedric

Reviewed By: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6120
2018-05-08 13:26:12 -05:00
Xavi Artigas 5697f6e94b Efl.Gfx.Image* (From Efl.Image*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:40 -07:00
Derek Foreman 6da0933d60 ecore_wl2: Add alpha to reconfigure
Currently we only ever make wayland windows with alpha, this is a step
towards changing that.
2018-04-20 13:00:27 -05:00
Derek Foreman d85e960060 wayland_egl: Fix color depth when not using alpha
Since we don't actually set the color depth at all we can end up with
an RGB565 buffer.  We don't ask for depths because apparently the N900
had a problem with this under X.

I'm not aware of any efforts to bring wayland to the N900, so let's do
this normally.
2018-04-20 13:00:27 -05:00
Bowon Ryu f176aece65 evas_engine: remove logically dead code
Summary:
"plane" exception value is already filtered at line 1791.
execution cannot reach this statement.

Reviewers: cedric, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D5973
2018-04-20 19:07:39 +09:00
Daniel Kolesa fcae7cab27 eolian gen: enable constness generation on property getter impls
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.

Ref T6859.
2018-04-17 20:31:55 +02:00
junsu choi d21d51a4a9 evas: fix typo written twice
Summary: disp is written twice with the same value.

Test Plan: N/A

Reviewers: woohyun, kimcinoo, cedric

Reviewed By: cedric

Subscribers: cedric

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

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-06 11:32:07 -07:00
WooHyun Jung 07f7fee2d0 evas_gl_image: add null check 2018-04-05 11:10:43 +09:00
Cedric BAIL 4c4177ac20 efl: use efl_add_ref to create objects which have no parent
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:56 -07:00
Derek Foreman cdc33f5874 gl_drm: Use gl extension string helper instead of strstr 2018-03-08 14:33:05 -06:00
Derek Foreman 05d7c1c9a2 gl_common: Make extension string checks more robust
strstr() can give false positives if the extension name is a subset of
a string in the extension list, for example EGL_EXT_image_dma_buf_import
would match EGL_EXT_image_dma_buf_import_modifiers.

I've opted for a mildly badgered copy of epoxy's test, which should be
robust in the face of subsets.
2018-03-08 14:27:07 -06:00
Derek Foreman 464d0ca9bb gl_common: Replace strstr() for extension checks with a helper function
The helper incorporates NULL checks, and we love those, so it's better.
2018-03-08 14:27:04 -06:00
Derek Foreman 3fc6eea24f gl_drm: Don't NULL init a variable we're about to set
minor clean up with no functional change.
2018-03-08 11:33:34 -06:00
Derek Foreman 37b9a246ba gl_drm: Check EGL client extensions before using platform_base
The comment here was right, we shouldn't just trust these without testing
if we should trust these.
2018-03-08 11:33:31 -06:00
Derek Foreman 3a15195088 gl_drm: Rename eng_gl_symbols to eng_egl_symbols
It now only deals with egl.  gl extensions must be queried later, so it
was previously a bit weird/confusing.
2018-03-08 11:16:01 -06:00
Derek Foreman 609c86903f gl_drm: Move some extension queries to after context creation
Anything non-EGL we might query would have to be queried here, so
I'm moving the call here to protect us in the event that we need GL
extensions in the future.

I'm still a bit confused as to what string I should be passing to
evas_gl_symbols, though.
2018-03-08 11:15:57 -06:00
Derek Foreman 329e9c0b4b gl_drm: use EGL_IMG_context_priority if available
This is a hint that we want a high priority context.  Since gl_drm is
likely a compositor or a full screen app, it makes sense that it try to
use this (but other engines probably shouldn't)

Based loosely on Chris Wilson's weston patch to do the same thing.
(weston commit b678befb6ed055e6c66466505d9195a3cebf8073)

As this extension appears to have been around for years, I haven't
added fallback defines for:
EGL_CONTEXT_PRIORITY_LEVEL_IMG  0x3100
EGL_CONTEXT_PRIORITY_HIGH_IMG   0x3101
2018-03-07 15:24:37 -06:00
Derek Foreman f8658d25fa gl_drm: Move the gl symbol check to immediately after display init
We don't actually need a context first, just an initialized display.
2018-03-07 15:24:37 -06:00
Youngbok Shin 255e9c788a evas: increase offset by 4 to do work for next map points
Summary:
Increasing offset as 2 for next map points is wrong.
If evas tries to draw for wrong combination of map points,
it can cause wrong results. Actually, every drawing code for
map points use and increase offset as 4.

@fix

Test Plan:
A test case for textpach is modified for testing this issue.
1. Run elementary_test with sync render mode.
   ex) ECORE_EVAS_FORCE_SYNC_RENDER=1 elementary_test
2. Open textpath test.
3. Set a short text by clicking newly added check box.
4. (It will show another issues... So,) change slice number to update textpath properly.
5. See some noises at top-left side of text.
   It is drawn from the two of end map points to the two of empty(not used) map points.

Reviewers: raster, cedric, jpeg, jypark

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

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2018-03-06 19:05:57 -08:00
Derek Foreman c9ac2338d4 gl_drm: NULL check img
If we set native surface on a new object we can get here with NULL
engine_info from the caller.  We should still create a native surface.
2018-02-14 14:56:48 -06:00
Chris Michael af2960df0b evas drm engines: Fix variable type for output
We already include the Ecore_Drm2 header for these engines, so there
is no need for the 'output' field to be a void pointer here.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2018-02-13 11:44:36 -05:00
subhransu mohanty 48433efc43 ector: Updated the ector_buffer_pixels_set() api with stride info
Reviewers: jypark, jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5795
2018-02-08 14:44:29 +09:00
Vincent Torri d54f0f66cf Evas: remove depth usage in GDI and DirectDraw engines
Test Plan: compilation and elementary_test

Reviewers: raster

Reviewed By: raster

Subscribers: cedric, raster

Differential Revision: https://phab.enlightenment.org/D5792
2018-02-07 22:20:20 +09:00
Derek Foreman e4122da211 ecore_wl2: Remove force from surface reconfigure
It no longer has any users or need to exist.
2018-01-26 15:53:59 -06:00
Derek Foreman 3ef4671085 wayland_shm: remove dirty bit entirely
Now that we're not using it for session recovery we can strip it out
entirely.
2018-01-26 15:53:59 -06:00
Derek Foreman 26a718b07e wayland_shm: Use surface flush instead of setting dirty
The dirty bit was a dirty hack to let session recovery force reconfigures
on startup.

Now that we have a surface flush we can achieve the same thing by just
discarding all buffers immediately.
2018-01-26 15:53:59 -06:00
Derek Foreman 79f3eaa68b wayland_shm: Clean up duplicate prototypes
These were supposed to be removed when I moved the associated functions
into ecore_wl2.
2018-01-19 12:37:10 -06:00
Vincent Torri f5b01ac5ce all: Simplify definition of EAPI
This will help in the transition from Autotools to Meson. This has been
tested on Windows for which EFL_XXX_BUILD were first introduced.
2018-01-18 18:04:03 +09:00
Jean-Philippe Andre 24447641d3 evas gl: Properly verify that Evas GL works
For SW engine we need to verify that OSMesa is present. The patch
fb048e7312 broke the logic.

Tested by temporarily removing OSMesa from my system.

Fixes T6617 (again)
2018-01-17 15:22:46 +09:00
Carsten Haitzler fb048e7312 evas sw generic - don't dlopen osmesa until first needed.
osmesa needs llvm. llvm apparently just by dlopening or linking to the
lib (libLLVM...) gets you 3.5mb of dirty pages just in this lib. that's
a whole lib entirely dirty pages. odd and horrible. in fact once i
stoppd dlopening OSMesa all the time on engine init (and only when gl
is needed)... the amount of dirty pages went from 17208 to 8860.
that's a whopping drop of 8mb! 8mb saved! in fact just dlopening
osmesa and doing the other gl init stuff led to more anonymuse
mappings with dirty pages. 2 of them (2072k and 2076k) which baffled
me as that didn't seem like heap or efl's own data. these disappeared
along with libLLVM-5.0.so (3520k + 60k dirty pages). we stopped
linking/loading libedit (12k dirty), libglapi (20k dirty),
libLLVM-5.0 (3580k dirty), libncursesw (72k dirty),
libOSMesa.so (260k dirty), libtinfo (20k dirty). ... or at least
stopped until absolutely needed. total 17208k of dirty pages went down
to 8860.

my test case was just launching terminology (and doing nothing with it).

@fix memory bloating
2018-01-12 03:02:43 +09:00
subhransu mohanty d838220d56 evas/vg: Use always blending op while drawing the vector.
Summary:
The default backend overrides this operation depending on the fill color
but the cairo backend dosen't hence cairo will always use bled mode while drwaing the vector.

Reviewers: jpeg

Subscribers: vtorri, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5724
2018-01-08 19:16:59 +09:00
Marcel Hollerbach 01df8b7f78 evas: make tbm_surface api fields static
When building statically this breaks build, since both symbols would be
defined globally.
2018-01-04 14:31:22 +01:00
Jean-Philippe Andre 88bfba1fdd evas filters: Add "alphaonly" flag for blend and blur
This is very useful to specify precisely which kind of RGBA -> Alpha
conversion you want. If all you wanted was the alpha layer to use as a
mask, set this flag to true.

@feature
2017-12-14 18:03:49 +09:00
Ross Vandegrift 71e5c74eb6 efl: drop deprecated Encoding key from desktop files
Summary:
The Encoding key is no longer required, all desktop files are assumed to
be UTF-8 encoded.  See details at:
https://standards.freedesktop.org/desktop-entry-spec/1.1/apc.html

Fix various typos and misspellings

lintian, Debian's package checker, uses strings to check for common typos
in compiled binaries.  This change fixes the ones it identified in 1.20.6.

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-12-13 10:27:48 -08:00
Chris Michael e4d5528e34 evas-gl-drm: Don't pass invalid surface or bo to gbm function
This small patch just checks that we have a valid surface and bo that
we can pass to gbm_surface_release_buffer. If they are not valid, this
causes a hard crash.

NB: This does not actually Fix the ticket issue....

ref T6483

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-12-12 11:28:36 -05:00
Pawel Aksiutowicz 5e3c641438 evas: removed "clobbered" warnings from image_savers/png/evas_image_save_png
Reviewers: stanluk, lukasz.stanislawski, cedric, jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5536
2017-12-11 17:18:55 +09:00
Derek Foreman 8a3b983c53 ecore_wl2 wayland_shm: Move surface functions into ecore_wl2
Finish pushing these all into ecore_wl2
2017-12-01 10:58:44 -06:00
Derek Foreman dd5edfae03 wayland_shm: Rename all the evas_dmabuf functions
These are going to find a home in ecore_wl2, and this is the last
step before moving them all over there.
2017-12-01 10:58:44 -06:00
Derek Foreman 4e3016070a wayland_shm: No longer include dmabuf header in engine.h
There's no longer any need for code outside of evas_dmabuf.c to
know anything about dmabuf.
2017-12-01 10:58:44 -06:00
Derek Foreman e1031f5249 wayland_shm: move surface structure to evas_dmabuf.c
This is no longer needed by the outbuf code.
2017-12-01 10:58:44 -06:00
Derek Foreman 57622713de wayland_shm: Use wrapper functions instead of function pointers
switch to the new "API"
2017-12-01 10:58:44 -06:00
Derek Foreman 594fef7dd3 wayland_shm: Wrap function pointers for surface
This is going to be an API soon.
2017-12-01 10:58:44 -06:00
Derek Foreman dd8d60ad28 wayland_shm: Move surface free into surface_destroy
The caller shouldn't have to free this.
2017-12-01 10:58:44 -06:00
Derek Foreman 5b4b18836a wayland_shm: Remove struct _Dmabuf_Surface
It's all piled into Surface now.
2017-12-01 10:58:44 -06:00
Derek Foreman 8a6c4fe5ff wayland_shm: Stop using outbuf and engine info in surface code
The surface stuff now no longer needs knowledge of those structures.
2017-12-01 10:58:44 -06:00
Derek Foreman 7eb0af45d6 wayland_shm: Pass alpha to surface_create
Stop extracting it from other structures, pass it directly.
2017-12-01 10:58:44 -06:00
Derek Foreman 2b3654c1fd wayland_shm: pass the ecore_wl2_window to surface create
No longer extract this from the engine info.
2017-12-01 10:58:44 -06:00
Derek Foreman d1a4f38a96 wayland_shm: Store width and height in surface struct
No longer query these from the outbuf.
2017-12-01 10:58:44 -06:00
Derek Foreman 15fdbca653 wayland evas: Remove Ecore_Wl2_Display from engine info
We've got the Ecore_Wl2_Window so we can always get the display from
that.
2017-12-01 10:58:44 -06:00
Derek Foreman 73d1ab0cd5 wayland_shm: Remove Shm_Surface
only Dmabuf_Surface is used, so let's remove this and lose the union.
2017-12-01 10:58:44 -06:00