xpra icon
Bug tracker and wiki

Opened 8 months ago

Last modified 8 weeks ago

#1347 assigned enhancement

nvenc RGB pixel upload mode

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: major Milestone: 2.1
Component: encodings Version: trunk
Keywords: Cc:


Split from #1260, see also #1308 (10-bit).
Saves us doing the CSC conversion using CUDA - though we may still want to keep this code around for older cards / drivers.

Change History (2)

comment:1 Changed 4 months ago by Antoine Martin

Milestone: 2.02.1
Status: newassigned

Makes sense to deal with this one at the same time as #1317 and #1308.

comment:2 Changed 8 weeks ago by Antoine Martin


  • preparatory work in r15770: splitting code into more re-usable methods
  • RGB upload supported added in r15778: the CUDA kernel step is now optional, RGB mode uploads straight to the encoder's input buffer (confusingly called CUDA output buffer.. since this is normally the output of the CUDA kernel)

We also gained:

  • more fine-grained attributes: the "YUV444" and "lossless" flags are now per-codec. (ie: we don't disable them globally for "H264" if "HEVC" doesn't support it - and vice versa)
  • ability to turn off some input formats using env vars: XPRA_NVENC_NATIVE_RGB=0, XPRA_NVENC_YUV420P=0 and XPRA_NVENC_YUV444P=0.

Tested on MS Windows only with NVFBC (#1317) because the NVENC encoder refuses to run on my Linux system: with the GTX 1070 it crashes, with other cards it errors out (and the exact same card and code work on MS Windows!)

I am keeping this ticket open because I would like to test RGB upload on Linux. (maybe try a different card, or diff the long list of API call arguments with a working example: ffmpeg or the samples provided)

Note: See TracTickets for help on using tickets.