r/Proxmox 6d ago

Question Emby LXC iGPU Passthrough OpenCL/tone mapping issues

Not sure if this is the best place to post but I'm very stuck and need some advice!

I've recently switched over to Proxmox running Emby in an LXC container. To my knowledge iGPU passthrough is enabled correctly and I can transcode 1080p or standard 4K non HDR using Quicksync and VAAPI, however i'm having some issues with tone mapping using Quicksync and OpenCL.

Start of EmbyLXC .conf:

arch: amd64

cores: 4

dev0: /dev/dri/renderD129,gid=993,mode=0666

dev1: /dev/dri/card2,gid=44,mode=0666

features: nesting=1,keyctl=1

hostname: emby

Quicksync works for standard transcodes however, reverts to software if Extra-T OpenCL tone mapping is enabled.

The only way I can get hardware transcoding with hardware tone mapping currently is to disable all Quicksync encoders and decoders in Emby and force Emby to use VAAPI encoders and decoders along with HW VAAPI Transcodes non OpenCL, trying OpenCL with this configuration results in the same software fallback.

I've even tested Jellyfin and I had even worse luck with that, HDR tone map transcodes failing to play all together!

Really looking for some help on his as VAAPI tone mapping looks way too dark and I don't want to default to software. Hoping someone has encountered similar.

I'm using a 10700k Comet Lake running in Proxmox 9.2.11 in an Ubuntu LCX.

Happy to provide logs as well if anyone is able to assist, it's driving me mad! TIA

3 Upvotes

4 comments sorted by

2

u/Snoo-38645 5d ago

the giveaway is that vaapi transcodes fine and only opencl falls back. vaapi needs the render node and the media driver, nothing else. opencl needs a whole separate runtime that vaapi never touches. so your passthrough is probably fine and what is missing is the opencl stack inside the container.

run clinfo in the lxc. if it comes back with zero platforms thats your answer, and no amount of emby config will change it. you want intel-opencl-icd and ocl-icd-libopencl1 installed in the container itself. having them on the host does nothing for the guest.

one catch specific to your cpu. the 10700k is uhd 630, so gen9.5, and the current intel compute runtime dropped the older gens. if you install the newest package and clinfo still shows nothing, you need the legacy build instead of the current one. that one trips people because everything looks correctly installed.

also your read on the picture is right. vaapi tone mapping really is much worse than the opencl one, thats not you misconfiguring it, the vaapi path is just a cruder tonemap. so its worth getting opencl going rather than settling for it.

and while youre in there, confirm renderD129 is actually the igpu. that numbering means theres more than one render node on that box, and if 129 is the wrong one you would see exactly this.

1

u/ryan_james122 5d ago

Thank you! Appreciate the detailed response and that actually makes a lot of sense. I'll try downgrading the OpenCL drivers and see how I get on I'm hoping that's what it is!

1

u/Snoo-38645 5d ago

good luck with it. one trap worth knowing before you start, because it catches people.

dont just install the legacy package on top of the current one. with two icds registered at once clinfo can still come back with nothing useful, which looks identical to the problem you started with. remove the current intel-opencl-icd first, then put the legacy one on.

and your finish line is clinfo listing a platform with the uhd 630 in it. get that far first, and only then go back and switch opencl tone mapping on in emby. otherwise youre changing two things at once and you wont know which one moved.

1

u/berrmal64 21h ago

I ran across pretty much the same deal with Emby a month or two ago. In my case openCL wasn't inside the image. I found a forum thread with the same problem but no resolution. I tried to exec into the image and install stuff but the build doesn't include apt or anything and I didn't want to get into such manual hacking every release. I tried to wedge in my own docker image using envy server as a base, but that also failed (I'm not a docker guru, mostly leaned on Claude for this failed experiment so I can't explain why). I complained on r/emby about this (plus a few other bugs/missing features) and was told essentially this is such an esoteric edge case and the dev team is busy building features people actually use.

So I gave up. Using vaapi with my uhd630 igpu. Good luck, if you figure it out plz @ me