|
How to setup the Linux framebuffer with DiskoPrefaceDisko was intended to work mainly with DirectFB. In the course of the development we dicided to add more backends to disko. One of them is the FBDEV backend. This consist of a generic linux fbdev implementation as well as specific implementations for OMAP, DaVinci and Matrox. This howto should cover the compilation and configuration issues for that purpose. PreparationIn order to function properly, Disko has to be compiled with FBDEV support. To achieve this add the parameter graphics=fbdev to the scons commandline. This parameter also could contain a list of comma separated backend like graphics=x11,dfb,fbdev. Currently this work with the git version and will be included into Disko ex version 1.6.0. ConfigurationAfter Disko is compiled sucessfully graphics section of the diskorc.xml file has to be edited to match the system's framebuffer setup. Generic FramebufferTo support a generic framebuffer device, the parameter backend has to be set to "fbdev". The parameter outputtype has to be set to "stdfb". The parameters xres and yres need to be set appropriately. If the framebuffer does not support mode switching these values have to reflect the current resolution. <graphics> <parameter name="xres" value="640" /> <parameter name="yres" value="480" /> <parameter name="backend" value="fbdev" /> <parameter name="outputtype" value="stdfb" /> <parameter name="videolayerid" value="0" /> <parameter name="videolayerpixelformat" value="RGB32" /> <parameter name="videolayeroptions" value="" /> <parameter name="videolayerbuffermode" value="BACKSYSTEM" /> <parameter name="graphicslayerid" value="0" /> <parameter name="graphicslayerpixelformat" value="RGB32" /> <parameter name="graphicslayeroptions" value="" /> <parameter name="graphicslayerbuffermode" value="BACKSYSTEM" /> <parameter name="pointer" value="internal" /> <parameter name="graphicswindowpixelformat" value="ARGB" /> <parameter name="graphicssurfacepixelformat" value="ARGB" /> <parameter name="extendedaccel" value="true" /> <parameter name="allocmethod" value="malloc" /> </graphics> This setup will set up a single hardware layer with RGB32 using Disko software routines to do the blending between the graphics and the video layer utilizing the internal graphics format ARGB. The generic Framebuffer currently does only support layer id 0. This will change in the near future hopefully. Generic Framebuffer with OpenGL ES 2.0 supportTo support a generic framebuffer device, the parameter backend has to be set to "fbdev". The parameter outputtype has to be set to "ogl". The parameters xres and yres need to be set appropriately. If the framebuffer does not support mode switching these values have to reflect the current resolution. <graphics> <parameter name="xres" value="640" /> <parameter name="yres" value="480" /> <parameter name="backend" value="fbdev" /> <parameter name="outputtype" value="ogl" /> <parameter name="videolayerid" value="0" /> <parameter name="videolayerpixelformat" value="ARGB" /> <parameter name="videolayeroptions" value="" /> <parameter name="videolayerbuffermode" value="BACKSYSTEM" /> <parameter name="graphicslayerid" value="0" /> <parameter name="graphicslayerpixelformat" value="ARGB" /> <parameter name="graphicslayeroptions" value="" /> <parameter name="graphicslayerbuffermode" value="BACKSYSTEM" /> <parameter name="pointer" value="internal" /> <parameter name="graphicswindowpixelformat" value="ARGB" /> <parameter name="graphicssurfacepixelformat" value="ARGB" /> <parameter name="extendedaccel" value="true" /> <parameter name="allocmethod" value="malloc" /> </graphics> OMAP35X0 FramebufferThe framebuffer driver for OMAP exists in 2 main implemations. As of 2.6.29 the driver has been rewritten to add some advanced features like alpha-channel blending between layers. This example covers this driver. The colorkeying method will be covered in the OMAP part of the disko documentation. This setup assumes that the omapfb was initialized with 3 framebuffer devices. Layer id 0 corresponds to /dev/fb0, layer id 1 to /dev/fb1, etc. The diskorc.xml should look as follows: <graphics> <parameter name="xres" value="640" /> <parameter name="yres" value="480" /> <parameter name="backend" value="fbdev" /> <parameter name="outputtype" value="omapfb" /> <parameter name="videolayerid" value="1" /> <parameter name="videolayerpixelformat" value="I420" /> <parameter name="videolayeroptions" value="" /> <parameter name="videolayerbuffermode" value="BACKSYSTEM" /> <parameter name="graphicslayerid" value="2" /> <parameter name="graphicslayerpixelformat" value="ARGB" /> <parameter name="graphicslayeroptions" value="" /> <parameter name="graphicslayerbuffermode" value="BACKSYSTEM" /> <parameter name="pointer" value="internal" /> <parameter name="graphicswindowpixelformat" value="ARGB" /> <parameter name="graphicssurfacepixelformat" value="ARGB" /> <parameter name="extendedaccel" value="true" /> <parameter name="allocmethod" value="malloc" /> </graphics> This setup will use a seperate video and graphics layer as well as the alpha channel capabilities of the omapfb driver. Currently only I420 is supported for the video layer. If media playback via dmai is used, this doesn't matter at all. In this case the video layer will be dynamically released by Disko. DaVinci FramebufferThe framebuffer driver for DaVinci works with 2 video layers (one of them for V4L2) an rgb16 graphics overlay an attribute layer that can be used to store an alpha channel. The attribute Layer and the RGB16 graphics overlay are combined to one by the DaVinciFB backend of Disko using ARGB3565 as pixelformat. The diskorc.xml should look as follows: <graphics> <parameter name="xres" value="640" /> <parameter name="yres" value="480" /> <parameter name="backend" value="fbdev" /> <parameter name="outputtype" value="davincifb" /> <parameter name="videolayerid" value="1" /> <parameter name="videolayerpixelformat" value="YUY2" /> <parameter name="videolayeroptions" value="" /> <parameter name="videolayerbuffermode" value="BACKSYSTEM" /> <parameter name="graphicslayerid" value="0" /> <parameter name="graphicslayerpixelformat" value="ARGB3565" /> <parameter name="graphicslayeroptions" value="" /> <parameter name="graphicslayerbuffermode" value="BACKSYSTEM" /> <parameter name="pointer" value="internal" /> <parameter name="graphicswindowpixelformat" value="ARGB" /> <parameter name="graphicssurfacepixelformat" value="ARGB" /> <parameter name="extendedaccel" value="true" /> <parameter name="allocmethod" value="malloc" /> </graphics> This setup will use a seperate video and graphics layer combined by an 3bit alpha channel. Currently only YUY2 is supported for the video layer. If media playback via dmai is used, this doesn't matter at all. In this case the video layer will be dynamically released by Disko. |