
En mi computadora portátil Linux tengo dos controladores compatibles con VGA (información de lshw
):
- producto: GK107 [GeForce GT 640M]
identificación física: 0
información del bus: pci@0000:01:00.0
..
reloj: 33MHz
capacidades: pm msi pciexpress vga_controller bus_master cap_list
configuración: driver=nouveau latency=0
recursos: irq:16 memoria: f2000000-f2ffffff memoria:e0000000-efffffff memoria:f0000000-f1ffffff ioport:3000(tamaño=128) - producto: procesador central de 3.ª generación Controlador de gráficos
ID física: 2
información de bus: pci@0000:00:02.0
reloj: 33MHz
capacidades: msi pm vga_controller bus_master cap_list
configuración de rom: controlador=i915 latencia=0
recursos: irq:44 memoria:f3000000- f33fffff memoria:d0000000-dfffffff ioport:4000(tamaño=64)
lspci | grep VGA
producción:
- 00:02.0 Controlador compatible con VGA: Controlador de gráficos con procesador Core de 3.ª generación de Intel Corporation (rev 09)
- 01:00.0 Controlador compatible con VGA: NVIDIA Corporation GK107 [GeForce GT 640M] (rev a1)
Cuando ejecuto, glxgears
obtengo el siguiente resultado (mientras la aplicación se está ejecutando):
Error de libGL: no se pudo cargar el controlador: i965 Error de libGL: inténtelo de nuevo con LIBGL_DEBUG=verbose para obtener más detalles. XIO: error fatal de IO 11 (recurso no disponible temporalmente) en el servidor X ":0" después de 2968 solicitudes (2966 procesadas conocidas) con 0 eventos restantes.
¿Entonces supongo que falla con Intel VGA?
He instalado los siguientes controladores:
- intel-dri
- xf86-video-intel 2.20 (controladores de vídeo X.org Intel i810/i830/i915/945G/G965+)
- xf86-video-nouveau
1¿Cómo puedo comprobar qué controlador utiliza el sistema/programas??
2¿Cómo puedo garantizar que se utilizará un controlador específico??
3 ¿Cómo puedo asegurarme de que esté cargado el controlador i965, en lugar del i915 (desde la lshw
salida)? (el adecuado para mi intel agp)
4Por que lshw
muestrareloj: 33MHz? Para GeForce 640M debería ser 625 MHz.
Estoy usando Linux Arch.
Respuesta1
Para saber qué controlador de gráficos utiliza actualmente el sistema/programas, utilice los dos comandos siguientes:
grep LoadModule /var/log/Xorg.0.log grep Driver /etc/X11/xorg.conf
El primero le dará una lista de todos los módulos cargados (o módulos que X intentó cargar), y el segundo le dará una lista de todos los dispositivos que están configurados para ejecutarse en su caja. La intersección de estos archivos le proporciona el controlador en ejecución.
definirlo en
/etc/X11/xorg.conf
No quiero entrar en demasiados detalles, pero sí definir
Driver
la línea enDevice
la sección.Si está instalado y configurado en
/etc/X11/xorg.conf
, se ejecutará. Tenga en cuenta que a veces los controladores son genéricos, es decirnvidiaes el controlador para todas las tarjetas nvidia, por lo que i915 podría ser el controlador apropiado para i965.@Hennes ya respondió parcialmente arriba. Parece que es un
lshw
error mostrar la velocidad del bus PCI para cada dispositivo, ya sea en PCI o PCIe. Mira esta foto:NVIDIA GeForce GT220(no es mío, pero tengo dos NVidias y lshw para ambos dice 33MHz).
Respuesta2
- 4
625 no es una frecuencia de bus para PCIe; Creo que está confundido entre la velocidad de la línea, la velocidad del enchufe y la velocidad del bus PCI. La velocidad de la línea es bit por bit. Mientras que el bus PCI tiene un ancho de 32b. Por lo tanto, un bus PCI puede soportar 33MHz*32=1056Mb/s (compartido entre todos los dispositivos). Si bien PCIe v1 proporciona 2,5 GT/s por línea, una transacción no es un bit (una transacción es un bit en la línea de datos, pero las líneas de datos necesitan transferir muchos encabezados de descripciones de paquetes; por lo que puede esperar 2,3 Gb/s). s por línea).
Pero... PCIe no está mapeado de la misma manera; de hecho, se enruta y asigna dinámicamente. Por lo tanto, las tarjetas secundarias se declaran en un bus PCI (léase 32b 33 MHz), pero se asignan físicamente en el conmutador PCI; y el conmutador puede asignar más recursos (64b de ancho) con una velocidad no especificada.
USB es casi el mismo lío. USB3 son velocidades de 5 Gb/s, establecidas sobre un concentrador que indica 480 Mb/s. El concentrador raíz nunca puede declarar más que "alta velocidad" (480). Entonces el dispositivo está mapeado allí. Pero, dentro del "enlace de alta velocidad", puede utilizar una "velocidad de datos de 5 Gb/s". Es por eso que los árboles USB siempre muestran 2 árboles cuando hay USB3 cerca; y los dispositivos USB3 tienen doble asignación. Se requiere mapear un dispositivo USB3 dentro del árbol USB2, entre otras cosas, para la administración de energía (para calcular la corriente total consumida por rama después de agregar otros dispositivos USB2).
Por eso no me sorprende ni me preocupa ver un elemento de 625MHz debajo de un bus de 33MHz.
O tal vez 625 es la velocidad de la RAM, sin ninguna relación con el bus PCI.
Respuesta3
- 1
Para saber si una tarjeta la maneja un conductor:
$ 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
Para saber cuál tarjeta es la predeterminada para 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
Pero Kernel mostrará el controlador en uso incluso si X no maneja la tarjeta en absoluto.
- 2/3
xorg.conf puede (debería enormemente) ayudar, pero ya he informado una docena de errores contra Xorg sobre el hecho de que puede ignorar la configuración, y ni siquiera decirlo (ni por qué).