rusticl/kernel: Fix creation from programs not built for every device

OpenCL does not require that a kernel is created for every device. So we
shouldn't assume there is a build for every device.

API validation around launching kernels already takes this possibility
into account.

I did not verify if the commit below is actually the culprit and whether
this bug existed before that, but a fix for older code also would have to
look differently anyway.

Fixes: 323dcbb4b5 ("rusticl: Move NirKernelBuild to ProgramDevBuild")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9968
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25696>
This commit is contained in:
Karol Herbst
2023-10-13 00:06:51 +02:00
committed by Marge Bot
parent 734bbe33cf
commit 65b663cc9d

View File

@@ -788,7 +788,7 @@ impl Kernel {
let builds = prog_build
.builds
.iter()
.map(|(k, v)| (*k, v.kernels.get(&name).unwrap().clone()))
.filter_map(|(&dev, b)| b.kernels.get(&name).map(|k| (dev, k.clone())))
.collect();
// can't use vec!...