Linux – how to check which graphic controller is in use

driversgraphics cardlinuxvga

On my linux laptop I have two VGA compatible controllers (information from lshw):

  • product: GK107 [GeForce GT 640M]
    physical id: 0
    bus info: pci@0000:01:00.0
    ..
    clock: 33MHz
    capabilities: pm msi pciexpress vga_controller bus_master cap_list
    configuration: driver=nouveau latency=0
    resources: irq:16 memory:f2000000-f2ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:3000(size=128)
  • product: 3rd Gen Core processor Graphics Controller
    physical id: 2
    bus info: pci@0000:00:02.0
    clock: 33MHz
    capabilities: msi pm vga_controller bus_master cap_list rom
    configuration: driver=i915 latency=0
    resources: irq:44 memory:f3000000-f33fffff memory:d0000000-dfffffff ioport:4000(size=64)

lspci | grep VGA output:

  • 00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
  • 01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 640M] (rev a1)

When I run glxgears I've got the following output (while application is running):

 libGL error: failed to load driver: i965
 libGL error: Try again with LIBGL_DEBUG=verbose for more details.
 XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
       after 2968 requests (2966 known processed) with 0 events remaining.

So I suppose it fails with intel VGA?

I have installed followed drivers:

  • intel-dri
  • xf86-video-intel 2.20 (X.org Intel i810/i830/i915/945G/G965+ video drivers)
  • xf86-video-nouveau

1 How can I check which controller is used by system/programs?

2 How can I ensure specific controller to be used?

3 How can I ensure that driver i965 is loaded, instead i915 (from the lshw output)? (the proper for my intel agp)

4 Why lshw shows clock: 33MHz? For GeForce 640M should be 625 MHz.

I'm using Linux Arch.

Best Answer

  1. To find out which graphics controller is currently used by system/programs use the following two commands:

    grep LoadModule /var/log/Xorg.0.log
    grep Driver /etc/X11/xorg.conf
    

    The first will give you a list of all loaded modules (or modules which X tried to load), and the second will give you list of all devices that are configured to run on your box. Intersection of these tho files gives you running controller.

  2. Define it in /etc/X11/xorg.conf

    Not to go in too much details, but define Driver line in Device section.

  3. If it is installed and configured in /etc/X11/xorg.conf, it'll run. Please keep in mind that drivers are sometimes generic, meaning nvidia is the driver for all nvidia cards, so i915 could be the appropriate driver for i965.

  4. @Hennes already partly answered it above. It seems that it is an lshw bug, to show PCI bus speed for every device either on PCI or PCIe. Check this pic: NVidia GeForce GT220 (not mine, but I have two NVidias and lshw for both tells 33MHz).

Related Question