Commit 1709286e authored by Sam Lantinga's avatar Sam Lantinga

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
parent 7356f733
...@@ -5,45 +5,27 @@ Supports: ...@@ -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 ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment