Primero lo básico:

Primero lo básico:

¿Alguna idea de si se puede ejecutar una máquina virtual Windows a través de IronHide para acelerar la tarjeta gráfica? Me gustaría jugar juegos/ver Bluray, etc. utilizando mi tarjeta de video.

Respuesta1

Quizás sería útil aquí una explicación entre los gráficos de un invitado virtual y el sistema operativo del host real.

Primero lo básico:

Todo en un invitado virtual es una abstracción; lo que esto significa es que cada dispositivo y controlador en un sistema operativo invitado virtual no depende del controlador y dispositivo host real.

Para darle un ejemplo simple. Un mouse se ve como un dispositivo específico: el kernel de Linux ve este dispositivo y permite que el sistema operativo invitado lo use. Este "dispositivo virtual" se asigna al dispositivo físico real mediante la herramienta de virtualización: VirtualBox, VMWare, Xen, etc. Por lo tanto, el sistema operativo invitado nunca necesita comprender qué es el mouse físico, solo ve lo que la herramienta de virtualización le ha asignado. . El valor de este enfoque es que puede mover el invitado virtual a diferentes Hosts; funcionará de la misma manera porque no existe una dependencia directa del Host en sí.

Para mostrar esto en la práctica, puede ejecutarlo lsusbtanto en el host como en el invitado; en mi host O/SI tengo los siguientes 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

En mi O/SI onírico invitado puedo ver los siguientes dispositivos USB, que son diferentes del host:

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

Cualquier sistema operativo invitado, ya sea Windows o Linux, solo verá este dispositivo invitado virtual.

Gráficos de host versus gráficos de invitados

Lo mismo ocurre con los gráficos.

Mi host de gráficos es:

 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)

En mi sistema operativo onírico invitado puedo ver la siguiente tarjeta gráfica; puedes ver que no es la misma que la del 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

Del mismo modo, un sistema operativo invitado de Windows verá sólo un dispositivo invitado virtual similar.

En el turbio mundo de VirtualBox, elAdiciones de invitadosque puede instalar manualmente (o en 11.10 -jockeylo ve y le recomienda instalarlo) instala módulos de kernel adicionales (o controladores de dispositivo para invitados de Windows) para permitir al sistema operativo invitado un acceso mejorado a los gráficos del sistema operativo host. Una vez más, no se trata de un mapeo directo, pero permite ver gráficos acelerados en 3D.

Si una aplicación dentro de su máquina virtual usa funciones 3D a través de la interfaz de programación OpenGL (o para un sistema operativo invitado de Windows, sus llamadas DirectX), en lugar de emularlas en el software (lo cual sería lento), VirtualBox intentará usar la interfaz de su host. Equipos 3D.

Nuevamente enfatizo que el sistema operativo invitado no ve su tarjeta gráfica real, simplemente pasa la llamada OpenGL (o DirectX) del invitado directamente al hardware del host para procesarla.

ingrese la descripción de la imagen aquí

En la configuración de VirtualBox, debe cambiar la memoria de la tarjeta de video y la configuración de la tarjeta gráfica 3D. Su sistema operativo invitado verá una "tarjeta acelerada 3D" con 128 Mb de RAM. No importa si su tarjeta gráfica host es mejor que esta: su sistema operativo invitado solo verá esta tarjeta gráfica virtual abstraída "simple".

Como mencionó que está utilizando un sistema operativo Windows Guest, la casilla de verificación 2D se aplica a usted ya que es similar.pasar porde las llamadas a la interfaz de programación.

Bumblebee/IronHide es un mecanismo de conmutación de gráficos: está utilizando gráficos integrados o gráficos NVidia/ATI de mayor capacidad, pero no ambos al mismo tiempo.

Dado que la capacidad OpenGL (o DirectX) de los gráficos intercambiables superiores es mayor que la del conjunto de chips integrados, verá un rendimiento de gráficos relativamente mejorado con aplicaciones con uso intensivo de gráficos Guest O/S. Sin embargo, esta mejora no es tan espectacular como ejecutar la misma aplicación de forma nativa en el host, ya que todavía funciona dentro de las limitaciones del dispositivo de gráficos invitado virtual de 128 MB.

fuente

Respuesta2

Una respuesta arribahttps://askubuntu.com/a/85138/38052explica cómo todo lo que ve el O/S invitado es una especie de abstracción. Si bien esto solía ser completamente cierto, creo que las cosas están cambiando y es posible que ya no sea completamente cierto.

Algunos procesadores más nuevos también admiten la virtualización de E/S MMU. Las tecnologías se denominan Intel VT-d para la versión de Intel y AMD-Vi para la versión de AMD. Para citar el artículo de Wikipedia sobre virtualización x86:

Virtualización MMU de E/S de Intel (AMD-Vi y VT-d) Artículo principal: IOMMU

Una unidad de administración de memoria de entrada/salida (IOMMU) permite que las máquinas virtuales invitadas utilicen directamente dispositivos periféricos, como Ethernet, tarjetas gráficas aceleradas y controladores de disco duro, a través de DMA y reasignación de interrupciones. A esto a veces se le llama transferencia PCI. Tanto AMD como Intel han publicado especificaciones:

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

Esto suena bastante interesante, pero ya puedo prever algunos problemas. Por un lado, en las computadoras portátiles Optimus, Intel IGP siempre muestra el resultado final en pantalla. No me queda claro cómo el sistema operativo invitado y el sistema operativo host controlarán el IGP. Una idea es que si es posible ejecutar el Host sin ningún gráfico mientras se ejecutan los invitados, esto podría funcionar, pero no me queda claro cómo se haría realmente para hacerlo.

Respuesta3

Bien, tenía curiosidad, así que probé esto.

QEMU, y ahora VirtualBox, admiten el paso de dispositivos PCI a la máquina invitada. Eso significa que si tiene una segunda tarjeta gráfica, puede pasarla a un invitado de Windows en un host de Linux y obtener un rendimiento 3D completo (juegos) en un entorno de Windows virtualizado. Ese es el caso de una computadora de escritorio con dos tarjetas gráficas. El administrador de dispositivos mostraría "NVIDIA GTX... lo que sea" en lugar de decir "Adaptador de gráficos Virualbox".

Optimus siempre es más complicado. Estoy probando esto en un ASUS UX501. Pude pasar el chip NVidia al invitado de Windows y aparece en el administrador de dispositivos como "Controlador de video 3D". Pero no pude instalar ningún controlador de Windows que lo admitiera. Parece que la presencia de gráficos Intel es un requisito previo.

sarang tenía razón al sospechar. Parece que el chip nvidia no es un "adaptador de pantalla" como lo haría un monitor, sino simplemente un acelerador para el chip Intel integrado. No parecen funcionar como dos dispositivos separados de forma independiente.

Respuesta4

https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28

Es posible pasar a través de la DGPU en algunos casos (Ver enlace arriba). He logrado esto en mi Dell 7710 con una DGPU Quadro m5000m transmitida desde el host de Ubuntu al invitado de Windows10.

Sin embargo, AFIK no es posible mostrar la salida de esta tarjeta en la pantalla principal de la computadora portátil a través del hardware. Creo que Looking Glass es probablemente la mejor opción en este momento, seguida de Steam en streaming doméstico/RDP, etc.

Me gustaría saber por qué no es posible simplemente controlar el Mux en computadoras portátiles con muxed para cambiar entre IGPU y DGPU a voluntad. Intenté esto a través de VGA Switcheroo pero no pude controlar el mux en absoluto incluso antes de pasar a través de la DPU a un sistema operativo invitado.

Supongo que las computadoras portátiles sin Mux serían más desafiantes, al menos requerirían cierta comunicación entre el invitado y el host para controlar qué GPU está escribiendo en qué parte del búfer de cuadros. muy por encima de mi cabeza.

información relacionada