evas filter: work for native surface

Summary:
Filter does not know how to draw native surface image using engine_data.
It means that only image knows how to draw it. In case of GL engine, image
is using a shader program for IMAGENATIVE in the common_context_image_push.

This patch makes filter work for native surface image by drawing the native
surface first using the common_context_image_push as below.

   Before: image -> common_filter_*_push -> filter_output
   After: image -> common_context_image_push -> filter_input ->
          common_filter_*_push -> filter_output

Test Plan: {F3856981}

Reviewers: Hermet, jsuya, herb

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11546
This commit is contained in:
Shinwoo Kim 2020-03-20 15:37:31 +09:00 committed by Hermet Park
parent b631aae420
commit c58fef1f6e
1 changed files with 2 additions and 1 deletions

View File

@ -2044,7 +2044,8 @@ _efl_canvas_image_internal_efl_canvas_filter_internal_filter_input_render(
H = obj->cur->geometry.h;
// FIXME: In GL we could use the image even if scaled
if (!_image_has_border(obj, o) && _image_is_filled(obj, o) && !_image_is_scaled(obj, o))
if (!(ENFN->image_native_get && ENFN->image_native_get(engine, o->engine_data)) &&
!_image_has_border(obj, o) && _image_is_filled(obj, o) && !_image_is_scaled(obj, o))
{
int imagew, imageh, uvw, uvh;