IronHide / BumbleBee com uma VM do VirtualBox. Passará pela aceleração de vídeo para o cartão físico?

8

Alguma idéia de se você pode executar uma VM do Windows via IronHide para acelerar a placa gráfica? Eu gostaria de jogar games / watch bluray etc utilizando minha placa de vídeo.

    
por mwjackson 25.11.2011 / 13:54

3 respostas

9

Talvez uma explicação entre gráficos em um convidado virtual e o host real O / S possa ajudar aqui.

Primeiro o básico:

Tudo em um convidado virtual é uma abstração - o que isso significa é que cada dispositivo e driver em um convidado virtual O / S não depende do dispositivo host real & amp; motorista.

Para dar um exemplo simples. Um mouse é visto como um dispositivo específico - o kernel do Linux vê esse dispositivo e permite que o sistema operacional convidado use esse dispositivo. Este "dispositivo virtual" é mapeado para o dispositivo físico real pela ferramenta de virtualização - VirtualBox, VMWare, Xen etc. Assim, o sistema operacional convidado nunca precisa entender o que é o mouse físico, ele só vê o que a ferramenta de virtualização mapeou para ele . O valor dessa abordagem é que você pode mover o convidado virtual para Hosts diferentes - ele funcionará da mesma maneira, porque não há dependência direta no Host em si.

Para mostrar isso na prática, você pode executar lsusb no host e no convidado - no meu host O / S eu tenho os seguintes dispositivos USB:

Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0402:9665 ALi Corp. 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

No meu convidado oneiric O / S eu posso ver os seguintes dispositivos USB - estes são diferentes do host:

Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet

Qualquer convidado O / S, seja windows ou linux, só verá este dispositivo convidado virtual.

Gráficos anfitriões vs. gráficos convidados

É o mesmo para gráficos.

Meus gráficos de hospedagem são:

 sudo lshw -class display
  *-display               
       description: VGA compatible controller
       product: Core Processor Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 18
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:41 memory:90000000-903fffff memory:80000000-8fffffff ioport:3050(size=8)

No meu convidado oneiric O / S ele pode ver a seguinte placa gráfica - você pode ver que não é o mesmo que o host:

sudo lshw -class display
  *-display UNCLAIMED     
       description: VGA compatible controller
       product: VirtualBox Graphics Adapter
       vendor: InnoTek Systemberatung GmbH
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: vga_controller bus_master
       configuration: latency=64
       resources: memory:e0000000-e7ffffff

Da mesma forma - um O / S de convidado do Windows verá apenas um dispositivo convidado virtual semelhante.

No obscuro mundo do VirtualBox, as Guest Additions que você pode instalar manualmente (ou em 11.10 - jockey vê e recomenda instalá-lo) instala módulos adicionais do kernel ( ou drivers de dispositivo para convidados do Windows) para permitir ao convidado O / S acesso aprimorado a seus gráficos O / S de host. Novamente, não é um mapeamento direto - mas permite que gráficos acelerados em 3D sejam vistos.

Se um aplicativo dentro de sua máquina virtual usa recursos 3D através da interface de programação OpenGL (ou para um guest Windows O / S - suas chamadas DirectX), em vez de emulá-los em software (o que seria lento), o VirtualBox tentará use o hardware 3D do seu host.

Mais uma vez eu enfatizo, o convidado O / S não vê sua placa gráfica real, apenas passa a chamada OpenGL (ou DirectX) do Guest diretamente para o hardware Host para processar.

Nas configurações do VirtualBox, você deve alterar a configuração da memória da placa de vídeo e da placa gráfica 3D. Seu convidado O / S, em seguida, verá uma "placa 3D Accelerated" com 128 MB de RAM. Não importa se a sua placa de vídeo host é melhor do que isso - o seu convidado O / S só verá esta placa gráfica virtual "simples".

Desde que você mencionou que está usando o Windows Guest O / S - a caixa de seleção 2D é aplicável a você, já que uma passagem de chamadas de interface de programação é realizada.

O Bumblebee / IronHide é um mecanismo de comutação de gráficos de e / ou - você está usando gráficos integrados ou gráficos NVidia / ATI de maior capacidade, mas não ambos ao mesmo tempo.

Como o recurso OpenGL (ou DirectX) dos gráficos comutáveis mais altos é maior que o conjunto de chips integrados, você verá um desempenho gráfico relativamente aprimorado com os aplicativos intensivos de gráficos do Guest O / S. No entanto, essa melhoria não é tão dramática quanto executar o mesmo aplicativo nativamente no host, uma vez que ele ainda está funcionando dentro das restrições do dispositivo gráfico virtual de 128 MB.

fonte

    
por fossfreedom 04.12.2011 / 19:07
5

Uma resposta acima do link explica como tudo o que o convidado O / S vê é uma espécie de abstração. Enquanto isso costumava ser verdade, eu acredito que as coisas estão mudando e isso pode não ser mais verdade.

Alguns processadores mais recentes também suportam virtualização de I / O MMU. As tecnologias são chamadas Intel VT-d para a versão da Intel e AMD-Vi para a versão da AMD. Para citar o artigo da wikipedia sobre virtualização x86:

  

Virtualização de MMU de E / S da Intel (AMD-Vi e VT-d) Artigo principal:   IOMMU

     

Uma unidade de gerenciamento de memória de entrada / saída (IOMMU) permite que clientes virtuais   máquinas para usar diretamente dispositivos periféricos, como Ethernet,   placas gráficas aceleradas e controladores de disco rígido, por meio do DMA   e interromper o remapeamento. Isso às vezes é chamado de passagem PCI.   Tanto a AMD quanto a Intel lançaram especificações:

AMD's I/O Virtualization Technology, "AMD-Vi", originally called "IOMMU".
Intel's "Virtualization Technology for Directed I/O" (VT-d).

Isso parece bem interessante, mas eu já posso prever alguns problemas. Por um lado, em laptops Optimus, o Intel IGP está sempre exibindo a saída final na tela. Não está claro para mim como o Guest O / S e o Host O / S vão comandar o IGP. Um pensamento é que, se é possível executar o Host sem nenhum gráfico enquanto os convidados estão em execução, isso pode funcionar, mas não está claro para mim como alguém realmente faria isso.

    
por sarang 15.12.2011 / 18:24
1

OK, eu estava curioso, então eu tentei isso.

O QEMU e agora o VirtualBox estão suportando passagem de dispositivos PCI para a máquina convidada. Isso significa que, se você tiver uma segunda placa gráfica, poderá transmiti-la a um convidado do Windows em um host linux e obter desempenho 3D completo (jogos) em um ambiente virtualizado do Windows. Esse é o caso de uma plataforma de desktop com duas placas gráficas. O gerenciador de dispositivos mostraria "NVIDIA GTX ... o que for" em vez de dizer "Adaptador gráfico Virualbox".

O Optimus é sempre mais complicado. Eu estou testando isso em um ASUS UX501. Consegui passar o chip NVidia para o convidado do Windows e ele aparece no gerenciador de dispositivos como "Controlador de Vídeo 3D". Mas não consegui instalar nenhum driver do Windows para suportá-lo. Parece que a presença dos gráficos intel é um pré-requisito.

Sarang estava certo em suspeitar. Parece que o chip nvidia não é um "adaptador de exibição", como seria um monitor, mas apenas um acelerador para o chip integrado da Intel. Eles não parecem funcionar como dois dispositivos separados de forma independente.

    
por Mathew Hart 24.01.2016 / 08:26