After wasting quite a bit of time trying to get hardware transcoding to work under the docker image, I had kind of a “revelation” that I just want to share with anyone trying to get intel QuickSync hardware transcoding to work under a Container approach:
Check your device names!
In my case, under /dev/dri, I had two devices (card0 and card1). Running Plex under the main system with an X server always online, I never had issues on the recoding part of transcoding apparently (using card0/renderD128, a.k.a. nVidia), but ALSO APPARENTLY, Plex never used my intel GPU (a.k.a. card1/renderD129) for any transcoding whatsoever. It turns out that, when running in Docker, Plex refused to use my nVidia transcoding, which forced me to discover that I could “rename” the devices in a docker-compose file thusly:
...
devices:
# My dri devices are weird and my Intel, which I want to share,
# is the card1 and renderD129. So I force an odd mapping.
- /dev/dri/card1:/dev/dri/card0
- /dev/dri/renderD129:/dev/dri/renderD128
...
And after that, my Dockerized Plex just up and started doing hwdec and hwenc for transcoding like it was nothing.
Hope this helps anyone “stuck” having multiple GPUs and wanting to do hardware transcoding with one and still keep the other.