Bug 178451 - i810 driver does not correctly display 1920x1200 mode on DVI
Summary: i810 driver does not correctly display 1920x1200 mode on DVI
Keywords:
Status: CLOSED CANTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: xorg-x11-drv-i810
Version: 5
Hardware: All
OS: Linux
medium
high
Target Milestone: ---
Assignee: X/OpenGL Maintenance List
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: FC5Target
TreeView+ depends on / blocked
 
Reported: 2006-01-20 18:14 UTC by Benjamin LaHaise
Modified: 2007-11-30 22:11 UTC (History)
1 user (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2006-02-03 12:56:14 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
X server startup log (56.11 KB, text/plain)
2006-01-20 18:14 UTC, Benjamin LaHaise
no flags Details
setup log (1.24 KB, text/plain)
2006-01-20 18:15 UTC, Benjamin LaHaise
no flags Details
current x config file (2.91 KB, text/plain)
2006-01-20 19:29 UTC, Benjamin LaHaise
no flags Details

Description Benjamin LaHaise 2006-01-20 18:14:26 UTC
Description of problem:

Using X on the Intel 945G integrated chipset seems to fall back on the vesa
driver, which does not correctly handle the DVI output.  Manually setting the
driver to i810 results in X incorrectly displaying 1920x1200 mode on the DVI --
the display is cut off at 1600x1200.

Version-Release number of selected component (if applicable):
xorg-x11-drv-i810-1.4.1.2-1

How reproducible:
Always.

Steps to Reproduce:
1. Use X on 945G system with 1920x1200 DVI display
2.
3.
  
Actual results:
1600x1200 pixels of cut off sadness.

Expected results:
1920x1200 pixels of desktop goodness.

Additional info:
I like monkeys.

Comment 1 Benjamin LaHaise 2006-01-20 18:14:26 UTC
Created attachment 123498 [details]
X server startup log

Comment 2 Benjamin LaHaise 2006-01-20 18:15:24 UTC
Created attachment 123499 [details]
setup log

Comment 3 Mike A. Harris 2006-01-20 19:13:03 UTC
Hey Ben!

I believe you just need to add a 1920x1200 modeline to the config file manually
and configure the screen section to use the new mode.  The X server currently
does not contain very many built in widescreen modes it seems.  Longterm it
seems the general concensus is to scrap the statically coded lists that are
manually updated and built into the server, and replace them with dynamically
generated modeline lists using GTF/CVT at runtime, accentuated with a handful
of additional hard coded modes.  I'm not sure when that is planned though,
but it'll be a godsend when it eventually happens. ;o)

I think I saw another bug in either our bugzilla or Xorg bugzilla for this
or a similar issue, as ISTR seeing someone post a modeline that worked for
this hardware.  The details are a bit sketchy now tho.  You can also try
the 'gtf' utility that comes with X to whipup a workaround for now that
should probably work.  Let me know how you make out either way, and
we'll see what we can do to get it fixed for FC5.

Take care,
TTYL

Comment 4 Benjamin LaHaise 2006-01-20 19:29:38 UTC
Created attachment 123501 [details]
current x config file

Hey Mike!  Well, the mode line does include 1920x1200...  There was some
speculation by Jesse that the i810 driver is using the VBE modes which might be
missing a 1920x1200 entry, as they're usually provided by the BIOS.  Cheers!

Comment 5 Benjamin LaHaise 2006-01-21 03:37:50 UTC
Poking around in the source, I found the following likely candidate for the
clipping.  I have no idea how to get an X build environment properly setup,
though.  1920 is probably on the low side for the size, as Dell is shipping a
2560x1600 these days....

diff -ur xf86-video-i810-1.4.1.2/src/i810_driver.c
xf86-video-i810-1.4.1.2.new/src/i810_driver.c
--- xf86-video-i810-1.4.1.2/src/i810_driver.c   2005-08-05 19:04:33.000000000 -0400
+++ xf86-video-i810-1.4.1.2.new/src/i810_driver.c       2006-01-20
22:32:40.000000000 -0500
@@ -1024,7 +1024,7 @@
    i = xf86ValidateModes(pScrn, pScrn->monitor->Modes,
                         pScrn->display->modes, clockRanges,
 #ifndef XF86DRI
-                        0, 320, 1600, 64 * pScrn->bitsPerPixel,
+                        0, 320, 1920, 64 * pScrn->bitsPerPixel,
 #else
                         i810_pitches, 0, 0, 64 * pScrn->bitsPerPixel,
 #endif


Comment 6 Mike A. Harris 2006-01-24 21:05:15 UTC
I'd assume that 1920 is ok there, but I wouldn't assume that Intel hardware
can output 2560x1600 per se.  ;o)

I'll confer with Alan Hourihane, and report back to see if there are other
potential issues that need to be resolved also.


Comment 7 Alan Hourihane 2006-01-24 21:28:30 UTC
The file you've modified is only for the very old i810 chip.

As for the actual problem - it's as Jesse says - your video bios doesn't support
1920x1200 so it's limiting you to 1920x1200.

Comment 8 Alan Hourihane 2006-01-24 21:29:18 UTC
whoops, that should say "limiting you to 1600x1200"

Comment 9 Benjamin LaHaise 2006-01-24 22:19:25 UTC
Poking around internally, it seems that there is a tool to help with this
problem: see http://www.geocities.com/stomljen/ for 915resolution which enabled
modifying the BIOS mode table.  Hopefully the i810 code gets reworked at some
point so this kind of hack becomes unnecessary. =-)

Comment 10 Mike A. Harris 2006-01-24 22:32:54 UTC
I've chatted a bit more with Alan in IRC, and he also suggested the
i810/i915resolution utilities as interim workarounds for this problem.

Keep in mind though, that the real problem is that all modesetting is
done via the BIOS, as the hardware is not documented to permit direct
programming of the hardware as is done in most other drivers.  So long
as the hardware remains undocumented, the Intel drivers will be forced
to use VBE for modesetting, and unfortunately end up held hostage to
the video modes built into the BIOS.  What makes this even worse, is that
many BIOSes do not have proper mode tables, in particular on various
laptops where the native mode of the built in LCD panel is not present in
the BIOS.

This is a serious problem for useability, however it seems all we can really
do, is hope that Intel (or whoever) releases the necessary specifications to
do direct mode programming at some point in the future, and that it gets
implemented.

Let me know if the i915 utility works for you.

Comment 11 Mike A. Harris 2006-01-24 22:53:14 UTC
One more thing I forgot to mention, is that even using the external utilities
to enable modes, the result is unpredictable, and may or may not work.  That
was another thing Alan mentioned.  HTH

Comment 12 Mike A. Harris 2006-02-03 12:56:14 UTC
Since this issue is really a BIOS bug/limitation, and the only real solutions
to the problem are:

1) Using the 3rd party utility to sledgehammer the BIOS mode tables (unsupported)
2) Using a driver patched to do the same (unsupported and not avail)
3) Getting Intel to release the specs needed to alanh or others to implement
   direct mode programming.

We're kindof in a bind I'm afraid.  I'm going to close this CANTFIX for now,
until #2 or 3 above avails.  Sorry...  ;o/

Comment 13 Benjamin LaHaise 2006-02-03 16:16:10 UTC
That's okay, I suspect by the next major release something will happen as the
developers here at Intel have it as a high priority item.  The only thing that
I'd like to see in FC5 is that the installer needs to know about the PCI ids so
that the i810 driver gets loaded instead of the framebuffer (which doesn't
output anything on the DVI output).

Comment 14 Mike A. Harris 2006-02-04 12:27:49 UTC
> That's okay, I suspect by the next major release something will happen as the
> developers here at Intel have it as a high priority item.

That would be totally awesome.  It's the single biggest nasty annoyance on
the Intel video side of things.  It totally upsets huge numbers of users
in a big bad way.  Personally I'd be furious to buy hardware and have that
problem, so I totally feel for everyone who has gotten bitten.  ;/

If Intel plans on resolving it, even if just for new hardware coming out,
that would really be a wonderful thing.

> The only thing that I'd like to see in FC5 is that the installer needs to
> know about the PCI ids so that the i810 driver gets loaded instead of the
> framebuffer (which doesn't output anything on the DVI output).

Yeah, there was a bit of miscommunication in December that led to FC5 test1
and test2 not having proper video detection, however it /should/ be resolved
in rawhide now.  I updated the Intel metadata last night with a new PCI ID,
and just checked to see if yours was present:

(II) PCI: 00:02:0: chip 8086,2772 card 1043,817a rev 02 class 03,00,00 hdr 80(In
reply to comment #13)

... and it wasn't.  ;o)   I'm updating the i810 package again right now to
add your PCI ID to it.  If you have a list of all Intel video PCI IDs that
should be present though, I can add more.  Unfortunately the source code
doesn't list them all in one place.  They're scattered over various places
in a way that requires spending lots of time to update all of our metadata
files.  Very sad state of things in the Xorg code.  However, it's an upstream
goal to clean that up and get it in consistent sane shape for 7.1 or 7.2,
so by that time, we should be able to automate everything and have it
kept updated during build time instead of a tedious human process.  ;o)

I just added:

alias pcivideo:v00008086d00002772sv*sd*bc*sc*i* i810

to the i810.xinf videoaliases file, so your card should be detected with
the xorg-x11-drv-i810-1.4.1.3-3 package now.

Thanks for bringing that to my attention.  Lemme know if it works.

Comment 15 Jeremy Sanders 2006-03-13 21:24:28 UTC
There is a good workaround for forcing missing modes from the BIOS using the
i810 driver available to download from FreeDesktop bug 643.

It would be nice if RedHat could patch their i810 driver for FC5 to allow users
to do this.


Note You need to log in before you can comment on or make changes to this bug.