On Wed, Dec 10, 2008 at 03:30:48PM -0800, Mark Hood wrote: > Hi all, > > I've implemented a primary DFB layer as a full-screen EGL > double-buffered window surface (like the X11 window used for GL/GLX 2D > acceleration). EGL_SINGLE_BUFFER doesn't appear to be supported by the > EGL I'm using, so I don't really have a choice. > > My understanding of the CSALF_ONEFORALL allocation flag is that an > allocation so flagged will be used for all the CoreSurfaceBuffer > allocations in a CoreSurface, and this seems to be the case. > > However, when I run my tests with debug enabled, I always get: > > *** Assumption [serial->value == source->value] failed *** > [../../lib/direct/serial.h:123 in direct_serial_check() > > after most, but not all, calls to find_allocation(). This means that > the candidate allocation being tested for up-to-dateness with respect to > the source buffer actually has a serial value that is greater than the > source buffer, which should never happen.
I saw the same issue when I was attempting to make the fbdev pool use CSALF_ONEFORALL for the primary layer's surface. I didn't have time to look into it in more detail and went back to the the current scheme where fbdev has multiple CoreSurfaceAllocatuons even though the actual allocation is done only once. I then forgot the issue completely. You could duplicate the fbdev behaviour but I suppose it might be better to spend some time checking the code for any issues with CSALF_ONEFORALL. > In this case the offending allocation is one of the > CoreSurfaceAllocations associated with the double-buffered window > surface. Only one of the CoreSurfaceBuffers in the CoreSurface ever > actually gets its serial value increased by DFB but the allocation gets > its serial value increased with every update. > > Is this a bug in DFB with respect to the assumptions made by > CSALF_ONEFORALL allocation? Or do I need to do something inside the EGL > system module to manage the serial value update? > > For now I have the D_ASSUME( serial->value == source->value ) in > direct_serial_check() and direct_serial_update() commented out with no > apparent ill effect. IIRC there was also another assumption failing wrt. the lock offset vs. allocation offset, but that should be fixable by simply checking that the lock offset falls within the allocation's bounds. -- Ville Syrjälä [EMAIL PROTECTED] http://www.sci.fi/~syrjala/ _______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev