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

Commit

Permalink
Browse files Browse the repository at this point in the history
created env (fbcon-1.3) and added basic files
  • Loading branch information
martinlowinski committed Nov 7, 2009
1 parent 95635db commit 2433963
Show file tree
Hide file tree
Showing 10 changed files with 824 additions and 15 deletions.
2 changes: 1 addition & 1 deletion Makefile.in
Expand Up @@ -43,7 +43,7 @@ SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@
# SPU programs
SPU_GCC = @SPU_GCC@
EMBEDSPU = @EMBEDSPU@
include $(srcdir)/src/video/ps3/spulibs/Makefile
#include $(srcdir)/src/video/ps3/spulibs/Makefile

DIST = acinclude.m4 autogen.sh Borland.html Borland.zip BUGS build-scripts configure configure.in COPYING CREDITS docs docs.html include INSTALL Makefile.dc Makefile.minimal Makefile.in README* sdl-config.in sdl.m4 sdl.pc.in SDL.qpg.in SDL.spec SDL.spec.in src test TODO VisualC.html VisualC VisualCE Watcom-OS2.zip Watcom-Win32.zip WhatsNew Xcode

Expand Down
28 changes: 14 additions & 14 deletions configure.in
Expand Up @@ -936,18 +936,18 @@ CheckVisibilityHidden()


dnl Do the iPod thing
CheckIPod()
{
AC_ARG_ENABLE(ipod,
AC_HELP_STRING([--enable-ipod], [configure SDL to work with iPodLinux [default=yes on arm-elf]]),
, enable_ipod=yes)

if test x$enable_ipod = xyes; then
EXTRA_CFLAGS="$EXTRA_CFLAGS -DIPOD"
AC_DEFINE(SDL_VIDEO_DRIVER_IPOD)
SOURCES="$SOURCES $srcdir/src/video/ipod/*.c"
fi
}
#CheckIPod()
#{
# AC_ARG_ENABLE(ipod,
#AC_HELP_STRING([--enable-ipod], [configure SDL to work with iPodLinux [default=yes on arm-elf]]),
# , enable_ipod=yes)
#
# if test x$enable_ipod = xyes; then
# EXTRA_CFLAGS="$EXTRA_CFLAGS -DIPOD"
# AC_DEFINE(SDL_VIDEO_DRIVER_IPOD)
# SOURCES="$SOURCES $srcdir/src/video/ipod/*.c"
# fi
#}

dnl Find the nanox include and library directories
CheckNANOX()
Expand Down Expand Up @@ -1349,7 +1349,7 @@ AC_HELP_STRING([--enable-video-fbcon], [use framebuffer console video driver [[d
if test x$video_fbcon = xyes; then
AC_CHECK_FUNCS(getpagesize)
AC_DEFINE(SDL_VIDEO_DRIVER_FBCON)
SOURCES="$SOURCES $srcdir/src/video/fbcon/*.c"
SOURCES="$SOURCES $srcdir/src/video/fbcon-1.3/*.c"
have_video=yes
fi
fi
Expand Down Expand Up @@ -2372,7 +2372,7 @@ case "$host" in
arm-*-elf*) # FIXME: Can we get more specific for iPodLinux?
ARCH=linux
CheckDummyVideo
CheckIPod
#CheckIPod
# Set up files for the timer library
if test x$enable_timers = xyes; then
AC_DEFINE(SDL_TIMER_UNIX)
Expand Down
36 changes: 36 additions & 0 deletions src/video/fbcon-1.3/SDL_fbevents.c
@@ -0,0 +1,36 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2009 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
slouken@libsdl.org
*/
#include "SDL_config.h"

#include "../../events/SDL_sysevents.h"
#include "../../events/SDL_events_c.h"

#include "SDL_fbvideo.h"
#include "SDL_fbevents_c.h"

void
FB_PumpEvents(_THIS)
{
/* do nothing. */
}

/* vi: set ts=4 sw=4 expandtab: */
28 changes: 28 additions & 0 deletions src/video/fbcon-1.3/SDL_fbevents_c.h
@@ -0,0 +1,28 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2009 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
slouken@libsdl.org
*/
#include "SDL_config.h"

#include "SDL_fbvideo.h"

extern void FB_PumpEvents(_THIS);

/* vi: set ts=4 sw=4 expandtab: */
141 changes: 141 additions & 0 deletions src/video/fbcon-1.3/SDL_fbmodes.c
@@ -0,0 +1,141 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2009 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
slouken@libsdl.org
*/
#include "SDL_config.h"

#include "SDL_ps3video.h"

void
PS3_InitModes(_THIS)
{
deprintf(1, "+PS3_InitModes()\n");
SDL_VideoDisplay display;
SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
SDL_DisplayMode mode;
PS3_DisplayModeData *modedata;
unsigned long vid = 0;

modedata = (PS3_DisplayModeData *) SDL_malloc(sizeof(*modedata));
if (!modedata) {
return;
}

/* Setting up the DisplayMode based on current settings */
struct ps3fb_ioctl_res res;
if (ioctl(data->fbdev, PS3FB_IOCTL_SCREENINFO, &res)) {
SDL_SetError("Can't get PS3FB_IOCTL_SCREENINFO");
}
mode.format = SDL_PIXELFORMAT_RGB888;
mode.refresh_rate = 0;
mode.w = res.xres;
mode.h = res.yres;

/* Setting up driver specific mode data,
* Get the current ps3 specific videmode number */
if (ioctl(data->fbdev, PS3FB_IOCTL_GETMODE, (unsigned long)&vid)) {
SDL_SetError("Can't get PS3FB_IOCTL_GETMODE");
}
deprintf(2, "PS3FB_IOCTL_GETMODE = %u\n", vid);
modedata->mode = vid;
mode.driverdata = modedata;

/* Set display's videomode and add it */
SDL_zero(display);
display.desktop_mode = mode;
display.current_mode = mode;

SDL_AddVideoDisplay(&display);
deprintf(1, "-PS3_InitModes()\n");
}

/* DisplayModes available on the PS3 */
static SDL_DisplayMode ps3fb_modedb[] = {
/* VESA */
{SDL_PIXELFORMAT_RGB888, 1280, 768, 0, NULL}, // WXGA
{SDL_PIXELFORMAT_RGB888, 1280, 1024, 0, NULL}, // SXGA
{SDL_PIXELFORMAT_RGB888, 1920, 1200, 0, NULL}, // WUXGA
/* Native resolutions (progressive, "fullscreen") */
{SDL_PIXELFORMAT_RGB888, 720, 480, 0, NULL}, // 480p
{SDL_PIXELFORMAT_RGB888, 1280, 720, 0, NULL}, // 720p
{SDL_PIXELFORMAT_RGB888, 1920, 1080, 0, NULL} // 1080p
};

/* PS3 videomode number according to ps3fb_modedb */
static PS3_DisplayModeData ps3fb_data[] = {
{11}, {12}, {13}, {130}, {131}, {133},
};

void
PS3_GetDisplayModes(_THIS) {
deprintf(1, "+PS3_GetDisplayModes()\n");
SDL_DisplayMode mode;
unsigned int nummodes;

nummodes = sizeof(ps3fb_modedb) / sizeof(SDL_DisplayMode);

int n;
for (n=0; n<nummodes; ++n) {
/* Get driver specific mode data */
ps3fb_modedb[n].driverdata = &ps3fb_data[n];

/* Add DisplayMode to list */
deprintf(2, "Adding resolution %u x %u\n", ps3fb_modedb[n].w, ps3fb_modedb[n].h);
SDL_AddDisplayMode(_this->current_display, &ps3fb_modedb[n]);
}
deprintf(1, "-PS3_GetDisplayModes()\n");
}

int
PS3_SetDisplayMode(_THIS, SDL_DisplayMode * mode)
{
deprintf(1, "+PS3_SetDisplayMode()\n");
SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
PS3_DisplayModeData *dispdata = (PS3_DisplayModeData *) mode->driverdata;

/* Set the new DisplayMode */
deprintf(2, "Setting PS3FB_MODE to %u\n", dispdata->mode);
if (ioctl(data->fbdev, PS3FB_IOCTL_SETMODE, (unsigned long)&dispdata->mode)) {
deprintf(2, "Could not set PS3FB_MODE\n");
SDL_SetError("Could not set PS3FB_MODE\n");
return -1;
}

deprintf(1, "-PS3_SetDisplayMode()\n");
return 0;
}

void
PS3_QuitModes(_THIS) {
deprintf(1, "+PS3_QuitModes()\n");

/* There was no mem allocated for driverdata */
int i, j;
for (i = _this->num_displays; i--;) {
SDL_VideoDisplay *display = &_this->displays[i];
for (j = display->num_display_modes; j--;) {
display->display_modes[j].driverdata = NULL;
}
}

deprintf(1, "-PS3_QuitModes()\n");
}

/* vi: set ts=4 sw=4 expandtab: */
34 changes: 34 additions & 0 deletions src/video/fbcon-1.3/SDL_fbmodes_c.h
@@ -0,0 +1,34 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2009 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
slouken@libsdl.org
*/
#include "SDL_config.h"

#ifndef _SDL_ps3modes_h
#define _SDL_ps3modes_h

extern void PS3_InitModes(_THIS);
extern void PS3_GetDisplayModes(_THIS);
extern int PS3_SetDisplayMode(_THIS, SDL_DisplayMode * mode);
extern void PS3_QuitModes(_THIS);

#endif /* SDL_ps3modes_h */

/* vi: set ts=4 sw=4 expandtab: */

0 comments on commit 2433963

Please sign in to comment.