On 10/05/2015 11:30 PM, Carsten Haitzler wrote:
On Mon, 5 Oct 2015 13:52:35 -0400 Christopher Michael
<[email protected]> said:
What version of Mesa is being used for this ?? I ask because there is a
an issue where Mesa could be rendering just black squares
dh
he's right. this would just happily fail to swap buffers every time you get to
the end of the rect list as cur_rect WILL be null then. of course this path
doesn't get tested as it requires driver extensions to work and to date i have
yet to find a driver on any single dev machine i have to that supports this. :)
dh - explain the failure case please. is swap_mode something OTHER than the
above modes? did it switch to full or auto? the issue is more in the
swapbuffers itself. if there is a swapbufferswithdamage is ASSUME it MUST have
a rect damage list and the above cases nuke that list thus causing no swap if
swap mode is not set to full. it'll always lose the rect list before the swap
also thus negating any swap with damages support.
so this is a combination of several little issues that come together.
I've not bisected it yet, however with Mesa >= 11.0 it seems that
everything is drawing as a black rectangle. This even affects Weston
itself. Cursors are just black squares, terminal windows are black
squares, etc, etc. I just wanted to confirm his Mesa version to make
sure this was not related.
dh
On 10/05/2015 10:25 AM, cee1 wrote:
Hi all,
When enable wayland_egl backend, I got a black screen with tizen
0914.3(aka milestone), while the 0630.1 works fine.
After some debugging, I located a commit
"https://git.enlightenment.org/core/efl.git/commit/?id=2725a248c993856d70323c3a0bb0d859d7501789"
causing the regression.
"""
https://git.enlightenment.org/core/efl.git/tree/src/modules/evas/engines/software_generic/evas_engine.c?id=2725a248c993856d70323c3a0bb0d859d7501789#n3344
switch (re->swap_mode)
{
case MODE_COPY:
case MODE_DOUBLE:
case MODE_TRIPLE:
case MODE_QUADRUPLE:
rect = (Tilebuf_Rect *)re->cur_rect;
*x = rect->x;
*y = rect->y;
*w = rect->w;
*h = rect->h;
*cx = rect->x;
*cy = rect->y;
*cw = rect->w;
*ch = rect->h;
re->cur_rect = re->cur_rect->next;
break;
...
}
surface = re->outbuf_new_region_for_update(re->ob,
*x, *y, *w, *h,
cx, cy, cw, ch);
if ((!re->cur_rect) || (!surface))
{
evas_common_tilebuf_free_render_rects(re->rects);
re->rects = NULL;
re->end = 1;
"""
Where:
1) re->cur_rect is NULL, which presumably is set by """re->cur_rect =
re->cur_rect->next;"""
2) surface is **NOT** NULL
3) re->rects is then set to NULL(because re->curl_rect == NULL), which
causes eng_outbuf_flush to skip the invocation of
glsym_eglSwapBuffersWithDamage
(https://git.enlightenment.org/core/efl.git/tree/src/modules/evas/engines/wayland_egl/evas_wl_main.c?id=2725a248c993856d70323c3a0bb0d859d7501789#n463)
------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
_______________________________________________
Dev mailing list
[email protected]
https://lists.tizen.org/listinfo/dev