mirror of
https://github.com/games-on-whales/wolf.git
synced 2026-10-15 21:12:08 +00:00
[PR #439] [CLOSED] fix(nvidia): zero-copy via dmabuftocuda #468
Labels
No labels
🧠 1 - 🤖 999
AMD
bug
bug
cannot reproduce
documentation
duplicate
easy
enhancement
enhancement
enhancement
fixed?
fixed?
good first issue
hard
help wanted
Intel
invalid
LXC
medium
moonlight-protocol
Multi GPU
nixos
not a bug
nvidia
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/wolf#468
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/games-on-whales/wolf/pull/439
Author: @JBailes
Created: 6/21/2026
Status: ❌ Closed
Base:
stable← Head:fix/nvidia-zero-copy📝 Commits (1)
10db502fix(nvidia): zero-copy via dmabuftocuda📊 Changes
2 files changed (+13 additions, -2 deletions)
View changed files
📝
src/moonlight-server/state/configTOML.cpp(+6 -1)📝
src/moonlight-server/state/default/config.v7.toml(+7 -1)📄 Description
Nvidia zero-copy was broken. The producer pushed
memory:CUDAMemoryover the interpipe; CUDAMemory can't cross it (bound to a CUDA context the per-client consumer do't share), andcudauploadhas nomemory:DMABufsink caps, so it can't import the dmabuf either.VAAPI works because it carries a DMABuf over the interpipe. This makes Nvidia do the same.
Fix (2 files):
memory:CUDAMemory→memory:DMABuf, drm-format=NV12video_params_zero_copy:cudaupload→queue ! dmabuftocudadmabuftocudaimports the dmabuf into CUDA in the consumer (EGLImage, no sysmem copy), where the encoder's CUDA context lives.Needs: gst-wayland-display built with the cuda feature (provides
dmabuftocuda). The Dockerfile pin predates it bump the pin.Tested on an RTX 5080: the chain
waylanddisplaysrc → DMABuf(NV12) → interpipe → queue → dmabuftocuda → cudaconvertscale → CUDAMemory → nvh265encencodes H.265. Daemon boots loggingUsing zero copy pipeline on Nvidia. Not run: a live Moonlight session.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.