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.

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.

Thanks folks -- Mark Hood
_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to