diff --git a/src/gallium/state_trackers/clover/api/program.cpp b/src/gallium/state_trackers/clover/api/program.cpp index e874c51ad7d..b167904377f 100644 --- a/src/gallium/state_trackers/clover/api/program.cpp +++ b/src/gallium/state_trackers/clover/api/program.cpp @@ -142,12 +142,17 @@ clBuildProgram(cl_program prog, cl_uint count, const cl_device_id *devs, (!pfn_notify && user_data)) throw error(CL_INVALID_VALUE); - if (any_of([&](const cl_device_id dev) { - return !prog->ctx.has_device(dev); - }, devs, devs + count)) - throw error(CL_INVALID_DEVICE); + if (devs) { + if (any_of([&](const cl_device_id dev) { + return !prog->ctx.has_device(dev); + }, devs, devs + count)) + throw error(CL_INVALID_DEVICE); + + prog->build({ devs, devs + count }); + } else { + prog->build(prog->ctx.devs); + } - prog->build({ devs, devs + count }); return CL_SUCCESS; } catch (error &e) {