VESA and SDL in tty terminal
David Demelier
demelier.david at gmail.com
Sat Feb 12 00:14:25 UTC 2011
On 10/02/2011 15:37, Anonymous wrote:
> David Demelier<demelier.david at gmail.com> writes:
>
>> Hello,
>>
>> The SDL's pkg-message says we can use video driver in tty terminal.
>>
>> To do this you have to load the vesa kernel module or enable it in your
>> kernel, and set environment variable "SDL_VIDEODRIVER=vgl".
>>
>> I tried it with mplayer :
>>
>> $ SDL_VIDEODRIVER=vgl; export SDL_VIDEODRIVER
>> $ mplayer -vo sdl<the file here>
> [...]
>> [VO_SDL] Set_fullmode: SDL_SetVideoMode failed: Unable to switch to
>> requested mode.
>
> IIRC, vgl(3) mode setting unlike vidcontrol(8) doesn't work as regular user.
> Try running mplayer under root, e.g.
>
> $ sudo mplayer -msgmodule -msglevel vo=9 -vo sdl<the file here>
> [...]
> DEMUX: VIDEO: [avc1] 1280x720 24bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s)
> VIDEOOUT: SDL: Opening Plugin
> VIDEOOUT: [VO_SDL] Using driver: vgl.
> VIDEOOUT: X11 opening display:
> VIDEOOUT: vo: couldn't open the X11 display ()!
> [...]
> CPLAYER: Starting playback...
> CPLAYER: Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
> CPLAYER: VO: [sdl] 1280x720 => 1280x720 Planar YV12
> VIDEOOUT: SDL: Using 0x32315659 (Planar YV12) image format
> VIDEOOUT: SDL: using hardware-surface
> VIDEOOUT: SDL: setting zoomed fullscreen with modeswitching
> VIDEOOUT: SDL Mode: 0: 1600 x 1200
> VIDEOOUT: SDL Mode: 1: 1280 x 1024
> VIDEOOUT: SDL Mode: 2: 1024 x 768
> VIDEOOUT: SDL Mode: 3: 800 x 600
> VIDEOOUT: SDL Mode: 4: 640 x 400
> VIDEOOUT: SDL Mode: 5: 640 x 480
> VIDEOOUT: SDL Mode: 6: 320 x 240
> VIDEOOUT: SDL Mode: 7: 320 x 400
> VIDEOOUT: SDL Mode: 8: 320 x 200
> VIDEOOUT: SET SDL Mode: 1: 1280 x 1024
>
> In case your keymap doesn't work under vo_sdl(vgl) try below workaround
>
> %%
> Index: multimedia/mplayer/files/patch-vgl-xlate_keys
> ===================================================================
> RCS file: multimedia/mplayer/files/patch-vgl-xlate_keys
> diff -N multimedia/mplayer/files/patch-vgl-xlate_keys
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ multimedia/mplayer/files/patch-vgl-xlate_keys 10 Feb 2011 14:34:43 -0000
> @@ -0,0 +1,62 @@
> + use character codes for vgl driver
> +
> +--- configure~
> ++++ configure
> +@@ -4579,6 +4579,19 @@ EOF
> + fi
> + fi
> + if test "$_sdl" = yes ; then
> ++ cat> $TMPC<< EOF
> ++#ifdef CONFIG_SDL_SDL_H
> ++#include<SDL/SDL.h>
> ++#else
> ++#include<SDL.h>
> ++#endif
> ++int main(void) { SDL_VIDEO_DRIVER_VGL; return 0; }
> ++EOF
> ++ if cc_check -DCONFIG_SDL_SDL_H $_inc_tmp -lvgl || cc_check $_inc_tmp -lvgl ; then
> ++ _ld_tmp="$_ld_tmp -lvgl"
> ++ fi
> ++fi
> ++if test "$_sdl" = yes ; then
> + def_sdl='#define CONFIG_SDL 1'
> + extra_cflags="$extra_cflags $_inc_tmp"
> + libs_mplayer="$libs_mplayer $_ld_tmp"
> +--- libvo/sdl_common.c~
> ++++ libvo/sdl_common.c
> +@@ -27,6 +27,11 @@
> + #include "input/mouse.h"
> + #include "video_out.h"
> +
> ++#ifdef SDL_VIDEO_DRIVER_VGL
> ++#include<sys/fbio.h>
> ++#include<vgl.h>
> ++#endif
> ++
> + static int old_w;
> + static int old_h;
> + static int mode_flags;
> +@@ -44,6 +49,9 @@ int vo_sdl_init(void)
> + SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/);
> +
> + // Easiest way to get uppercase characters
> ++#ifdef SDL_VIDEO_DRIVER_VGL
> ++ VGLKeyboardInit(VGL_XLATEKEYS);
> ++#endif
> + SDL_EnableUNICODE(1);
> +
> + // We don't want those in our event queue.
> +@@ -56,8 +64,12 @@ int vo_sdl_init(void)
> +
> + void vo_sdl_uninit(void)
> + {
> +- if (SDL_WasInit(SDL_INIT_VIDEO))
> ++ if (SDL_WasInit(SDL_INIT_VIDEO)) {
> ++#ifdef SDL_VIDEO_DRIVER_VGL
> ++ VGLKeyboardInit(VGL_CODEKEYS);
> ++#endif
> + SDL_QuitSubSystem(SDL_INIT_VIDEO);
> ++ }
> + }
> +
> + void vo_sdl_fullscreen(void)
> %%
Hi it works fine except after leaving mplayer or any SDL application my
tty seems broken. I can't switch to a tty anymore my screen stays black
and I must reboot/shutdown (no panic)
Are you encountering the same issue? There is no way to use vgl as
regular user or we could open a PR for it?
Cheers,
--
David Demelier
More information about the freebsd-questions
mailing list