xpra icon
Bug tracker and wiki

This bug tracker and wiki are being discontinued
please use https://github.com/Xpra-org/xpra instead.

Opened 7 years ago

Last modified 4 months ago

#466 closed task

nvenc improvements — at Version 2

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: minor Milestone:
Component: server Version:
Keywords: Cc:

Description (last modified by Antoine Martin)

split from #370:

  • zero out the image padding since it does get encoded!
  • honouring max_block_sizes, max_grid_sizes and max_threads_per_block - doesn't seem to be causing problems yet
  • handle YUV444P mode - needs docs (apparently not supported by the hardware??)
    • then we can handle quality changes by swapping the kernel we use (NV12 / {{{YUV444P}})
  • handle resize without re-init
  • handle speed/quality changes with nvEncReconfigureEncoder (with edge resistance if it causes a new IDR frame)
  • allocate memory when needed rather than keeping it allocated for the duration of the encoder (fit more encoders on one card)
  • upload pixels in place? (skip inputBuffer)
  • deal with GPU suspend-resume cycles (see r5110 for opencl in #422) - here is the CUDA error with nvenc:
      File "encoder.pyx", line 1588, in xpra.codecs.nvenc.encoder.Encoder.compress_image (xpra/codecs/nvenc/encoder.c:12085)
      File "encoder.pyx", line 1624, in xpra.codecs.nvenc.encoder.Encoder.do_compress_image (xpra/codecs/nvenc/encoder.c:12598)
    LogicError: cuMemcpyHtoD failed: invalid/unknown error code

Lower priority:

  • choose the cuda device using gpuGetMaxGflopsDeviceId: max_gflops = device_properties.multiProcessorCount * device_properties.clockRate;
  • handle other RGB modes in kernel (easy - allows us to run in big endian servers)
  • access nvenc encoder statistics info?
  • try using nvenc on win32 for shadow servers
  • when downscaling automatically (one of the dimensions is >4k), we don't need to downscale both dimensions by the same ratio: a very wide window could be downscaled horizontally only

Change History (3)

comment:1 Changed 7 years ago by Antoine Martin

Description: modified (diff)
Owner: changed from Antoine Martin to Antoine Martin
Status: newassigned

comment:2 Changed 7 years ago by Antoine Martin

Description: modified (diff)

Changed 7 years ago by Antoine Martin

Attachment: nvenc-yuv444p.patch added

YUV444 for NVENC: using 3 pass encoding (one for each of Y, U and V)

Note: See TracTickets for help on using tickets.