Alguma idéia de se você pode executar uma VM do Windows via IronHide para acelerar a placa gráfica? Eu gostaria de jogar / assistir bluray etc utilizando minha placa de vídeo.
Alguma idéia de se você pode executar uma VM do Windows via IronHide para acelerar a placa gráfica? Eu gostaria de jogar / assistir bluray etc utilizando minha placa de vídeo.
Respostas:
Talvez uma explicação entre gráficos em um convidado virtual e o sistema operacional real do host ajude aqui.
Tudo em um convidado virtual é uma abstração - o que isso significa é que todos os dispositivos e drivers de um SO virtual de convidados virtuais não dependem do dispositivo e driver reais do host.
Para lhe 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. Esse "dispositivo virtual" é mapeado para o dispositivo físico real pela ferramenta de virtualização - VirtualBox, VMWare, Xen etc. Portanto, o sistema operacional convidado nunca precisa entender o que é o mouse físico, apenas vê o que a ferramenta de virtualização mapeou para ele. . O valor dessa abordagem é que você pode mover o convidado virtual para diferentes hosts - ele funcionará da mesma maneira porque não há dependência direta do próprio host.
Para mostrar isso na prática, você pode executar lsusb
no host e no convidado - no meu host O / SI possui 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, o O / SI onírico pode ver os seguintes dispositivos USB - eles 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 O / S convidado, seja Windows ou Linux, verá apenas este dispositivo convidado virtual.
É o mesmo para gráficos.
Os gráficos do meu host 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 sistema operacional convidado do Windows verá apenas um dispositivo convidado virtual semelhante.
No mundo obscuro do VirtualBox, as Adições de Convidado que você pode instalar manualmente (ou na versão 11.10 - o jockey vê e recomenda que você o instale) instala módulos adicionais do kernel (ou drivers de dispositivo para Convidados do Windows) para permitir ao O / S convidado acesso aprimorado a seus gráficos O / S do host. Novamente, não é um mapeamento direto - mas permite a visualização de gráficos acelerados em 3D.
Se um aplicativo dentro de sua máquina virtual usar recursos 3D por meio da interface de programação OpenGL (ou para um sistema operacional convidado do Windows - suas chamadas DirectX), em vez de emulá-los em software (o que seria lento), o VirtualBox tentará usar o host Hardware 3D.
Novamente, enfatizo que o sistema operacional convidado não vê sua placa de vídeo real, apenas passa a chamada OpenGL (ou DirectX) do convidado diretamente para o hardware do host para processar.
Nas configurações do VirtualBox, você deve alterar a memória da placa de vídeo e a configuração da placa gráfica 3D. O seu O / S convidado verá uma "placa 3D acelerada" com 128Mb de RAM. Não importa se a sua placa de vídeo host é melhor que isso - o seu O / S convidado verá apenas esta placa de vídeo virtual "simples" abstraída.
Como você mencionou que está usando um O / S do Windows Guest - a caixa de seleção 2D é aplicável a você, pois é realizado um repasse semelhante de chamadas da interface de programação.
O Bumblebee / IronHide é um mecanismo de alternância de gráficos - você está usando gráficos integrados ou gráficos NVidia / ATI de maior capacidade, mas não os dois ao mesmo tempo.
Como a capacidade OpenGL (ou DirectX) dos gráficos mais comutáveis é maior que o conjunto de chips integrados, você verá um desempenho gráfico relativamente aprimorado com os aplicativos intensivos em gráficos de Guest O / S. No entanto, esse aprimoramento não é tão dramático quanto a execução nativa do mesmo aplicativo no host, uma vez que ainda está funcionando dentro das restrições do dispositivo gráfico de convidado virtual de 128 MB.
Uma resposta acima https://askubuntu.com/a/85138/38052 explica como tudo o que o sistema operacional convidado vê é algum tipo de abstração. Enquanto isso costumava ser verdade, acredito que as coisas estão mudando e pode não ser mais verdade.
Alguns processadores mais recentes também oferecem suporte à virtualização de E / S MMU. As tecnologias são chamadas Intel VT-d para a versão Intel e AMD-Vi para a versão AMD. Para citar o artigo da wikipedia sobre virtualização x86:
Virtualização de E / S MMU da Intel (AMD-Vi e VT-d) Artigo principal: IOMMU
Uma unidade de gerenciamento de memória de entrada / saída (IOMMU) permite que as máquinas virtuais convidadas usem diretamente dispositivos periféricos, como Ethernet, placas gráficas aceleradas e controladores de disco rígido, por meio do DMA e interrompam o remapeamento. Às vezes, isso é chamado de passagem de PCI. A AMD e 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 bastante interessante, mas já posso prever alguns problemas. Por um lado, nos laptops Optimus, o Intel IGP está sempre renderizando a saída final na tela. Não está claro para mim como o Guest O / S e o Host O / S vão dirigir o IGP. Um pensamento é que, se for possível executar o Host sem gráficos enquanto os convidados estiverem em execução, isso poderá funcionar, mas não está claro para mim como alguém realmente faria isso.
OK, eu estava curioso, então eu tentei isso.
O QEMU e agora o VirtualBox oferecem suporte à 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 Windows virtualizado. É o caso de um equipamento de mesa com duas placas gráficas. O gerenciador de dispositivos mostraria "NVIDIA GTX ... tanto faz" em vez de dizer "Virualbox Graphics Adapter".
Optimus é sempre mais complicado. 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 "3D Video Controller". Mas não consegui instalar nenhum driver do Windows para suportá-lo. Parece que a presença dos gráficos da Intel é um pré-requisito.
Sarang estava certo em suspeitar. Parece que o chip da nvidia não é um "adaptador de vídeo", como faria com um monitor, mas apenas um acelerador para o chip intel integrado. Eles não parecem funcionar como dois dispositivos separados independentemente.