Module ocl::raw
[−]
[src]
Thin wrappers for the OpenCL FFI functions and types.
The layer between the metal and the soft fuzzy parts...
Allows access to OpenCL FFI functions with a minimal layer of abstraction providing safety and convenience. Using functions in this module is only recommended for use when functionality has not yet been implemented on the 'standard' ocl interfaces although the 'raw' and 'standard' interfaces are all completely interoperable (and generally feature-equivalent).
Object pointers can generally be shared between threads except for kernel. See clSetKernelArg documentation.
Even Lower Level: cl_h
Not as raw as...
If there's still something missing, or for some reason you need direct FFI access, use the functions in the cl_h
module.
Performance
Performance between all three levels of interface, cl_h
, raw
, and the standard types, is virtually identical for non-trival uses (if not, file an issue).
Safety
At the time of writing, some functions still may break Rust's usual safety promises and have not been comprehensively tested or evaluated. Please file an issue if you discover something!
Panics
[FIXME]: NEEDS UPDATE:
All functions will panic upon OpenCL error. This will be changing over time. Certain errors will eventually be returned as an Error
type instead.
Official Documentation
OpenCL 1.2 SDK Reference: https://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/
Help Wanted
Please help complete coverage of any FFI functions you may need by filing an issue or creating a pull request.
Coverage of important stuff: 90%.
Coverage of peripheral stuff: 10% - 20%.
raw
Stands Alone
This module (with cl_h and error) may eventually be moved to its own separate crate. ('ocl_raw' or some such... will need a more clever name)
Structs
CommandQueueProperties |
cl_command_queue_properties - bitfield |
CommandQueueRaw |
cl_command_queue |
ContextRaw |
cl_context |
DeviceAffinityDomain |
cl_device_affinity_domain |
DeviceExecCapabilities |
cl_device_exec_capabilities - bitfield |
DeviceFpConfig |
cl_device_fp_config - bitfield |
DeviceIdRaw |
cl_device_id |
DeviceType |
cl_device_type - bitfield |
EventRaw |
cl_event |
ImageDescriptor |
An image descriptor use in the creation of |
ImageFormat |
Image format properties used by |
KernelArgTypeQualifier |
cl_kernel_arg_type_qualifer |
KernelRaw |
cl_kernel |
MapFlags |
cl_map_flags - bitfield |
MemFlags |
cl_mem_flags - bitfield |
MemMigrationFlags |
cl_mem_migration_flags - bitfield |
MemRaw |
cl_mem |
PlatformIdRaw |
cl_platform_id |
ProgramBinaryType |
cl_program_binary_type |
ProgramRaw |
cl_program |
SamplerRaw |
cl_sampler |
Enums
AddressingMode |
cl_addressing_mode |
BufferCreateType |
cl_buffer_create_type |
BuildStatus |
cl_build_status |
Cbool |
cl_bool |
ChannelType |
cl_channel_type |
CommandExecutionStatus |
command execution status |
CommandQueueInfo |
cl_command_queue_info |
CommandType |
cl_command_type |
ContextInfo |
cl_context_info |
ContextInfoAndProperties |
cl_context_info + cl_context_properties |
DeviceInfo |
cl_device_info |
DeviceLocalMemType |
cl_device_local_mem_type |
DeviceMemCacheType |
cl_mem_cache_type |
EventInfo |
cl_event_info |
FilterMode |
cl_filter_mode |
ImageChannelDataType |
Describes the size of the channel data type. The number of bits per element determined by the image_channel_data_type and image_channel_order must be a power of two. The list of supported values is described in the table below. (from SDK) |
ImageChannelOrder |
Specifies the number of channels and the channel layout i.e. the memory layout in which channels are stored in the image. Valid values are described in the table below. (from SDK) |
ImageInfo |
cl_image_info |
KernelArg |
Kernel argument option type. |
KernelArgAccessQualifier |
cl_kernel_arg_access_qualifier |
KernelArgAddressQualifier |
cl_kernel_arg_address_qualifier |
KernelArgInfo |
cl_kernel_arg_info |
KernelInfo |
cl_kernel_info |
KernelWorkGroupinfo |
cl_kernel_work_group_info |
MemInfo |
cl_mem_info |
MemObjectType |
cl_mem_object_type |
PartitionProperty |
cl_partition_property |
PlatformInfo |
cl_platform_info |
Polling |
cl_bool: Polling |
ProfilingInfo |
cl_profiling_info |
ProgramBuildInfo |
cl_program_build_info |
ProgramInfo |
cl_program_info |
SamplerInfo |
cl_sampler_info |
Constants
Functions
build_program |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
compile_program |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
context_info |
Returns context information. |
create_buffer |
Returns a new buffer pointer with size (bytes): |
create_build_program |
Creates, builds, and returns a new program pointer from |
create_command_queue |
Returns a new command queue pointer. |
create_context |
Returns a new context pointer valid for all devices in |
create_context_from_type |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
create_image |
Returns a new image (mem) pointer. |
create_kernel |
Returns a new kernel pointer. |
create_kernels_in_program |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
create_program_with_binary |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
create_program_with_build_in_kernels |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
create_program_with_source |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
create_sampler |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
create_sub_buffer |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
create_sub_devices |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
create_user_event |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
device_info |
Returns a string containing requested information. |
enqueue_barrier_with_wait_list |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_copy_buffer |
[UNTESTED][UNUSED] |
enqueue_copy_buffer_rect |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_copy_buffer_to_image |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_copy_image |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_copy_image_to_buffer |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_fill_buffer |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_fill_image |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_map_buffer |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_map_image |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_marker_with_wait_list |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_migrate_mem_objects |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_n_d_range_kernel |
Enqueues a command to execute a kernel on a device. |
enqueue_native_kernel |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_read_buffer |
Enqueues a read from device memory referred to by |
enqueue_read_buffer_rect |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_read_image |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_task |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_unmap_mem_object |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_write_buffer |
Enqueues a write from host memory, |
enqueue_write_buffer_rect |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
enqueue_write_image |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
finish | |
flush |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_command_queue_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_context_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_device_ids |
Returns a list of available devices for a particular platform by id. |
get_device_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_event_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_event_profiling_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_event_status |
Returns the status of |
get_extension_function_address_for_platform |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME Extension function access |
get_image_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_kernel_arg_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_kernel_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_kernel_work_group_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_max_work_group_size | |
get_mem_object_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_platform_ids |
Returns a list of available platforms as 'raw' objects. |
get_platform_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_program_build_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_program_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_sampler_info |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
get_supported_image_formats |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
link_program |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
platform_info |
[UNFINISHED] Currently prints the platform name. |
program_build_err |
If the program pointed to by |
release_command_queue | |
release_context | |
release_device |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
release_event | |
release_kernel | |
release_mem_object | |
release_program | |
release_sampler |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
retain_command_queue |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
retain_context |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
retain_device |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
retain_event |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
retain_kernel |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
retain_mem_object |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
retain_program |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
retain_sampler |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
set_event_callback | |
set_kernel_arg |
Modifies or creates a kernel argument. |
set_mem_object_destructor_callback |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
set_user_event_status |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
unload_platform_compiler |
[UNIMPLEMENTED][FIXME]: IMPLEMENT ME |
verify_context |
Verifies that the |
wait_for_event |
[FIXME]: Why are we wrapping in this array? Fix this. |
wait_for_events |