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
|
- Hardware YUV overlays
|
||||||
- OpenGL - software only
|
- OpenGL - software only
|
||||||
- 2D/3D accelerations (depends on directfb driver)
|
- 2D/3D accelerations (depends on directfb driver)
|
||||||
|
- multiple displays
|
||||||
|
- windows
|
||||||
|
|
||||||
What you need:
|
What you need:
|
||||||
|
|
||||||
DirectFB 1.0.0 - required
|
DirectFB 1.0.1, 1.2.x, 1.3.0
|
||||||
Kernel-Framebuffer support: required: vesafb, radeonfb ....
|
Kernel-Framebuffer support: required: vesafb, radeonfb ....
|
||||||
Mesa 7.0.x - optional for OpenGL
|
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
|
/etc/directfbrc
|
||||||
|
|
||||||
This file should contain the following two lines to make
|
This file should contain the following lines to make
|
||||||
your joystick work:
|
your joystick work and avoid crashes:
|
||||||
------------------------
|
------------------------
|
||||||
disable-module=joystick
|
disable-module=joystick
|
||||||
disable-module=linux_input
|
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:
|
To use hardware accelerated YUV-overlays for YUV-textures, use:
|
||||||
|
|
||||||
export SDL_DIRECTFB_YUV_DIRECT=1
|
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
|
YUV texture, namely the first. Every other YUV texture will be
|
||||||
rendered in software.
|
rendered in software.
|
||||||
|
|
||||||
In addition, you may use
|
In addition, you may use (directfb-1.2.x)
|
||||||
|
|
||||||
export SDL_DIRECTFB_YUV_UNDERLAY=1
|
export SDL_DIRECTFB_YUV_UNDERLAY=1
|
||||||
|
|
||||||
to make the YUV texture an underlay. This will make the cursor to
|
to make the YUV texture an underlay. This will make the cursor to
|
||||||
be shown.
|
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("SDL directfb video driver - %s %s\n", __DATE__, __TIME__);
|
||||||
SDL_DFB_DEBUG("Using %s (%s) driver.\n", caps.name, caps.vendor);
|
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++) {
|
for (i = 0; i < screencbdata->numscreens; i++) {
|
||||||
SDL_DFB_CHECKERR(devdata->dfb->
|
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 */
|
/* Query layer configuration to determine the current mode and pixelformat */
|
||||||
|
dlc.flags = DLCONF_ALL;
|
||||||
layer->GetConfiguration(layer, &dlc);
|
layer->GetConfiguration(layer, &dlc);
|
||||||
|
|
||||||
if (DFBToSDLPixelFormat(dlc.pixelformat, &mode.format) != 0) {
|
if (DFBToSDLPixelFormat(dlc.pixelformat, &mode.format) != 0) {
|
||||||
|
@ -348,6 +347,13 @@ DirectFB_InitModes(_THIS)
|
||||||
display.current_mode = mode;
|
display.current_mode = mode;
|
||||||
display.driverdata = dispdata;
|
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_AddVideoDisplay(&display);
|
||||||
}
|
}
|
||||||
SDL_DFB_FREE(screencbdata);
|
SDL_DFB_FREE(screencbdata);
|
||||||
|
@ -442,6 +448,11 @@ DirectFB_SetDisplayMode(_THIS, SDL_DisplayMode * mode)
|
||||||
SDL_DFB_DEBUG("Trace\n");
|
SDL_DFB_DEBUG("Trace\n");
|
||||||
config.flags &= ~fail;
|
config.flags &= ~fail;
|
||||||
SDL_DFB_CHECKERR(data->layer->SetConfiguration(data->layer, &config));
|
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 */
|
/* Double check */
|
||||||
SDL_DFB_CHECKERR(data->layer->GetConfiguration(data->layer, &rconfig));
|
SDL_DFB_CHECKERR(data->layer->GetConfiguration(data->layer, &rconfig));
|
||||||
|
@ -456,7 +467,7 @@ DirectFB_SetDisplayMode(_THIS, SDL_DisplayMode * mode)
|
||||||
mode->format);
|
mode->format);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
data->pixelformat = rconfig.pixelformat;
|
data->pixelformat = rconfig.pixelformat;
|
||||||
data->cw = config.width;
|
data->cw = config.width;
|
||||||
data->ch = config.height;
|
data->ch = config.height;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue