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

Christopher Michael cpmichael at osg.samsung.com
Tue Oct 6 13:02:22 GMT 2015


On 10/05/2015 11:30 PM, Carsten Haitzler wrote:
> 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.
>

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



More information about the Dev mailing list