1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
// Copyright (c) 2022-2024 Via Technology Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//![![crates.io](https://img.shields.io/crates/v/opencl-sys.svg)](https://crates.io/crates/opencl-sys)
//! [![docs.io](https://docs.rs/opencl-sys/badge.svg)](https://docs.rs/opencl-sys/)
//! [![OpenCL 3.0](https://img.shields.io/badge/OpenCL-3.0-blue.svg)](https://www.khronos.org/registry/OpenCL/)
//! [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
//! ![Rust](https://github.com/kenba/cl3/workflows/Rust/badge.svg)
//!
//! `OpenCL` C FFI bindings for the Rust programming language.
//!
//! # Description
//!
//! Rust [FFI](https://doc.rust-lang.org/nomicon/ffi.html) Bindings to the Khronos
//! [OpenCL C language headers](https://github.com/KhronosGroup/OpenCL-Headers),
//! see the [OpenCL Resource Guide](https://www.khronos.org/opencl/resources).
//!
//! The API for `OpenCL` versions and extensions are controlled by Rust features such as
//! "`CL_VERSION_2_0`" and "`cl_khr_gl_sharing`".
//! 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.
//!
//! The Rust FFI files attempt to match the format and layout of the original
//! C source files instead of [bindgen](https://rust-lang.github.io/rust-bindgen/)
//! output files to ease maintenance.
//!
//! The library is declared [no_std](https://docs.rust-embedded.org/book/intro/no-std.html).
//!
//! ## Use
//!
//! `OpenCL` requires that an appropriate `OpenCL` hardware driver(s) and an `OpenCL` Installable Client Driver (ICD) are installed.
//! `OpenCL` GPU hardware driver(s) are installed with graphics drivers by the main manufacturers: Nvidia, AMD and Intel.
//! However, an `OpenCL` ICD must usually be installed manually by:
//!
//! - a Linux package manager, e.g., `sudo apt-get install intel-opencl-icd`
//! - or a Windows download and install from
//! <https://www.intel.com/content/www/us/en/developer/articles/technical/intel-cpu-runtime-for-opencl-applications-with-sycl-support.html>
//!
//! Note: you do *not* need to install an `OpenCL` ICD from the same manufacturer as your hardware.
//! In general the more up to date the `OpenCL` ICD, the better.
//!
//! ## Contribution
//!
//! If you want to contribute through code or documentation, the [Contributing](CONTRIBUTING.md)
//! guide is the best place to start.
//! If you have any questions, please feel free to ask.
//! Just please abide by our [Code of Conduct](CODE_OF_CONDUCT.md).
//!
//! ## 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>
//!
//! Unless you explicitly state otherwise, any contribution intentionally submitted
//! for inclusion in the work by you, as defined in the Apache-2.0 license,
//! shall be licensed as above, without any additional terms or conditions.
//!
//! `OpenCL` and the `OpenCL` logo are trademarks of Apple Inc. used under license by Khronos.
#![no_std]
extern crate libc;
// Corresponds to opencl.h
mod cl;
mod cl_ext;
// Note: The Intel extensions have been moved into cl_ext.h.
// pub mod cl_ext_intel
mod cl_gl;
mod cl_platform;
// Note: All OpenGL-related extensions have been moved into cl_gl.h.
// pub mod cl_gl_ext
pub use self::cl::*;
pub use self::cl_ext::*;
pub use self::cl_gl::*;
pub use self::cl_platform::*;
pub mod cl_d3d10;
pub mod cl_d3d11;
pub mod cl_dx9_media_sharing;
// Note: Intel DX9 media sharing extensions have been moved into cl_dx9_media_sharing.h.
// pub mod cl_dx9_media_sharing_intel
pub mod cl_egl;
pub mod cl_function_types;
pub mod cl_icd;
pub mod cl_layer;