[Mesa-dev] [PATCH] clover: Check for executables before enqueueing a kernel

Francisco Jerez currojerez at riseup.net
Thu Dec 29 23:37:30 UTC 2016


Pierre Moreau <pierre.morrow at free.fr> writes:

> Without this check, the kernel::bind() method would fail with a
> std::out_of_range exception, letting an exception escape from the
> library into the client, rather than returning the corresponding error
> code CL_INVALID_PROGRAM_EXECUTABLE.
>
> Signed-off-by: Pierre Moreau <pierre.morrow at free.fr>

Reviewed-by: Francisco Jerez <currojerez at riseup.net>

> ---
>  src/gallium/state_trackers/clover/api/kernel.cpp | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/state_trackers/clover/api/kernel.cpp b/src/gallium/state_trackers/clover/api/kernel.cpp
> index 73ba34abe8..e3d75af972 100644
> --- a/src/gallium/state_trackers/clover/api/kernel.cpp
> +++ b/src/gallium/state_trackers/clover/api/kernel.cpp
> @@ -215,7 +215,10 @@ namespace {
>              }, kern.args()))
>           throw error(CL_INVALID_KERNEL_ARGS);
>  
> -      if (!count(q.device(), kern.program().devices()))
> +      // If the command queue's device is not associated to the program, we get
> +      // a module, with no sections, which will also fail the following test.
> +      auto &m = kern.program().build(q.device()).binary;
> +      if (!any_of(type_equals(module::section::text_executable), m.secs))
>           throw error(CL_INVALID_PROGRAM_EXECUTABLE);
>     }
>  
> -- 
> 2.11.0
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161229/115d2591/attachment.sig>


More information about the mesa-dev mailing list