[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Xorg cannot use non-native resolutions

I think that, depending on your desktop environment and video driver, you might be able to get the results you desire. I can't say for sure, since I didn't setup what you are using.

It sounds like you aren't actually changing resolutions when you start the game up. Your window manager of choice (Metacity/Gnome, kwin/KDE - whatever simply locates the window center screen at the specified resolution. As far as I have ever seen or heard, automatic mode switching for full screen applications is usually left to the application or windowing environment to decide. I've never seen X automatically switch modes, unless it is told to do so, or the mode you ask for fails. I think the reasoning behind this is to protect your hardware. Granted, this doesn't help much.

What desktop environment are you using?


David Banks wrote:
Hi debian users.

I use Debian Etch and the i810 driver for my Intel 945GM integrated graphics
card. My laptop is a Fujitsu-Siemens Amilo Li 1818. When I first started using
Debian I had the problem that X would not start, because there weren't any
usable modes. I installed 915resolution, which fixed this problem and let me
start X in the 1440x900 widescreen mode which is pretty optimal for most uses.

However, sometimes I might want to play a game at a lower fullscreen
resolution. Let's say I want to play Pingus at 800x600 fullscreen. I run

amoe@vlinder $ pingus -g 800x600 -f

The game starts up as a borderless window in the middle of the screen. That is,
fullscreen doesn't work. The same thing happens with any other programs that try
to use any fullscreen mode other than 1440x900.  This is pretty deadly to most
fullscreen games that set lower resolutions for speed.

The first place I looked was in xorg.conf. Sure enough, I have the right modes

Section "Screen"
  Identifier   "Default Screen"
  Device      "Intel Corporation Mobile 945GM/GMS/940GML Express
Integrated Graphics Controller"
  Monitor      "Generic Monitor"
  DefaultDepth   16
  SubSection "Display"
     Depth      8
     Modes      "640x480" "800x600" "1024x768" "1280x1024"
"1600x1200" "1440x900"
  SubSection "Display"
     Depth      16
     Modes      "640x480" "800x600" "1024x768" "1280x1024"
"1600x1200" "1440x900"
  SubSection "Display"
     Depth      32
     Modes      "640x480" "800x600" "1024x768" "1280x1024"
"1600x1200" "1440x900"

I use 16bpp since 32-bit modes are not properly supported by i810.  There is a
reference for this, but you'll have to take my word for the moment.

These modes were obtained by querying my card with 915resolution:

root@vlinder # 915resolution -l
Intel 800/900 Series VBIOS Hack : version 0.5.2

Chipset: 945GM
Mode Table Offset: $C0000 + $269
Mode Table Entries: 36

Mode 30 : 640x480, 8 bits/pixel
Mode 32 : 800x600, 8 bits/pixel
Mode 34 : 1024x768, 8 bits/pixel
Mode 38 : 1280x1024, 8 bits/pixel
Mode 3a : 1600x1200, 8 bits/pixel
Mode 3c : 1440x900, 8 bits/pixel
Mode 41 : 640x480, 16 bits/pixel
Mode 43 : 800x600, 16 bits/pixel
Mode 45 : 1024x768, 16 bits/pixel
Mode 49 : 1280x1024, 16 bits/pixel
Mode 4b : 1600x1200, 16 bits/pixel
Mode 4d : 1440x900, 16 bits/pixel
Mode 50 : 640x480, 32 bits/pixel
Mode 52 : 800x600, 32 bits/pixel
Mode 54 : 1024x768, 32 bits/pixel
Mode 58 : 1280x1024, 32 bits/pixel
Mode 5a : 1600x1200, 32 bits/pixel
Mode 5c : 1440x900, 32 bits/pixel

Why isn't X taking the extra modes?  I consulted /var/log/Xorg.0.log.  It's
difficult to see which parts are relevant, so the full log is available on
request (unfortunately, I do not have webspace available at present, and
attaching it to the message seems to cause it to be blocked).  Anyway, I excerpt
a bit below:

[massive list of mode details, some with sensible attributes, some all
zeroes: see below for example]
(WW) I810(0): config file hsync range 51.4286-56.8421kHz not within
DDC hsync ranges.
(II) I810(0): Generic Monitor: Using hsync range of 51.43-56.84 kHz
(II) I810(0): Generic Monitor: Using vrefresh value of 60.00 Hz
(II) I810(0): Not using mode "640x480" (no mode of this name)
(II) I810(0): Not using mode "800x600" (no mode of this name)
(II) I810(0): Not using mode "1024x768" (no mode of this name)
(II) I810(0): Not using mode "1280x1024" (no mode of this name)
(II) I810(0): Not using mode "1600x1200" (no mode of this name)
(II) I810(0): Increasing the scanline pitch to allow tiling mode (1440 -> 2048).
(--) I810(0): Virtual size is 1440x900 (pitch 2048)
(**) I810(0): *Built-in mode "1440x900"
(++) I810(0): DPI set to (96, 96)

Please note the "Not using mode" message.  Yet the 1440x900 mode is being found
fine, I guess because it's a 'build-in mode'.

Here's an example of what looks like a valid mode in the mode details list:

*Mode: 41 (640x480)
        ModeAttributes: 0x9b
        WinAAttributes: 0x7
        WinBAttributes: 0x0
        WinGranularity: 64
        WinSize: 64
        WinASegment: 0xa000
        WinBSegment: 0x0
        WinFuncPtr: 0xc00077f3
        BytesPerScanline: 1280
        XResolution: 640
        YResolution: 480
        XCharSize: 8
        YCharSize: 16
        NumberOfPlanes: 1
        BitsPerPixel: 16
        NumberOfBanks: 1
        MemoryModel: 6
        BankSize: 0
        NumberOfImages: 18
        RedMaskSize: 5
        RedFieldPosition: 11
        GreenMaskSize: 6
        GreenFieldPosition: 5
        BlueMaskSize: 5
        BlueFieldPosition: 0
        RsvdMaskSize: 0
        RsvdFieldPosition: 0
        DirectColorModeInfo: 0
        PhysBasePtr: 0xc0000000
        LinBytesPerScanLine: 1280
        BnkNumberOfImagePages: 18
        LinNumberOfImagePages: 18
        LinRedMaskSize: 5
        LinRedFieldPosition: 11
        LinGreenMaskSize: 6
        LinGreenFieldPosition: 5
        LinBlueMaskSize: 5
        LinBlueFieldPosition: 0
        LinRsvdMaskSize: 0
        LinRsvdFieldPosition: 0
        MaxPixelClock: 230000000

And here's one that looks invalid:

Mode: 38 (0x0)
        ModeAttributes: 0x0
        WinAAttributes: 0x0
        WinBAttributes: 0x0
        WinGranularity: 0
        WinSize: 0
        WinASegment: 0x0
        WinBSegment: 0x0
        WinFuncPtr: 0x0
        BytesPerScanline: 0
        XResolution: 0
        YResolution: 0
        XCharSize: 0
        YCharSize: 0
        NumberOfPlanes: 0
        BitsPerPixel: 0
        NumberOfBanks: 0
        MemoryModel: 0
        BankSize: 0
        NumberOfImages: 0
        RedMaskSize: 0
        RedFieldPosition: 0
        GreenMaskSize: 0
        GreenFieldPosition: 0
        BlueMaskSize: 0
        BlueFieldPosition: 0
        RsvdMaskSize: 0
        RsvdFieldPosition: 0
        DirectColorModeInfo: 0
        PhysBasePtr: 0x0
        LinBytesPerScanLine: 0
        BnkNumberOfImagePages: 0
        LinNumberOfImagePages: 0
        LinRedMaskSize: 0
        LinRedFieldPosition: 0
        LinGreenMaskSize: 0
        LinGreenFieldPosition: 0
        LinBlueMaskSize: 0
        LinBlueFieldPosition: 0
        LinRsvdMaskSize: 0
        LinRsvdFieldPosition: 0
        MaxPixelClock: 0

Any ideas?  Google has left me cold, as has the debian forum.  It may seem a
minor issue but it stops me doing a lot of things.

Thanks in advance.

David Banks <amoebae@gmail.com>

This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

Reply to: