xpra icon
Bug tracker and wiki

Opened 11 months ago

Closed 2 months ago

#1347 closed enhancement (fixed)

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 (3)

comment:1 Changed 7 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 5 months 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)

comment:3 Changed 2 months ago by Antoine Martin

Resolution: fixed
Status: assignedclosed

Not sure how I got it to work on MS Windows in the past, but since it just refuses to work with the latest code, r16455 disables it on win32.
See ticket:1552#comment:4 for details. No big loss since we often get the buffers from NVFBC anyway (#1317) so doing the CSC via CUDA is cheap.

Note: See TracTickets for help on using tickets.