Date: Mon, 01 Dec 2008 00:57:15 +0100
From: Couriersud Subject: SDL : Diff for directfb driver please find attached a diff against SVN containing the following: - Updated README.DirectFB a bit - Fix compile issue with debug output - Fix display mode setting/switching for directfb >= 1.2.2 --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403276
This commit is contained in:
parent
7356f7336e
commit
1709286e00
2 changed files with 49 additions and 31 deletions
|
@ -5,45 +5,27 @@ Supports:
|
|||
- Hardware YUV overlays
|
||||
- OpenGL - software only
|
||||
- 2D/3D accelerations (depends on directfb driver)
|
||||
- multiple displays
|
||||
- windows
|
||||
|
||||
What you need:
|
||||
|
||||
DirectFB 1.0.0 - required
|
||||
DirectFB 1.0.1, 1.2.x, 1.3.0
|
||||
Kernel-Framebuffer support: required: vesafb, radeonfb ....
|
||||
Mesa 7.0.x - optional for OpenGL
|
||||
|
||||
As of this writing 20070810 you need to pull Mesa from git and do the following:
|
||||
|
||||
------------------------
|
||||
cd mesa
|
||||
make linux-directfb
|
||||
make
|
||||
|
||||
echo Installing - pleaser enter sudo pw.
|
||||
|
||||
sudo make install INSTALL_DIR=/usr/local/dfb_GL
|
||||
cd src/mesa/drivers/directfb
|
||||
make
|
||||
sudo make install INSTALL_DIR=/usr/local/dfb_GL
|
||||
------------------------
|
||||
|
||||
/etc/directfbrc
|
||||
|
||||
This file should contain the following two lines to make
|
||||
your joystick work:
|
||||
This file should contain the following lines to make
|
||||
your joystick work and avoid crashes:
|
||||
------------------------
|
||||
disable-module=joystick
|
||||
disable-module=linux_input
|
||||
disable-module=cle266
|
||||
disable-module=cyber5k
|
||||
disable-module=x11input
|
||||
------------------------
|
||||
|
||||
To run the SDL - testprograms:
|
||||
|
||||
export SDL_VIDEODRIVER=directfb
|
||||
export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
|
||||
export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
|
||||
|
||||
./testgl
|
||||
|
||||
To use hardware accelerated YUV-overlays for YUV-textures, use:
|
||||
|
||||
export SDL_DIRECTFB_YUV_DIRECT=1
|
||||
|
@ -52,10 +34,35 @@ This is disabled by default. It will only support one
|
|||
YUV texture, namely the first. Every other YUV texture will be
|
||||
rendered in software.
|
||||
|
||||
In addition, you may use
|
||||
In addition, you may use (directfb-1.2.x)
|
||||
|
||||
export SDL_DIRECTFB_YUV_UNDERLAY=1
|
||||
|
||||
to make the YUV texture an underlay. This will make the cursor to
|
||||
be shown.
|
||||
|
||||
OPENGL Support
|
||||
==============
|
||||
|
||||
As of this writing 20070810 you need to pull Mesa from git and do the following:
|
||||
|
||||
------------------------
|
||||
cd mesa
|
||||
make linux-directfb
|
||||
make
|
||||
|
||||
echo Installing - please enter sudo pw.
|
||||
|
||||
sudo make install INSTALL_DIR=/usr/local/dfb_GL
|
||||
cd src/mesa/drivers/directfb
|
||||
make
|
||||
sudo make install INSTALL_DIR=/usr/local/dfb_GL
|
||||
------------------------
|
||||
|
||||
To run the SDL - testprograms:
|
||||
|
||||
export SDL_VIDEODRIVER=directfb
|
||||
export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
|
||||
export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
|
||||
|
||||
./testgl
|
||||
|
|
|
@ -290,7 +290,7 @@ DirectFB_InitModes(_THIS)
|
|||
|
||||
SDL_DFB_DEBUG("SDL directfb video driver - %s %s\n", __DATE__, __TIME__);
|
||||
SDL_DFB_DEBUG("Using %s (%s) driver.\n", caps.name, caps.vendor);
|
||||
SDL_DFB_DEBUG("Found %d screens\n", devdata->numscreens);
|
||||
SDL_DFB_DEBUG("Found %d screens\n", screencbdata->numscreens);
|
||||
|
||||
for (i = 0; i < screencbdata->numscreens; i++) {
|
||||
SDL_DFB_CHECKERR(devdata->dfb->
|
||||
|
@ -315,9 +315,8 @@ DirectFB_InitModes(_THIS)
|
|||
}
|
||||
}
|
||||
|
||||
SDL_DFB_CHECKERR(layer->SetCooperativeLevel(layer, DLSCL_SHARED));
|
||||
|
||||
/* Query layer configuration to determine the current mode and pixelformat */
|
||||
dlc.flags = DLCONF_ALL;
|
||||
layer->GetConfiguration(layer, &dlc);
|
||||
|
||||
if (DFBToSDLPixelFormat(dlc.pixelformat, &mode.format) != 0) {
|
||||
|
@ -348,6 +347,13 @@ DirectFB_InitModes(_THIS)
|
|||
display.current_mode = mode;
|
||||
display.driverdata = dispdata;
|
||||
|
||||
#if (DIRECTFB_MAJOR_VERSION == 1) && (DIRECTFB_MINOR_VERSION >= 2)
|
||||
dlc.flags = DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT | DLCONF_OPTIONS;
|
||||
ret = layer->SetConfiguration(layer, &dlc);
|
||||
#endif
|
||||
|
||||
SDL_DFB_CHECKERR(layer->SetCooperativeLevel(layer, DLSCL_SHARED));
|
||||
|
||||
SDL_AddVideoDisplay(&display);
|
||||
}
|
||||
SDL_DFB_FREE(screencbdata);
|
||||
|
@ -442,6 +448,11 @@ DirectFB_SetDisplayMode(_THIS, SDL_DisplayMode * mode)
|
|||
SDL_DFB_DEBUG("Trace\n");
|
||||
config.flags &= ~fail;
|
||||
SDL_DFB_CHECKERR(data->layer->SetConfiguration(data->layer, &config));
|
||||
#if (DIRECTFB_MAJOR_VERSION == 1) && (DIRECTFB_MINOR_VERSION >= 2)
|
||||
/* Need to call this twice ! */
|
||||
SDL_DFB_CHECKERR(data->layer->SetConfiguration(data->layer, &config));
|
||||
//SDL_DFB_CHECKERR(data->layer->SetSourceRectangle(data->layer, 0, 0, config.width, config.height));
|
||||
#endif
|
||||
|
||||
/* Double check */
|
||||
SDL_DFB_CHECKERR(data->layer->GetConfiguration(data->layer, &rconfig));
|
||||
|
@ -456,7 +467,7 @@ DirectFB_SetDisplayMode(_THIS, SDL_DisplayMode * mode)
|
|||
mode->format);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
data->pixelformat = rconfig.pixelformat;
|
||||
data->cw = config.width;
|
||||
data->ch = config.height;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue