[Feature] Support Hyper-V GPU Partitioning (GPU-P) / VMBus Paravirtualized & SR-IOV vGPU devices
Maintainers usually reply within 2 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 15/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- macos, rust
- Domain
- backend, operating-systems
Research direction
Start by reading the NVRM.kext, NVAccel.kext, NVRMFB.kext, and NVMTLDriver / NVK initialization paths named in the issue, then determine whether Hyper-V GPU-P exposes a usable PCIe VF or requires a VMBus bridge. The issue describes alternative architectures but does not identify files or tests; done means initializing GPU-P devices and providing Metal 3 acceleration in the specified macOS VM.
Written by the indexing model from the issue text.
Description
What should it do, and why does it matter to you?
What should it do, and why does it matter to you?
What it should do
Enable nvidia-macos-driver (NVRM.kext, NVAccel.kext, NVRMFB.kext, and the NVMTLDriver / NVK stack) to initialize and provide Metal 3 hardware acceleration when running inside a Hyper-V Generation 2 macOS virtual machine configured with GPU Partitioning (GPU-P) (Add-VMGpuPartitionAdapter).
Specifically, this would involve supporting one or both of the following paths depending on architectural feasibility:
- SR-IOV / Virtual Function (VF) Enumeration in
NVRM.kext: AllowNVRM(built on NVIDIA's open kernel modules r610+) to detect, attach to, and initialize partitioned NVIDIA Virtual Functions or hypervisor-passthrough devices where the GSP firmware is already initialized by the host hypervisor (skipping bare-metal physical GSP boot/reset sequences and physical display head probing when running headless/virtualized), while binding a virtual display/headless framebuffer inNVRMFBsoWindowServercan composite viaNVAccel. - Hyper-V VMBus (
hv_vmbus) / Paravirtualized Transport Bridge: On client Windows 10/11 Hyper-V,Add-VMGpuPartitionAdapterexposes the partitioned GPU over VMBus (SYNTH3D/dxgkrnlparavirtualized channel) rather than a raw PCIe BAR. IfNVRM.kextrequires direct PCIe MMIO/BAR access that client GPU-P does not expose via PCIe, an alternative paravirtualized kernel shim (or forwarding command buffers fromNVK/NVAccelover a VMBus guest kext to the host GPU partition) would allow the userspace Metal-to-SPIR-V/NVK translator to execute workloads on the host NVIDIA partition.
At a minimum, having NVRM gracefully handle hypervisor presence checks (CPUID hypervisor bit), small/partitioned BAR1 allocations, and virtualized/headless display output without stalling at PCI configuration or failing GSP handshake when a GPU is shared would unlock virtualized workflows.
Why it matters to me
Running macOS 15 Sequoia / 26 Tahoe inside Hyper-V on Windows 11 is an essential workflow for cross-platform developers and systems engineers, particularly on single-GPU desktops and Optimus/hybrid laptops (e.g., Intel + RTX 40-series Mobile) where Full PCIe Passthrough / Discrete Device Assignment (DDA) is either unsupported on client Windows or leaves the host OS without a GPU.
- Zero-Reboot Cross-Platform Development: With GPU-P, the Windows host retains full access to the RTX GPU while dynamically sharing a fraction of VRAM and compute with the macOS VM. We can test and build macOS software, Xcode projects, Metal shaders, and audio/graphics plugins alongside native Windows tools simultaneously without dual-booting or sacrificing the GPU exclusively to a single OS.
- Laptop & Single-GPU Viability: On laptops with muxless/Optimus RTX GPUs where display outputs are wired to the iGPU and IOMMU groups prevent clean bare-metal passthrough, Hyper-V GPU-P is the only way to allocate NVIDIA hardware acceleration to a guest VM on Windows.
- Headless & Remote Compositing: Combined with
NVAcceland a virtualized framebuffer inNVRMFB, GPU-P support would transform sluggish CPU-rendered macOS VMs under Hyper-V into fully Metal 3-accelerated environments at near-native responsiveness.
- Dominant language
- Rust
- Stars
- 2.5k
- Forks
- 233
- Avg merge
- 3d 14h
- Merged PRs (30d)
- 14
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from nullmoth/nvidia-macos-driver
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nullmoth/nvidia-macos-driver#141 · 1 comment ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
nullmoth/nvidia-macos-driver#28 ·
Maintainers usually reply within 2 days
-
bug
Difficulty 5/5 Over a week Newbie friendliness 20/100
nullmoth/nvidia-macos-driver#452 ·
Maintainers usually reply within 2 days
-
bug
Difficulty 5/5 Over a week Newbie friendliness 25/100
nullmoth/nvidia-macos-driver#451 ·
Maintainers usually reply within 2 days
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 42/100
nullmoth/nvidia-macos-driver#449 · 1 comment ·
Maintainers usually reply within 2 days
All issues in nullmoth/nvidia-macos-driver
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
compiler P4 perf
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
HerringtonDarkholme/hd-lang#1044 ·
Maintainers usually reply within 1 day
-
good first issue help wanted r-docs
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
servo/rust-smallvec#824 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
akitaonrails/ai-usagebar#552 ·
Maintainers usually reply within 1 day