Сначала основы:

Сначала основы:

Есть идеи, можно ли запустить виртуальную машину Windows через IronHide для ускорения видеокарты? Я хотел бы играть в игры / смотреть Blu-ray и т. д., используя мою видеокарту.

решение1

Возможно, здесь поможет объяснение связи между графикой в ​​виртуальном госте и реальной ОС хоста.

Сначала основы:

Все в виртуальном госте является абстракцией. Это означает, что каждое устройство и драйвер в виртуальной гостевой ОС не зависят от фактического хост-устройства и драйвера.

Приведу простой пример. Мышь рассматривается как определенное устройство — ядро ​​Linux видит это устройство и позволяет гостевой операционной системе использовать его. Это «виртуальное устройство» сопоставляется с реальным физическим устройством с помощью инструмента виртуализации — VirtualBox, VMWare, Xen и т. д. Таким образом, гостевой операционной системе никогда не нужно понимать, что такое физическая мышь, она видит только то, что сопоставил с ней инструмент виртуализации. Ценность этого подхода в том, что вы можете перемещать виртуального гостя на разные хосты — он будет работать одинаково, поскольку нет прямой зависимости от самого хоста.

Чтобы продемонстрировать это на практике, вы можете запустить систему lsusbкак на хосте, так и на госте. На моем хосте O/SI есть следующие 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

На моем гостевом онейрическом O/SI видны следующие USB-устройства, отличающиеся от хоста:

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

Любая гостевая операционная система, будь то Windows или Linux, будет видеть только это виртуальное гостевое устройство.

Хост-графика против гостевой графики

То же самое касается и графики.

Моя хост-графика:

 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)

На моей гостевой онейрической ОС отображается следующая видеокарта — как видите, она не та же самая, что и на хосте:

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

Аналогично — гостевая ОС Windows увидит только аналогичное виртуальное гостевое устройство.

В темном мире VirtualBoxГостевые дополнениякоторый вы можете установить вручную (или в 11.10 -жокейвидит и рекомендует вам установить его) устанавливает дополнительные модули ядра (или драйверы устройств для гостевых ОС Windows), чтобы предоставить гостевой ОС расширенный доступ к графике вашей хостовой ОС. Опять же, это не прямое отображение, но позволяет увидеть ускоренную 3D-графику.

Если приложение внутри вашей виртуальной машины использует 3D-функции через программный интерфейс OpenGL (или для гостевой ОС Windows — вызовы DirectX), то вместо их программной эмуляции (что было бы медленно) VirtualBox попытается использовать 3D-оборудование вашего хоста.

Я еще раз подчеркиваю, гостевая ОС не видит вашу фактическую видеокарту, она просто передает вызов OpenGL (или DirectX) от гостевой ОС напрямую оборудованию хоста для обработки.

введите описание изображения здесь

В настройках VirtualBox вам следует изменить настройки памяти видеокарты и 3D-графики. Ваша гостевая ОС увидит "3D-ускоренную карту" с 128 Мб ОЗУ. Неважно, лучше ли ваша хостовая видеокарта, чем эта - ваша гостевая ОС увидит только эту "простую" абстрактную виртуальную видеокарту.

Поскольку вы упомянули, что используете гостевую ОС Windows, флажок 2D применим к вам, поскольку аналогичнаяпройти черезвыполняется вызовов интерфейса программирования.

Bumblebee/IronHide — это механизм переключения графики «или-или» — вы используете либо интегрированную графику, либо более производительную графику NVidia/ATI, но не обе одновременно.

Поскольку возможности OpenGL (или DirectX) более высокой переключаемой графики больше, чем у интегрированного набора микросхем, вы увидите относительно улучшенную графическую производительность с графически интенсивными приложениями гостевой ОС. Однако это улучшение не столь драматично, как запуск того же приложения нативно на хосте, поскольку оно все еще работает в рамках ограничений виртуального гостевого графического устройства объемом 128 МБ.

источник

решение2

Ответ вышеhttps://askubuntu.com/a/85138/38052объясняет, как все, что видит гостевой O/S, является своего рода абстракцией. Хотя это было совершенно верно, я считаю, что все меняется, и это может быть уже не совсем верно.

Некоторые новые процессоры также поддерживают виртуализацию ввода-вывода MMU. Технологии называются Intel VT-d для версии Intel и AMD-Vi для версии AMD. Цитата из статьи Википедии о виртуализации x86:

Виртуализация MMU ввода-вывода Intel (AMD-Vi и VT-d) Основная статья: IOMMU

Блок управления памятью ввода-вывода (IOMMU) позволяет гостевым виртуальным машинам напрямую использовать периферийные устройства, такие как Ethernet, ускоренные графические карты и контроллеры жестких дисков, через DMA и перераспределение прерываний. Иногда это называется PCI passthrough. И AMD, и Intel выпустили спецификации:

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

Это звучит довольно интересно, но я уже предвижу некоторые проблемы. Во-первых, в ноутбуках Optimus Intel IGP всегда отображает конечный вывод на экран. Мне неясно, как гостевая ОС и хостовая ОС будут управлять IGP. Одна из мыслей заключается в том, что если можно запустить хост без какой-либо графики, пока работают гости, это можно было бы заставить работать, но мне неясно, как это можно сделать на самом деле.

решение3

Ладно, мне стало любопытно, и я попробовал это.

QEMU, а теперь и VirtualBox, поддерживают сквозную передачу устройств PCI на гостевую машину. Это означает, что если у вас есть вторая видеокарта, вы можете передать ее гостевой системе Windows на хосте Linux и получить полную производительность 3D (игры) в виртуализированной среде Windows. Это касается настольной системы с двумя видеокартами. Диспетчер устройств покажет "NVIDIA GTX... что угодно" вместо "Virualbox Graphics Adapter".

Optimus всегда сложнее. Я тестирую это на ASUS UX501. Мне удалось пропустить чип NVidia в гостевую систему Windows, и он отображается в диспетчере устройств как «3D Video Controller». Но мне не удалось установить драйверы Windows для его поддержки. Кажется, наличие графики Intel является обязательным условием.

sarang был прав, что заподозрил. Похоже, что чип nvidia — это не «видеоадаптер», который управлял бы монитором, а просто ускоритель для интегрированного чипа intel. Они, похоже, не функционируют как два отдельных устройства независимо.

решение4

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

В некоторых случаях возможно пропустить DGPU (см. ссылку выше). Мне удалось это сделать на моем Dell 7710 с Quadro m5000m DGPU, пропущенным с хоста Ubuntu на гостевую систему Windows 10.

Однако, насколько мне известно, вывести вывод с этой карты на главный экран ноутбука с помощью аппаратных средств невозможно. Я думаю, что Looking Glass, вероятно, является лучшим вариантом на данный момент, за ним следует Steam для потоковой передачи дома / RDP и т. д.

Я хотел бы знать, почему невозможно просто управлять мультиплексором в мультиплексированных ноутбуках, чтобы переключаться между IGPU и DGPU по желанию. Я попытался сделать это через VGA Switcheroo, но не смог вообще управлять мультиплексором даже до передачи через DPU в гостевую ОС.

Думаю, ноутбуки без мультиплексора будут более сложными, поскольку, по крайней мере, потребуют некоторого взаимодействия между гостем и хостом для управления тем, какой графический процессор записывает данные в тот или иной бит буфера кадра. Это выше моего понимания.

Связанный контент