From 5d957fa546b1d2df1ccebc98c1a45cae38092f5e Mon Sep 17 00:00:00 2001 From: notaz Date: Wed, 17 Nov 2010 22:20:05 +0200 Subject: [PATCH] allow variable resolutions --- README.OMAP | 8 +++++++- src/video/omapdss/sdlif.c | 32 ++++++-------------------------- 2 files changed, 13 insertions(+), 27 deletions(-) diff --git a/README.OMAP b/README.OMAP index 4c6be5d..0b5bb4c 100644 --- a/README.OMAP +++ b/README.OMAP @@ -34,15 +34,21 @@ export SDL_VIDEODRIVER=omapdss --- Other environment variables: + SDL_OMAP_LAYER_SIZE: Output layer size. Regardless what you set with SDL_SetVideoMode(), output will be scaled to this size using hardware. Valid values: "WxH", for example "640x480" "fullscreen" for to cover whole screen. + SDL_OMAP_VSYNC: - Enables waiting for vertical sync on SDL_Flit() calls. + Enables waiting for vertical sync on SDL_Flip() calls. Set to "1" to enable, "0" to disable. +SDL_OMAP_DEFAULT_MODE: + If the app doesn't specify resolution in SDL_SetVideoMode(), then use this. + Should be specified in "WxH" format, for example "640x480". + Config file ----------- diff --git a/src/video/omapdss/sdlif.c b/src/video/omapdss/sdlif.c index 585f69d..4628735 100644 --- a/src/video/omapdss/sdlif.c +++ b/src/video/omapdss/sdlif.c @@ -49,6 +49,7 @@ static int omap_VideoInit(SDL_VideoDevice *this, SDL_PixelFormat *vformat) this->info.current_h = this->hidden->screen_h; } + this->handles_any_size = 1; this->info.hw_available = 1; return 0; @@ -65,35 +66,14 @@ static void omap_VideoQuit(SDL_VideoDevice *this) static SDL_Rect **omap_ListModes(SDL_VideoDevice *this, SDL_PixelFormat *format, Uint32 flags) { - static SDL_Rect omap_mode_list[] = { - /* XXX: we are not really restricted to fixed modes */ - { 0, 0, 1600, 1200 }, - { 0, 0, 1408, 1056 }, - { 0, 0, 1280, 1024 }, - { 0, 0, 1152, 864 }, - { 0, 0, 1024, 768 }, - { 0, 0, 960, 720 }, - { 0, 0, 800, 600 }, - { 0, 0, 768, 576 }, - { 0, 0, 720, 576 }, - { 0, 0, 800, 480 }, - { 0, 0, 720, 480 }, - { 0, 0, 640, 480 }, - { 0, 0, 640, 400 }, - { 0, 0, 512, 384 }, - { 0, 0, 320, 240 }, - { 0, 0, 320, 200 }, + static SDL_Rect omap_mode_max = { + /* with handles_any_size, should accept anything up to this + * XXX: possibly set this dynamically based on free vram? */ + 0, 0, 1600, 1200 }; /* broken API needs this stupidity */ static SDL_Rect *omap_modes[] = { - &omap_mode_list[ 0], &omap_mode_list[ 1], - &omap_mode_list[ 2], &omap_mode_list[ 3], - &omap_mode_list[ 4], &omap_mode_list[ 5], - &omap_mode_list[ 6], &omap_mode_list[ 7], - &omap_mode_list[ 8], &omap_mode_list[ 9], - &omap_mode_list[10], &omap_mode_list[11], - &omap_mode_list[12], &omap_mode_list[13], - &omap_mode_list[14], &omap_mode_list[15], + &omap_mode_max, NULL }; -- 2.39.2