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

Reply via email to