Expand description
A Rust adapter for the Khronos OpenCL API.
§Description
A functional, safe Rust interface to the Khronos OpenCL 3.0
C API
based upon the opencl-sys OpenCL
FFI bindings.
OpenCL 3.0
is a unified specification that adds little new functionality to previous OpenCL
versions.
It specifies that all OpenCL 1.2
features are mandatory, while all
OpenCL 2.x
and OpenCL 3.0
features are now optional.
§Design
This crate applies the adapter pattern
to convert OpenCL
C API functions into Rust functions that return a
Result containing the desired result of
the C function or the OpenCL
error code.
The exception is svm_free
, which just provides a safe wrapper for the
clSVMFree
C API function.
The API for OpenCL
versions and extensions are controlled by Rust features such as
“CL_VERSION_2_0
” and “cl_khr_gl_sharing
”. To enable an OpenCL
version, the feature
for that version and all previous OpenCL
versions must be enabled,
e.g. for “CL_VERSION_2_0
”; “CL_VERSION_1_1
” and “CL_VERSION_1_2
” must also be enabled.
The default features are “CL_VERSION_1_1
” and “CL_VERSION_1_2
”.
Rust deprecation warnings are given for OpenCL
API functions that are
deprecated by an enabled OpenCL
version e.g., clCreateCommandQueue
is
deprecated whenever “CL_VERSION_2_0
” is enabled.
Most of the modules are named after their equivalent OpenCL
“API” sections in
cl.h.
They contain Rust adapter functions for the OpenCL
API C functions defined
in those sections with their associated types and constants. The exceptions are:
error_codes
- contains theOpenCL
API error codes from cl.h and a function (error_text
) to convert an error code to it’s enum name from cl.h.info_type
- contains a Rust enum (InfoType
) to hold theOpenCL
types that can be returned fromOpenCL
“Info” functions, e.g. clGetPlatformInfo, clGetDeviceInfo, clGetProgramInfo, etc.macros
- contains Rust macros to call theOpenCL
“Info” functions and return the appropriateInfoType
in a Rust Result.
It is vital to call the correct InfoType
method type when decoding the
result of “Info” functions, since the methods will panic if called with the
wrong type, see info_type
.
§Use
See cl3.
§License
Licensed under the Apache License, Version 2.0, as per Khronos Group OpenCL
.
You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
OpenCL
and the OpenCL
logo are trademarks of Apple Inc. used under license by Khronos.
Modules§
OpenCL
Command Queue API.OpenCL
Context API.- FFI bindings for
cl_d3d10.h
cl_d3d10.h
containsOpenCL
extensions that provide interoperability withDirect3D
10.OpenCL
extensions are documented in the OpenCL-Registry - FFI bindings for
cl_d3d11.h
cl_d3d11.h
containsOpenCL
extensions that provide interoperability withDirect3D
11.
OpenCL
extensions are documented in the OpenCL-Registry OpenCL
Device API.- FFI bindings for
cl_dx9_media_sharing.h
cl_ecl_dx9_media_sharing.h
containsOpenCL
extensions that provide interoperability withDirect3D
9.
OpenCL
extensions are documented in the OpenCL-Registry OpenCL
OpenGL
ES Interoperability API.OpenCL
API Error Codes.OpenCL
Event Object API.OpenCL
extensions that don’t have external (OpenGL, D3D) dependencies. See: OpenCL Extension SpecificationOpenCL
OpenGL
Interoperability API.OpenCL
Kernel Object API.OpenCL
Memory Object API.OpenCL
Platform API.OpenCL
Program Object API.OpenCL
Sampler API.OpenCL
API data types.