Como verificar qual placa gráfica está dirigindo meu monitor?


9

O sistema é configurado com uma dessas ofertas híbridas Intel / ATI (sem mux). Depois de um pouco de brincadeira com as configurações e drivers do kernel, consegui as duas placas funcionando, eu acho (adicionando radeon.dpm = 1 nas configurações do kernel e usando apenas os drivers de código aberto).

No entanto, não consigo descobrir qual placa o sistema está usando. Do meu entendimento com o kernel (3.12) mais recente, o gerenciamento dinâmico de energia desligará / ligará o cartão quando necessário, portanto, em teoria, ele deve usar o hd4000 integrado a maior parte do tempo, no entanto, não consigo encontrar uma maneira fácil para verificar qual deles está em uso.

lspci | grep VGA lista apenas todos os cartões, não especifica qual está em uso no momento.

Alguma direção na direção certa muito apreciada.

Sistema

Debian 7 estável, 3.12 amd64 Kernel 7670M AMD + Intel HD4000

Respostas:


2

xrandr

O uso xrandrmostrará quais cartões estão disponíveis.

$ xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x49 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 8 associated providers: 0 name:Intel

Neste sistema, tenho 1 placa gráfica, uma Intel, que possui 2 portas (saídas). Você pode ver as saídas da seguinte xrandrforma:

$ xrandr -q
Screen 0: minimum 320 x 200, current 3360 x 1080, maximum 8192 x 8192
LVDS1 connected primary 1440x900+0+0 (normal left inverted right x axis y axis) 303mm x 190mm
   1440x900       60.0*+   50.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 connected 1920x1080+1440+0 (normal left inverted right x axis y axis) 521mm x 293mm
   1920x1080      60.0*+
   1680x1050      60.0  
   1280x1024      75.0     60.0  
   1440x900       59.9  
   1280x960       60.0  
   1152x864       75.0  
   1024x768       75.1     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        75.0     72.8     66.7     60.0  
   720x400        70.1  
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)

As 2 saídas são VGA1 (porta externa VGA) e LVDS1 (monitor LCD no laptop).

lshw

Por fim, você pode usar lshwpara descobrir mais informações sobre as informações reais das placas gráficas:

$ sudo lshw -numeric -c video
  *-display               
       description: VGA compatible controller
       product: Core Processor Integrated Graphics Controller [8086:46]
       vendor: Intel Corporation [8086]
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 02
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:41 memory:f2000000-f23fffff memory:d0000000-dfffffff ioport:1800(size=8)

Como determinar qual GPU está dirigindo e quais monitores

Para realizar esta tarefa, você precisará levar a lista de provedores e anotar o número deles no xrandr --listproviderscomando. Este número é o número de dispositivos. Muitas vezes, é o mesmo número atribuído juntamente com a tela na saída de xrandr -q.

Portanto, é possível construir livremente qual "dispositivo" da GPU está direcionando para qual tela. No meu exemplo, "Provedor 0" está direcionando a "Tela 0".

NOTA: O termo "Tela" não corresponde necessariamente a uma única exibição. No meu cenário, minha GPU pode direcionar 2 saídas, LVDS1 e VGA1. Mas essa abordagem permite que você faça a determinação com um alto grau de confiança sobre qual monitor está sendo conduzido por qual GPU.

As associações acima são controladas através da configuração do sistema, para que haja possibilidades de enganar você. Por exemplo, a associação acima é direcionada a partir de uma configuração que se parece com isso:

Section "Screen"
    Identifier  "Screen0"
    Device      "Device0"
EndSection
Section "Screen"
    Identifier  "Screen1"
    Device      "Device1"
EndSection

Portanto, existe a possibilidade de o sistema ter sido configurado para Screen0ser acionado por outra coisa Device0.

Referências


Não tenho uma máquina com várias GPUs para testar, mas, tanto quanto posso dizer, nenhum dos comandos que você propôs indica quais GPU controlam qual monitor.
Gilles 'SO- stop be evil'

@Gilles - é verdade que eles não saem e realmente afirmam, mas mostram como um dispositivo está associado a uma determinada tela (ou seja, é exibida).
Slm

Você ainda não está explicando como relacionar uma GPU a um monitor (pelo menos no caso comum de não ter um Xorg.conf). A informação provavelmente está no log do Xorg se não estiver em nenhum outro lugar (e provavelmente em outro lugar, mas não tenho experiência com isso).
Gilles 'SO- stop be evil'

@Gilles - hmm. O provedor "Provedor 0" é a GPU # 0. Essa GPU conduz exibições associadas como "Tela 0". Eu não expliquei isso claramente?
Slm

Mas como você sabe qual provedor aciona qual tela?
Gilles 'SO- stop be evil'

2

O glxinfo, que está disponível em, mesa-utilspode ser usado para exibir qual adaptador de vídeo é usado para gráficos OpenGL.

Por exemplo:

➜  ~  glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.