cl_sys/
cl_d3d11_h.rs

1//! OpenCL / DirectX 11 sharing.
2
3// + NVIDIA extension https://registry.khronos.org/OpenCL/extensions/nv/cl_nv_d3d11_sharing.txt
4
5#![allow(
6    non_camel_case_types,
7    dead_code,
8    unused_variables,
9    improper_ctypes,
10    non_upper_case_globals
11)]
12
13use crate::cl_h::{
14    cl_command_queue, cl_command_type, cl_context, cl_context_info, cl_device_id, cl_event,
15    cl_image_info, cl_int, cl_mem, cl_mem_flags, cl_mem_info, cl_platform_id, cl_uint,
16};
17use libc::c_void;
18
19pub type cl_d3d11_device_source = cl_uint;
20pub type cl_d3d11_device_set = cl_uint;
21pub type cl_id3d11_buffer = *mut c_void;
22pub type cl_id3d11_texture2d = *mut c_void;
23pub type cl_id3d11_texture3d = *mut c_void;
24
25// Error Codes
26pub const CL_INVALID_D3D11_DEVICE: cl_int = -1006;
27pub const CL_INVALID_D3D11_RESOURCE: cl_int = -1007;
28pub const CL_D3D11_RESOURCE_ALREADY_ACQUIRED: cl_int = -1008;
29pub const CL_D3D11_RESOURCE_NOT_ACQUIRED: cl_int = -1009;
30
31// cl_d3d11_device_source
32pub const CL_D3D11_DEVICE: cl_d3d11_device_source = 0x4019;
33pub const CL_D3D11_DXGI_ADAPTER: cl_d3d11_device_source = 0x401A;
34
35// cl_d3d11_device_set
36pub const CL_PREFERRED_DEVICES_FOR_D3D11: cl_d3d11_device_set = 0x401B;
37pub const CL_ALL_DEVICES_FOR_D3D11: cl_d3d11_device_set = 0x401C;
38
39// cl_context_info
40pub const CL_CONTEXT_D3D11_DEVICE_KHR: cl_context_info = 0x401D;
41pub const CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES: cl_context_info = 0x402D;
42
43// cl_mem_info
44pub const CL_MEM_D3D11_RESOURCE: cl_mem_info = 0x401E;
45
46// cl_image_info
47pub const CL_IMAGE_D3D11_SUBRESOURCE: cl_image_info = 0x401F;
48
49// cl_command_type
50pub const CL_COMMAND_ACQUIRE_D3D11_OBJECTS: cl_command_type = 0x4020;
51pub const CL_COMMAND_RELEASE_D3D11_OBJECTS: cl_command_type = 0x4021;
52
53pub type clGetDeviceIDsFromD3D11_fn = extern "system" fn(
54    platform: cl_platform_id,
55    d3d_device_source: cl_d3d11_device_source,
56    d3d_object: *mut c_void,
57    d3d_device_set: cl_d3d11_device_set,
58    num_entries: cl_uint,
59    devices: *mut cl_device_id,
60    num_devices: *mut cl_uint,
61) -> cl_int;
62
63pub type clCreateFromD3D11Buffer_fn = extern "system" fn(
64    context: cl_context,
65    flags: cl_mem_flags,
66    resource: cl_id3d11_buffer,
67    errcode_ret: *mut cl_int,
68) -> cl_mem;
69
70pub type clCreateFromD3D11Texture2D_fn = extern "system" fn(
71    context: cl_context,
72    flags: cl_mem_flags,
73    resource: cl_id3d11_texture2d,
74    subresource: cl_uint,
75    errcode_ret: *mut cl_int,
76) -> cl_mem;
77
78pub type clCreateFromD3D11Texture3D_fn = extern "system" fn(
79    context: cl_context,
80    flags: cl_mem_flags,
81    resource: cl_id3d11_texture3d,
82    subresource: cl_uint,
83    errcode_ret: *mut cl_int,
84) -> cl_mem;
85
86pub type clEnqueueAcquireD3D11Objects_fn = extern "system" fn(
87    command_queue: cl_command_queue,
88    num_objects: cl_uint,
89    mem_objects: *const cl_mem,
90    num_events_in_wait_list: cl_uint,
91    event_wait_list: *const cl_event,
92    event: *mut cl_event,
93) -> cl_int;
94
95pub type clEnqueueReleaseD3D11Objects_fn = extern "system" fn(
96    command_queue: cl_command_queue,
97    num_objects: cl_uint,
98    mem_objects: *const cl_mem,
99    num_events_in_wait_list: cl_uint,
100    event_wait_list: *const cl_event,
101    event: *mut cl_event,
102) -> cl_int;