как проверить, какой графический контроллер используется

как проверить, какой графический контроллер используется

На моем ноутбуке с Linux есть два VGA-совместимых контроллера (информация из lshw):

  • продукт: GK107 [GeForce GT 640M]
    физический идентификатор: 0
    информация о шине: pci@0000:01:00.0
    ..
    тактовая частота: 33 МГц
    возможности: pm msi pciexpress vga_controller bus_master cap_list
    конфигурация: драйвер=nouveau задержка=0
    ресурсы: irq:16 память:f2000000-f2ffffff память:e0000000-effffffff память:f0000000-f1ffffff ioport:3000(размер=128)
  • продукт: процессор Core 3-го поколения
    физический идентификатор графического контроллера: 2
    информация о шине: pci@0000:00:02.0
    тактовая частота: 33 МГц
    возможности: msi pm vga_controller bus_master cap_list
    конфигурация rom: драйвер=i915 задержка=0
    ресурсы: irq:44 память:f3000000-f33fffff память:d0000000-dfffffff ioport:4000(размер=64)

lspci | grep VGAвыход:

  • 00:02.0 Контроллер, совместимый с VGA: Графический контроллер процессора Intel Corporation 3-го поколения Core (рев. 09)
  • 01:00.0 Совместимый с VGA контроллер: NVIDIA Corporation GK107 [GeForce GT 640M] (rev a1)

При запуске glxgearsя получаю следующий вывод (во время работы приложения):

ошибка libGL: не удалось загрузить драйвер: i965
 Ошибка libGL: попробуйте еще раз с LIBGL_DEBUG=verbose для получения более подробной информации.
 XIO: фатальная ошибка ввода-вывода 11 (ресурс временно недоступен) на X-сервере ":0"
       после 2968 запросов (из них 2966 обработано) с 0 оставшимися событиями.

Я так понимаю, что с Intel VGA это не сработает?

Я установил следующие драйверы:

  • intel-dri
  • xf86-video-intel 2.20 (видеодрайверы X.org Intel i810/i830/i915/945G/G965+)
  • xf86-видео-новинка

1Как проверить, какой контроллер используется системой/программами??

2Как я могу гарантировать использование определенного контроллера??

3 Как мне убедиться, что загружен драйвер i965, а не i915 (из вывода lshw)? (правильный для моего Intel AGP)

4Почему lshwшоутактовая частота: 33 МГц? Для GeForce 640M должно быть 625 МГц.

Я использую Linux Arch.

решение1

  1. Чтобы узнать, какой графический контроллер в данный момент используется системой/программами, используйте следующие две команды:

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

    Первый даст вам список всех загруженных модулей (или модулей, которые X пытался загрузить), а второй даст вам список всех устройств, которые настроены для работы на вашем компьютере. Пересечение этих файлов даст вам работающий контроллер.

  2. Определите это в/etc/X11/xorg.conf

    Не вдаваясь в подробности, но определим Driverлинию в Deviceсечении.

  3. Если он установлен и настроен в /etc/X11/xorg.conf, он будет работать. Пожалуйста, помните, что драйверы иногда являются универсальными, то естьnvidia— это драйвер для всех карт NVIDIA, поэтому i915 может быть подходящим драйвером для i965.

  4. @Hennes уже частично ответил на это выше. Похоже, это lshwошибка, чтобы показывать скорость шины PCI для каждого устройства на PCI или PCIe. Посмотрите на эту картинку:NVidia GeForce GT220(не мой, но у меня две NVidia и lshw для обеих говорит 33MHz).

решение2

  • 4

625 — это не частота шины для PCIe; я думаю, вы путаете скорость линии, скорость подключения и скорость шины PCI. Скорость линии — это бит на бит. В то время как шина PCI имеет ширину 32 бита. Таким образом, шина PCI может выдерживать 33 МГц * 32 = 1056 Мбит/с (совместно между всеми устройствами). В то время как PCIe v1 обеспечивает 2,5 ГТ/с на линию, но транзакция — это не бит (транзакция — это бит на линии данных, но линии данных должны передавать много описаний пакетов заголовков; поэтому вы можете надеяться на 2,3 Гбит/с на линию).

Но... PCIe не отображается таким же образом; на самом деле, он динамически маршрутизируется и выделяется. Таким образом, дочерние карты объявляются на шине PCI (читай 32b 33MHz), но физически отображаются на коммутаторе PCI; и коммутатор может выделять больше ресурсов (ширина 64b) с неуказанной скоростью.

USB — это примерно тот же беспорядок. USB3 — это скорости 5 Гбит/с, установленные через концентратор, который заявляет 480 Мбит/с. Корневой концентратор никогда не может объявить больше, чем «высокая скорость» (480). Поэтому устройство отображается там. Но внутри «высокоскоростного соединения» вы можете использовать «скорость передачи данных 5 Гбит/с». Вот почему деревья USB всегда показывают 2 дерева, когда USB3 рядом; и устройства USB3 отображаются дважды. Отображение устройства USB3 внутри дерева USB2 требуется, помимо прочего, для управления питанием (для вычисления общего тока, потребляемого на ветвь после добавления других устройств USB2).

Вот почему я не удивлен и не обеспокоен, увидев элемент с частотой 625 МГц ниже шины с частотой 33 МГц.

Или, может быть, 625 — это скорость оперативной памяти, вообще не связанная с шиной PCI.

решение3

  • 1

Чтобы узнать, обслуживается ли карта водителем:

$ lspci | grep -E "VGA|3D" | cut -f1 -d" " | while read id ; do lspci -v -s $id ; done | grep -i -e "VGA" -e "3D" -e "Kernel driver" -e "Kernel module"
01:05.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RS880 [Radeon HD 4200] (prog-if 00 [VGA controller])
        Kernel driver in use: radeon
        Kernel modules: radeon
02:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RV710 [Radeon HD 4350/4550] (prog-if 00 [VGA controller])
        Kernel driver in use: radeon
        Kernel modules: radeon
03:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RV710 [Radeon HD 4350/4550] (prog-if 00 [VGA controller])
        Kernel driver in use: radeon
        Kernel modules: radeon

# lspci | grep -E "VGA|3D" | cut -f1 -d" " | while read id ; do lspci -v -s $id ; done | grep -i -e "VGA" -e "3D" -e "Kernel driver" -e "Kernel module"
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) (prog-if 00 [VGA controller])
        Kernel driver in use: i915
        Kernel modules: i915
01:00.0 VGA compatible controller: NVIDIA Corporation GF108GLM [NVS 5200M] (rev a1) (prog-if 00 [VGA controller])
        Kernel driver in use: nvidia
        Kernel modules: nvidia

Чтобы узнать, какая карта является картой по умолчанию для X:

$ cat /var/log/Xorg.0.log | grep "PCI:"
[  4328.398] (--) PCI: (0:1:5:0) 1002:9710:1458:d000 rev 0, Mem @ 0xd8000000/134217728, 0xfdae0000/65536, 0xfd900000/1048576, I/O @ 0x0000ae00/256
[  4328.398] (--) PCI:*(0:2:0:0) 1002:954f:1462:1618 rev 0, Mem @ 0xb0000000/268435456, 0xfd6e0000/65536, I/O @ 0x0000ee00/256, BIOS @ 0x????????/131072
[  4328.398] (--) PCI: (0:3:0:0) 1002:954f:1462:1618 rev 0, Mem @ 0xc0000000/268435456, 0xfdfe0000/65536, I/O @ 0x0000de00/256, BIOS @ 0x????????/131072

# cat /var/log/Xorg.0.log | grep "PCI:"
[    30.924] (--) PCI:*(0@0:2:0) 8086:0166:1028:0534 rev 9, Mem @ 0xf6400000/4194304, 0xd0000000/268435456, I/O @ 0x0000f000/64, BIOS @ 0x????????/131072
[    30.924] (--) PCI: (1@0:0:0) 10de:0dfc:1028:1534 rev 161, Mem @ 0xf5000000/16777216, 0xe0000000/268435456, 0xf0000000/33554432, I/O @ 0x0000e000/128, BIOS @ 0x????????/524288

Но ядро ​​покажет используемый драйвер, даже если X вообще не обрабатывает карту.

  • 2 / 3

xorg.conf может (и должен) очень помочь, но я уже сообщал о десятке ошибок в Xorg, связанных с тем, что он может игнорировать conf, и даже не говорил об этом (и почему).

Связанный контент