Page MenuHomePhabricator

evas engine: pixel is dislocated on software engine
Open, NormalPublic

Description

Sample code :

Sample capture:

Sample capture (crop issue area):

I tested about image border size like below.

Evas_Object *img = evas_object_image_filled_add(evas_object_evas_get(win));
evas_object_image_file_set(img, "rect_100_100.png", NULL);
evas_object_image_border_set(img, 49, 50, 49, 50);
evas_object_image_border_scale_set(img, 1.5);

evas_object_move(img, 100, 100);
evas_object_resize(img, 500, 500);
evas_object_show(img);

As we know, the code is illegal.
Because, image size is 100*100,
but border * scale is greater than image width / height.

Although, _evas_image_render() has adjustment code,
and values are fixed then requested to engine.

But, on the software backend engine, some pixel is dislocated.
When I debugged coordinates from _evas_image_render() to _draw_image().
They are currect.

Logically it requested order by image region,
1 2 3
4 5 6
7 8 9

And it's 1,4,7's "src_x=, src_w, dst_x, dst_w" are same.
Therfore I think it's engine issue.

This is _draw_image()'s parameters from 1~9.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=0, src_y=0, src_w=49, src_h=49, dst_x=100, dst_y=100, dst_w=73, dst_h=73, smooth=1, do_async=1 '\001',

obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,
(gdb) c
Continuing.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=49, src_y=0, src_w=1, src_h=49, dst_x=173, dst_y=100, dst_w=352, dst_h=73, smooth=1, do_async=1 '\001',

obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,
(gdb) c
Continuing.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=50, src_y=0, src_w=50, src_h=49, dst_x=525, dst_y=100, dst_w=75, dst_h=73, smooth=1, do_async=1 '\001',

obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,
(gdb) c
Continuing.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=0, src_y=49, src_w=49, src_h=1, dst_x=100, dst_y=173, dst_w=73, dst_h=352, smooth=1, do_async=1 '\001',

obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,
(gdb) c
Continuing.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=49, src_y=49, src_w=1, src_h=1, dst_x=173, dst_y=173, dst_w=352, dst_h=352, smooth=1,

do_async=1 '\001', obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,
(gdb) c
Continuing.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=50, src_y=49, src_w=50, src_h=1, dst_x=525, dst_y=173, dst_w=75, dst_h=352, smooth=1,

do_async=1 '\001', obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,
(gdb) c
Continuing.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=0, src_y=50, src_w=49, src_h=50, dst_x=100, dst_y=525, dst_w=73, dst_h=75, smooth=1, do_async=1 '\001',

obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,
(gdb) c
Continuing.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=49, src_y=50, src_w=1, src_h=50, dst_x=173, dst_y=525, dst_w=352, dst_h=75, smooth=1,

do_async=1 '\001', obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,
(gdb) c
Continuing.

Breakpoint 4, _draw_image (data=0x71e5b0, context=0x94f960, surface=0x9564c0, image=0x952290, src_x=50, src_y=50, src_w=50, src_h=50, dst_x=525, dst_y=525, dst_w=75, dst_h=75, smooth=1,

do_async=1 '\001', obj=<optimized out>) at lib/evas/canvas/evas_object_image.c:1492

1492 _draw_image(Evas_Object_Protected_Data *obj,

z-wony created this task.Dec 29 2016, 5:05 AM
z-wony renamed this task from evas engin to evas engine: pixel is dislocated on software engine.Dec 29 2016, 5:30 AM
z-wony updated the task description. (Show Details)
z-wony added a project: efl.
z-wony updated the task description. (Show Details)Dec 29 2016, 5:33 AM
stefan_schmidt triaged this task as Normal priority.Feb 10 2017, 7:03 AM
zmike edited projects, added Restricted Project; removed efl.Jun 11 2018, 6:58 AM
q66 edited projects, added efl: rendering; removed Restricted Project.Jun 11 2018, 7:40 AM