mwj*_*son 8 virtualbox nvidia-optimus bumblebee
任何想法是否可以通过 IronHide 运行 Windows VM 以进行显卡加速?我想用我的显卡玩游戏/看蓝光等。
也许对虚拟客户机中的图形和实际主机 O/S 中的图形之间的解释会有所帮助。
虚拟客户中的一切都是抽象的——这意味着虚拟客户操作系统中的每个设备和驱动程序都不依赖于实际的主机设备和驱动程序。
给大家举个简单的例子。鼠标被视为特定设备 - 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
Run Code Online (Sandbox Code Playgroud)
在我的访客 oneiric 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
Run Code Online (Sandbox Code Playgroud)
任何来宾操作系统,无论是 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)
Run Code Online (Sandbox Code Playgroud)
在我的来宾 oneiric O/S 上,它可以看到以下图形卡 - 您可以看到它与主机不同:
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
Run Code Online (Sandbox Code Playgroud)
同样 - Windows 来宾 O/S 将只能看到类似的虚拟来宾设备。
在 VirtualBox 的阴暗世界中,您可以手动安装的Guest Additions(或在 11.10 - jockey看到并建议您安装它)安装额外的内核模块(或 Windows 来宾的设备驱动程序)以允许来宾操作系统增强访问您的主机操作系统图形。同样,它不是直接映射 - 但允许看到 3D 加速图形。
如果虚拟机中的应用程序通过 OpenGL 编程接口(或 Windows 客户机操作系统 - 它的 DirectX 调用)使用 3D 功能,而不是在软件中模拟它们(这会很慢),VirtualBox 将尝试使用主机的3D 硬件。
我再次强调,客户操作系统看不到您的实际显卡,它只是将来自客户的 OpenGL(或 DirectX)调用直接传递给主机硬件进行处理。
在 VirtualBox 设置中,您应该更改视频卡内存和 3D 显卡设置。然后,您的访客操作系统将看到具有 128Mb RAM 的“3D 加速卡”。您的主机显卡是否比这更好并不重要 - 您的客户操作系统只会看到这个“简单”的抽象虚拟显卡。
由于您提到您使用的是 Windows 客户机操作系统 - 2D 复选框适用于您,因为执行了类似的编程接口调用传递。
Bumblebee/IronHide 是一种非此即彼的图形切换机制 - 您正在使用集成显卡或更高容量的 NVidia/ATI 显卡,但不能同时使用两者。
由于更高可切换图形的 OpenGL(或 DirectX)能力比集成芯片组更大,因此您会看到 Guest O/S 图形密集型应用程序的图形性能相对增强。然而,这种改进并不像在主机上本地运行相同的应用程序那么显着,因为它仍然在 128MB 虚拟客户机图形设备的限制内工作。
小智 5
https://askubuntu.com/a/85138/38052上面的答案解释了来宾 O/S 看到的一切都是某种抽象。虽然这曾经是完全正确的,但我相信事情正在发生变化,它可能不再完全正确。
一些较新的处理器还支持 I/O MMU 虚拟化。这些技术在 Intel 版本中称为 Intel VT-d,在 AMD 版本中称为 AMD-Vi。引用有关 x86 虚拟化的维基百科文章:
Intel 的 I/O MMU 虚拟化(AMD-Vi 和 VT-d) 主条目:IOMMU
输入/输出内存管理单元 (IOMMU) 使来宾虚拟机能够通过 DMA 和中断重新映射直接使用外围设备,例如以太网、加速显卡和硬盘驱动器控制器。这有时称为 PCI 直通。AMD 和 Intel 都发布了规格:
Run Code Online (Sandbox Code Playgroud)AMD's I/O Virtualization Technology, "AMD-Vi", originally called "IOMMU". Intel's "Virtualization Technology for Directed I/O" (VT-d).
这听起来很有趣,但我已经可以预见到一些问题。一方面,在 Optimus 笔记本电脑中,英特尔 IGP 始终呈现最终的屏幕输出。我不清楚访客 O/S 和主机 O/S 将如何驱动 IGP。一种想法是,如果可以在来宾运行时在没有任何图形的情况下运行主机,这可以起作用,但我不清楚人们将如何实际执行此操作。
归档时间: |
|
查看次数: |
10193 次 |
最近记录: |