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 >> > > ------------------------------------------------------------------------------ _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
