DFB 1.6.1 My graphics driver is having a problem with the directfbrc option "layers-clear".
This is what happens when I call the following functions: 1. IDirectFB_GetDisplayLayer - When the layer gets created, if "layers-clear" is set (which it is by default), it calls IDirectFBSurface_Clear on the buffer, say BufferA. This is an accelerated function call for me and leaves the operation in the queue for BufferA. 2. IDirectFBDisplayLayer_SetCooperative - Sets the cooperative level to DLSCL_EXCLUSIVE. 3. IDirectFBDisplayLayer_SetConfiguration. - Calling this function results in dfb_layer_context_reallocate_surface getting called. BufferB is created and instead of calling flip, it increments the flip count for the surface. Later, it internally calls GraphicsEmitCommands for BufferB. The CardState of the graphics driver indicates that the active buffer is BufferA. The two pointers don't match and it asserts. For this driver it is important that the correct buffer be passed in because we store the operations on a per buffer basis and flush them on a per buffer basis. This is the code in question: File: src/core/layer_context.c Function: dfb_layer_context_reallocate_surface() .... if (config->buffermode != DLBM_BACKSYSTEM && !(surface->config.caps & DSCAPS_FLIPPING)) surface->flips++; ... Calling an internal flip instead of incrementing the flip count, I would assume, would maintain the coherency of the graphics driver by naturally calling GraphicsEmitCommands for BufferA instead of passing BufferB. Is it necessary to increment the flip count directly or is it possible to call flip? Thanks, Bryce
_______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev