From: Pierre Moreau Date: Sat, 27 Jan 2018 17:12:16 +0000 (+0100) Subject: clover/api: Fail if trying to build a non-executable binary X-Git-Tag: upstream/19.3.0~8687 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bad161c8948649eabf29cfedb1cad4247c884616;p=platform%2Fupstream%2Fmesa.git clover/api: Fail if trying to build a non-executable binary From the OpenCL 1.2 Specification, Section 5.6.2 (about clBuildProgram): > If program is created with clCreateProgramWithBinary, then the > program binary must be an executable binary (not a compiled binary or > library). Reviewed-by: Aaron Watry Reviewed-by: Francisco Jerez --- diff --git a/src/gallium/state_trackers/clover/api/program.cpp b/src/gallium/state_trackers/clover/api/program.cpp index 891a002..ac8bc8a 100644 --- a/src/gallium/state_trackers/clover/api/program.cpp +++ b/src/gallium/state_trackers/clover/api/program.cpp @@ -186,6 +186,13 @@ clBuildProgram(cl_program d_prog, cl_uint num_devs, if (prog.has_source) { prog.compile(devs, opts); prog.link(devs, opts, { prog }); + } else if (any_of([&](const device &dev){ + return prog.build(dev).binary_type() != CL_PROGRAM_BINARY_TYPE_EXECUTABLE; + }, devs)) { + // According to the OpenCL 1.2 specification, “if program is created + // with clCreateProgramWithBinary, then the program binary must be an + // executable binary (not a compiled binary or library).” + throw error(CL_INVALID_BINARY); } return CL_SUCCESS;