Hello, I have been studying the DFB API and examining the source code to try and determine what layer functionality to implement in a driver that we are going to develop for some CE hardware. I am uncertain about the intent of the ability for layers to support regions and have some questions about them and related topics.
What does it mean for a layer if it supports one region vs. multiple regions? How are regions (not clip regions) intended to be used and hardware accelerated? Both by the DFB API user and in the driver. What impact does the driver having layer support for regions have on the DFB API user? Must the area covered by all of a layer's regions be non-overlapping? Regarding support for windows, is their usage related to the region support provided by a layer? What does it mean for the usage of a layer if a driver has a layer that supports windows (cap bit DLCAPS_WINDOWS is set)? That buffer mode DLBM_WINDOWS can be used? Anything else? Likewise if the layer does not support windows (the cap bit DLCAPS_WINDOWS is not set)? That buffer mode DLBM_WINDOWS cannot be used? Can the IDirectFBDisplayLayer::CreateWindow function still be used (the windows are then just not-accelerated)? Anything else? In response to what DFB API usage are individual layers intended to be enabled and their surfaces made visible by the driver? I expect not until after an associated surface has been flipped or a video provider playback has been initiated on the associated surface. Correct? What is the intended DFB API usage to disable and hide a layer that was previously visible (besides changing the opacity to zero if it is supported)? There doesn't appear to by any layer functionality to do this (aside from changing the opacity to zero if it is supported), so the only way that I am aware of doing this is to release the all outstanding references to the layer that were obtained. Regarding layer IDs, it appears the DFB API user receives sequential layer IDs (literally 0 - 31) in the DFBDisplayLayerCallback function and uses those in IDirectFB::GetDisplayLayer. And then when dealing with mixers structure, the user convert to/from them using the DFB_DISPLAYLAYER_IDS_* macros. Is this correct? I am also curious about screen mixers and what functionality they are intended to allow the DFB API user (when supported) to perform/configure on a screen. It seems like they might allow the ability to define/override what layers are exposed by the screen when layers are enumerated (maybe thus controlling what ones will potentially be blended/composited if they're eventually enabled or made visible), but I am not sure and need more info about them. What's the intent of this functionality? Full-mode layers vs. sub-mode layers? What does it mean for the driver that supports them? Maybe this topic should be another thread. :) Any information or advice regarding such topics is much appreciated! Thanks, Timothy -- Timothy Strelchun CE Software Engineering Digital Home Group Intel Corporation The views expressed above are my own and not those of Intel
_______________________________________________ directfb-dev mailing list [email protected] http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
