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. > 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 > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) [email protected] ------------------------------------------------------------------------------ _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
