[Dev] [E-devel] efl in tizen 0914.3 renders a black screen with wayland_egl

Carsten Haitzler (The Rasterman) raster at rasterman.com
Tue Oct 6 03:30:36 GMT 2015


On Mon, 5 Oct 2015 13:52:35 -0400 Christopher Michael
<cpmichael at osg.samsung.com> 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.

> 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
> enlightenment-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    raster at rasterman.com



More information about the Dev mailing list