Intel GMA X4500HD

From ThinkWiki

Jump to: navigation, search

Contents

Overview

The GM45 Express chipset includes a GMA X4500HD (or the mobile equivalent, the GMA X4500MHD) integrated graphics card. It was designed to support DirectX 10 and shader model 4.0 (neither DirectX nor the shader model is interesting to GNU/Linux users but does indicate the relative 'modernity' of the card).

This chipset is included in almost all Thinkpads introduced since mid 2008 (including X, T and R series).

Driver status

The problem with this chip is that the chip design has changed massiv since the X1300 and X1400. So if you google for the intel driver you find a lot of stuff which isn't valid for the X4500 anymore. However the good news first: The X4500HD is supported by the xf86-video-intel driver (The xorg driver developed by Intel) Version 2.5.1-r1 is more or less stable. I couldn't test earlier version but i think since 2.5.0 it's more or less stable. Avoid using <2.5.0 since I found a lot of bug reports for earlier versions. On January 15th '09 the 2.6.0 driver was released but it crashes the xserver from time to time. So what does work: Every usual 2D applikation. KDE and stuff. everything works fine. With xrandr you can enable HDMI-1 and VGA Output. HDMI-1 works with 1920x1080. Suspend to RAM works as well. But and here is where the problems start: The way the actual hardware chip handel 3D has changed. Earlier versions of the chip had a 3D part and a 2D part. Now the chip only has 3D, which means a lot of stuff must be rewritten. The 2D Video Overlay Adaptor for Xvideo isn't available anymore. (Xvideo or xv is the xorg way of displaying vidoes and do fast scaling (to fullscreen output and stuff)) However the textured video adaptor for Xv is still available BUT it's broken. Since nobody cared about this before (because there was the better Video Overlay available) the textured video causes a effect called Tearing (or horizontal flicker) Basicly there are two frames visible at the same time. You can see this effect in every video with fast movement. No matter what resulotion. Google for Tearing if you want to learn more about this. The way to fix this is first to enable DRI2 and then patch the XV Textured Video Adapter to make use of the new vsync handeling. Some basic support for DRI2 was enabled in 2.6.0 however the patch for textured video is still missing. So: You can't watch movies with the X4500HD right now. And since the code to fix this is not yet written there is nothing you can do about it. OpenGL is awefull slow as well (Supertux has 14FPS with OpenGL and 70FPS with software rendering) AIGLX doesnt work as well. It is all somehow connected to the DRI2 stuff.

The following reports arent wrong they just dont tell you the whole story. I bought a Intel card because I thought the intel drivers are the best. Right now this isnt true. I spend like 48 hours in a row to google all that stuff and i now wanted to share this with you.

Driver update

I decided to leave the above text untouched because a lot of distributions still have old driver version where all the above problems are still valid. All right what changed? In the meantime from January when I wrote the text above till now (May - more or less four month) we had a couple of driver updates. We had a 2.6.x series where a lot of new features and new technologies where implemented. DRI2, UXA, GEM - But only the last release (2.6.3) was stable enough to use. At this point the Textuered Video Adapter was still broken. And then the 2.7.x series came out. It finaly brought us a fixed Textured Video but 2.7.0 was pretty unstable and it didnt worked well with older kernels (below 2.6.29) - some users reported display errors and others random X-Server crashes.

The current release is 2.7.1: I for myself (with a GMA X4500HD card), a 1.5.3 X-Server and a 2.6.29.3 Kernel am satisfied. 2D Redendering is fast, XV works, 3D Rendering is not as fast as it could be but faster then ever before. Now I finaly can play some Neverball and some Nexiuz on a low resolution and with Low Textures.

Summary

What you should do is:

  • Get yourself a new X-Server - 1.5.something at least
  • Get yourself the newest Kernel. For the 2.7.x release of the driver you need at least 2.6.29.3 (the .3 is important) - but the newer the better. The i915 driver in the kernel has a strong influenc on the performance. When the 2.6.30 kernel is released you should switch
  • Get yourself intel driver 2.7.1

Driver Future

In the next couple of month (maybe weeks) 2.8.0 will be released. This release will basicly drop support for all the "old" technologies i.e DRI1, EXA - that means to run 2.8.0 you will need dri2, and 1.6 xserver and a new Kernel. But since this is recomended (by me :-) anyway this won't be too much of a problem. The benefit of dropping all the old technologies is that the intel developer only have to take care of like half the code and we can expected a faster development.

Special features

Double screen configuraiton

The driver just crashed when activating Xinerama, which is normal. Xinerama is deprecated, and not supported anymore. DO NOT try to use it at all.

If you want to use a double screen configuration, you can use this guide:

http://intellinuxgraphics.org/dualhead.html

However, here is my xorg.conf, just in case...

  Section "InputDevice"
       Identifier      "Generic Keyboard"
       Driver          "kbd"
       Option          "XkbRules"      "xorg"
       Option          "XkbModel"      "pc104"
       Option          "XkbLayout"     "fr"
  EndSection
  
  Section "InputDevice"
       Identifier      "Configured Mouse"
       Driver          "mouse"
  EndSection
  
  Section "Device"
       Identifier      "Configured Video Device"
       Driver          "intel"
       Option          "UseEDIDDpi"    "FALSE"
       Option          "monitor-LVDS" "foo"
       Option          "monitor-VGA" "bar"
  EndSection
  
  Section "Monitor"
       Identifier      "bar"
  EndSection
  
  Section "Monitor"
       Identifier      "foo"
       Option "RightOf"  "bar"
  EndSection
  
  Section "Screen"
       Identifier      "Default Screen"
       DefaultDepth    24
       Monitor         "Configured Monitor"
       SubSection      "Display"
               Depth   24
               Virtual         2960 1050
       EndSubSection
  EndSection

You need the Virtual parameter to extend the size of your display. I guess X needs this parameter to set buffer size... In my case, I have a 1680x1050 internal LCD screen, and a 1280x1024 external monitor. So the max width is 1680 + 1280 = 2960, and max height 1050.

Then you can play with xrandr to set parameters dynamically. Here's an example:

xrandr --output LVDS --mode 1680x1050 --output VGA --mode 1280x1024 --left-of LVDS

Distribution support

Debian (T500)

My configuration

I'm running a thinkpad T500. As it's a fairly recent model, it was quite impossible to find some documentation on how to run it in Linux. I am attempting to close the gap here.

Compatibility with driver i810 and vesa

The vesa and i810 drivers are both working with this chipset, but it's quite slow, so it's best to try to upgrade to the real latest driver for xorg called simply intel.


Availability of the driver

My laptop is running Debian Lenny that was frozen last summer, which is also the release date for the x4500hd chipset. So this chipset will NOT be directly supported by the distribution, you have to upgrade to something higher.

Backporting from Debian Experimental

What I did was taking the latest source package from Debian experimental. This was not easy, as there are a lot of packages, but double. Here is the list of source packages that I had to recompile:

drm-snapshot xorg xorg-server mesa xserver-xorg-input-evdev wacom-tools xserver-xorg-input-keyboard x11proto-input xserver-xorg-input-mouse xfree86-driver-synaptics xserver-xorg-video-intel

The way to backport is very easy. Here is how. First, find the package using the debian website. For example, do:

http://packages.debian.org/search?keywords=libdrm&searchon=names&suite=all&section=all

then click on the latest version (often experimental), then on the right side of the page, find the .dsc link. With the help of dget (available on the 'devscripts' package) the the 3 files of each package. If you have the 'build-essential' package installed then this will also extract the package and patch it with the Debian diff file. Move in that new folder, type dpkg-buildpackage, apt-get the needed dependency if it yells about it, and there you go, it will create the necessary .deb files for you.

Results

It's a lot faster now with the up-to-date driver.

Fedora

Fedora 10

Fedora 10 correctly defaults to the intel driver (2.5.0) and 2D functions are working reliably (testing on R400). Sadly 3D functions are unreliable and the whole display system (including the virtual console switching) live locks leaving network access, such as ssh, the only option to take control of the system.

See bug 465884 for current status.

Fedora 11

Everything looks fixed. Above mentioned bug seems to be fixed, too. There is framebuffer resizing enabled, so I had no problem with adding monitors while X server run and increasing resolution over initial 1440x900. Resizing works with Compiz enabled and over 2048 limit. Q3A at High setting was playable (30-40 fps). Tested on my T400.

Sidux (2008-11-21)

I am running this card on sidux 2008-03 installed on 2008-11-21 without any problems. The Live CD gets the display properly as well as an updated sidux kernel 2.6.27-7.

Ubuntu

Ubuntu 8.04

After installation and full update of current 8.04 (which is 8.04.3 as of today, 2009-07-17), it runs well, except when trying to play video, any format (OGG/AVI/etc) in any player (Totem/VLC/etc), it completely freezes entire system. Only a reboot helps (can be done via ALT+SysRq+B, even it takes about 10s until computer reacts).

After two days, I found two solutions, use one of them:

  • Disable XVideo extension by editing xorg.conf
 Section "Device"
   Identifier      "Configured Video Device"
   Option          "XVideo"                "false"
 EndSection
  • Install VLC, Settings / Preferences / Video / Output Modules, click Advanced Options in bottom right corner, select "OpenGL video output"

Note I tried latest 9.04 as well, it works out of the box, but X takes much more CPU than in 8.04 and system is significantly slower.

Ubuntu 9.04

After Todays (2009-04-09) update everything looks good. It now works to enable Compiz on Desktops with res above 2048. If Virtual Desktop size is set there are no problems with Resizing. Now after the Update the driver "feels" better and more stable (but time will show). With glxgears I now get 150-200fps (750-800fps with enabled compiz) more then before.

Models featuring this Technology

whereisaaron (2009-04-05)

I use this chip in an X301. I understand the maximum res that supported by the 3D support in this is 2048x2048? If so doesn't your X config above of 2960x1050 prevent you using an compositing (compiz etc.)? Anyone know the bottom line on this?

You mean that OpenGL is slow, so if you have an app that come with and without OpenGL support, should I pick the non-OpenGL version?

I have found the Intel X server does not react well to live resolution changes. Using Ubuntu 8.10 on Lenovo X301, increasing the resolution results in garbage areas, and decreasing the resolution crashes the X server (have to log in again). Anyone else see this?


_________________________________________________


see Ubuntu 9.04 now these problems are solved.

Our sponsor
Get Coupons for Lenovo Thinkpad
Get Coupons for Thinkpads
Advertisements
eBay