I found there have some display problem when enable fade in or out. (if i disable fade animation, problem occurs when surface destroyed only)
The display error area is on the right-up corner.
I already know that Mali 4xx series have the h/w limitation. The limitation is, the floating point is implemented in 16-bit in fragment shader of Mali 4xx. So there could be issues when precision requirement is high.
But I think it is strange that the triangle pattern appears just like the above because of the high precision.
1) To reproduce this error more easier, I modify some part of weston code. you can check below patch.
diff --git a/clients/image.c b/clients/image.c index 4126305..7955d24 100644 --- a/clients/image.c +++ b/clients/image.c @@ -380,6 +380,7 @@ image_create(struct display *display, const char *filename, } image->window = window_create(display); + //window_set_fullscreen(image->window, 1); image->widget = window_frame_create(image->window, image); window_set_title(image->window, title); image->display = display; @@ -400,7 +401,7 @@ image_create(struct display *display, const char *filename, widget_set_button_handler(image->widget, button_handler); widget_set_axis_handler(image->widget, axis_handler); window_set_key_handler(image->window, key_handler); - widget_schedule_resize(image->widget, 500, 400); + widget_schedule_resize(image->widget, 1024, 600); return image; } diff --git a/clients/window.c b/clients/window.c index 0e73f5b..2f0e36f 100644 --- a/clients/window.c +++ b/clients/window.c @@ -2155,7 +2155,7 @@ frame_resize_handler(struct widget *widget, struct rectangle input; struct rectangle opaque; - if (widget->window->fullscreen) { + if (1){//widget->window->fullscreen) { interior.x = 0; interior.y = 0; interior.width = width;
2) You have to enable fade animation in your weston.ini file.
weston.ini
panel-location=nonelocking=trueanimation=fade
panel-location=none
locking=true
animation=fade
...
If i disable the weston_matrix_init() function in weston_view_animation_create() function, error seems like disappeared.
So I suspected that there would be a problem with weston's animation algorithm. But as a result of searching at wayland bugreport, no user has ever reported an error related this issue.
I think i can avoid precision error if i know the exact root cause. It's a difficult process, but somebody help me?
YoungJun said:try using normalized GL_SHORT texture coordinates instead
Shouldn't make any difference - as long as your texture coordinates into the shader are fp32 (highp) and there is no maths in the fragment shader on the coordinate you should have enough precision.