
Alguma idéia se você pode executar uma VM do Windows via IronHide para aceleração da placa gráfica? Gostaria de jogar/assistir bluray etc. utilizando minha placa de vídeo.
Responder1
Talvez uma explicação entre os gráficos em um convidado virtual e o sistema operacional do host real ajudasse aqui.
Primeiro o básico:
Tudo em um convidado virtual é uma abstração - o que isso significa é que cada dispositivo e driver em um sistema operacional convidado virtual não depende do dispositivo e driver host reais.
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. 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 apenas vê o que a ferramenta de virtualização mapeou para ele . O valor desta abordagem é que você pode mover o convidado virtual para hosts diferentes - ela 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
tanto no host quanto no convidado - no meu host O/SI 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 onírico O/SI posso 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 sistema operacional convidado, seja Windows ou Linux, verá apenas este dispositivo convidado virtual.
Gráficos de host versus gráficos de convidados
É o mesmo para gráficos.
Meus gráficos de 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 sistema operacional onírico convidado, ele pode ver a seguinte placa gráfica - você pode ver que não é a mesma 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, oAdições de convidadosque você pode instalar manualmente (ou em 11.10 -jóqueivê e recomenda que você o instale) instala módulos adicionais do kernel (ou drivers de dispositivo para convidados do Windows) para permitir ao sistema operacional convidado acesso aprimorado aos gráficos do sistema operacional host. Novamente, não é um mapeamento direto - mas permite que gráficos 3D acelerados sejam vistos.
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 seu host Hardware 3D.
Mais uma vez, enfatizo que o sistema operacional convidado não vê sua placa gráfica 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 as configurações da placa gráfica 3D. Seu sistema operacional convidado verá uma "placa acelerada 3D" com 128 MB de RAM. Não importa se sua placa gráfica host é melhor que esta - seu sistema operacional convidado verá apenas esta placa gráfica virtual abstraída "simples".
Como você mencionou que está usando um sistema operacional convidado do Windows - a caixa de seleção 2D é aplicável a você, pois é semelhanteatravessarde chamadas de interface de programação são realizadas.
Bumblebee/IronHide é um mecanismo de troca de gráficos - você está usando gráficos integrados ou gráficos NVidia/ATI de maior capacidade, mas não ambos ao mesmo tempo.
Como a capacidade OpenGL (ou DirectX) dos gráficos comutáveis superiores é maior do que o conjunto de chips integrados, você verá um desempenho gráfico relativamente aprimorado com aplicativos com uso intensivo de gráficos Guest O/S. No entanto, esta melhoria não é tão dramática quanto executar o mesmo aplicativo nativamente no host, uma vez que ele ainda funciona dentro das restrições do dispositivo gráfico convidado virtual de 128 MB.
Responder2
Uma resposta acimahttps://askubuntu.com/a/85138/38052explica como tudo o que o sistema operacional convidado vê é algum tipo de abstração. Embora isso fosse totalmente verdade, acredito que as coisas estão mudando e pode não ser mais totalmente verdade.
Alguns processadores mais recentes também suportam virtualização MMU de E/S. As tecnologias são chamadas de 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 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 máquinas virtuais convidadas usem diretamente dispositivos periféricos, como Ethernet, placas gráficas aceleradas e controladores de disco rígido, por meio de DMA e remapeamento de interrupção. 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 muito 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 sistema operacional convidado e o sistema operacional host irão conduzir o IGP. Uma ideia é que, se for possível executar o Host sem nenhum gráfico enquanto os convidados estão em execução, isso poderia funcionar, mas não está claro para mim como alguém realmente faria isso.
Responder3
OK, eu estava curioso, então 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á passá-la para um convidado do Windows em um host Linux e obter desempenho 3D completo (jogos) em um ambiente Windows virtualizado. Esse é o caso de um equipamento de desktop com duas placas gráficas. O gerenciador de dispositivos mostraria "NVIDIA GTX... tanto faz" em vez de dizer "Adaptador gráfico Virtualbox".
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 "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 vídeo" como seria um monitor, mas apenas um acelerador para o chip Intel integrado. Eles não parecem funcionar como dois dispositivos separados de forma independente.
Responder4
https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28
É possível passar pelo DGPU em alguns casos (veja link acima). consegui isso no meu Dell 7710 com Quadro m5000m DGPU passado do host Ubuntu para o convidado do Windows10.
Porém AFIK não é possível exibir a saída desta placa na tela principal do laptop via hardware. acho que o espelho é provavelmente a melhor opção no momento, seguido pelo vapor em streaming doméstico / RDP etc.
Gostaria de saber por que não é possível apenas controlar o Mux em laptops muxados para alternar entre IGPU e DGPU à vontade. Tentei fazer isso via VGA Switcheroo, mas não consegui controlar o mux antes mesmo de passar pelo DPU para um sistema operacional convidado.
Acho que laptops sem Mux seriam mais desafiadores, pelo menos exigindo alguma comunicação entre o convidado e o host para controlar qual GPU está gravando em qual bit do buffer de quadros. bem acima da minha cabeça.