Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Date: Mon, 01 Dec 2008 00:57:15 +0100
Browse files Browse the repository at this point in the history
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
  • Loading branch information
slouken committed Dec 1, 2008
1 parent d4524e7 commit 8883220
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 31 deletions.
61 changes: 34 additions & 27 deletions README.DirectFB
Expand Up @@ -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
Expand All @@ -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
19 changes: 15 additions & 4 deletions src/video/directfb/SDL_DirectFB_modes.c
Expand Up @@ -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->
Expand All @@ -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) {
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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));
Expand All @@ -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;
Expand Down

0 comments on commit 8883220

Please sign in to comment.