From a8afe781e108773e4a575ecc3330a5aa83c1cbb9 Mon Sep 17 00:00:00 2001 From: Philip Langdale Date: Thu, 8 Feb 2007 17:08:08 -0800 Subject: [PATCH] Add a bunch of useful modes to the mode list. The X server prunes modes above the initial mode and the number of default modes varies with distro and server version. As it's easy to do, let's add a bunch of useful versions in the driver so that users don't have to mess with their config files as often. --- src/svga_modes.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/vmware.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 src/svga_modes.h diff --git a/src/svga_modes.h b/src/svga_modes.h new file mode 100644 index 0000000..fb5dbe1 --- /dev/null +++ b/src/svga_modes.h @@ -0,0 +1,48 @@ +/* ********************************************************** + * Copyright (C) 2007 VMware, Inc. All Rights Reserved + * **********************************************************/ + +#ifndef _SVGA_MODES_H_ +#define _SVGA_MODES_H_ + +#define INCLUDE_ALLOW_USERLEVEL +#include "includeCheck.h" + +#define SVGA_DEFAULT_MODES \ + /* 4:3 modes */ \ + SVGA_DEFAULT_MODE( 320, 240) \ + SVGA_DEFAULT_MODE( 400, 300) \ + SVGA_DEFAULT_MODE( 512, 384) \ + SVGA_DEFAULT_MODE( 640, 480) \ + SVGA_DEFAULT_MODE( 800, 600) \ + SVGA_DEFAULT_MODE(1024, 768) \ + SVGA_DEFAULT_MODE(1152, 864) \ + SVGA_DEFAULT_MODE(1280, 960) \ + SVGA_DEFAULT_MODE(1400, 1050) \ + SVGA_DEFAULT_MODE(1600, 1200) \ + SVGA_DEFAULT_MODE(1920, 1440) \ + SVGA_DEFAULT_MODE(2048, 1536) \ + SVGA_DEFAULT_MODE(2560, 1920) \ + /* 16:9 modes */ \ + SVGA_DEFAULT_MODE( 854, 480) \ + SVGA_DEFAULT_MODE(1280, 720) \ + SVGA_DEFAULT_MODE(1366, 768) \ + SVGA_DEFAULT_MODE(1900, 1080) \ + /* 16:10 modes */ \ + SVGA_DEFAULT_MODE(1280, 800) \ + SVGA_DEFAULT_MODE(1440, 900) \ + SVGA_DEFAULT_MODE(1680, 1050) \ + SVGA_DEFAULT_MODE(1920, 1200) \ + SVGA_DEFAULT_MODE(2560, 1600) \ + /* DVD modes */ \ + SVGA_DEFAULT_MODE( 720, 480) \ + SVGA_DEFAULT_MODE( 720, 576) \ + /* Odd modes */ \ + SVGA_DEFAULT_MODE( 320, 200) \ + SVGA_DEFAULT_MODE( 640, 400) \ + SVGA_DEFAULT_MODE( 800, 480) \ + SVGA_DEFAULT_MODE(1280, 768) \ + SVGA_DEFAULT_MODE(1280, 1024) + + +#endif /* _SVGA_MODES_H_ */ diff --git a/src/vmware.c b/src/vmware.c index 576530c..ea3f117 100644 --- a/src/vmware.c +++ b/src/vmware.c @@ -37,6 +37,7 @@ char rcsId_vmware[] = #include "vmware.h" #include "guest_os.h" #include "vm_device_version.h" +#include "svga_modes.h" #ifdef HaveDriverFuncs #define VMWARE_DRIVER_FUNC HaveDriverFuncs @@ -175,6 +176,21 @@ static const OptionInfoRec VMWAREOptions[] = { { -1, NULL, OPTV_NONE, {0}, FALSE } }; +/* Table of default modes to always add to the mode list. */ + +typedef struct { + int width; + int height; +} VMWAREDefaultMode; + +#define SVGA_DEFAULT_MODE(width, height) { width, height, }, + +static const VMWAREDefaultMode VMWAREDefaultModes[] = { + SVGA_DEFAULT_MODES +}; + +#undef SVGA_DEFAULT_MODE + static void VMWAREStopFIFO(ScrnInfoPtr pScrn); static void VMWARESave(ScrnInfoPtr pScrn); @@ -1560,6 +1576,22 @@ VMWAREScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) } /* + * We explictly add a set of default modes because the X server will + * not include modes larger than the initial one. + */ + { + unsigned int i; + unsigned int numModes = sizeof (VMWAREDefaultModes) / sizeof *(VMWAREDefaultModes); + char name[10]; + for (i = 0; i < numModes; i++) { + snprintf(name, 10, "%dx%d", + VMWAREDefaultModes[i].width, VMWAREDefaultModes[i].height); + VMWAREAddDisplayMode(pScrn, name, VMWAREDefaultModes[i].width, + VMWAREDefaultModes[i].height); + } + } + + /* * We will lazily add the dynamic modes as the are needed when new * modes are requested through the control extension. */ -- 2.7.4