1#![allow(
4 non_camel_case_types,
5 dead_code,
6 unused_variables,
7 improper_ctypes,
8 non_upper_case_globals
9)]
10
11use crate::cl_h::{cl_context_properties, cl_int, cl_uint};
12use libc::{c_void, size_t};
13
14#[cfg(not(feature = "opencl_vendor_mesa"))]
15use crate::cl_h::{cl_command_queue, cl_context, cl_event, cl_mem, cl_mem_flags};
16#[cfg(not(feature = "opencl_vendor_mesa"))]
17use crate::platform_h::{cl_GLenum, cl_GLint, cl_GLuint};
18
19pub type cl_gl_object_type = cl_uint;
20pub type cl_gl_texture_info = cl_uint;
21pub type cl_gl_platform_info = cl_uint;
22pub type cl_gl_context_info = cl_uint;
24
25pub const CL_GL_OBJECT_BUFFER: cl_gl_object_type = 0x2000;
27pub const CL_GL_OBJECT_TEXTURE2D: cl_gl_object_type = 0x2001;
28pub const CL_GL_OBJECT_TEXTURE3D: cl_gl_object_type = 0x2002;
29pub const CL_GL_OBJECT_RENDERBUFFER: cl_gl_object_type = 0x2003;
30pub const CL_GL_OBJECT_TEXTURE2D_ARRAY: cl_gl_object_type = 0x200E;
31pub const CL_GL_OBJECT_TEXTURE1D: cl_gl_object_type = 0x200F;
32pub const CL_GL_OBJECT_TEXTURE1D_ARRAY: cl_gl_object_type = 0x2010;
33pub const CL_GL_OBJECT_TEXTURE_BUFFER: cl_gl_object_type = 0x2011;
34
35pub const CL_GL_TEXTURE_TARGET: cl_gl_texture_info = 0x2004;
37pub const CL_GL_MIPMAP_LEVEL: cl_gl_texture_info = 0x2005;
38pub const CL_GL_NUM_SAMPLES: cl_gl_texture_info = 0x2012;
39
40pub const CL_KHR_GL_SHARING: cl_int = 1;
43
44pub const CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR: cl_int = -1000;
46
47pub const CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR: cl_gl_context_info = 0x2006;
49pub const CL_DEVICES_FOR_GL_CONTEXT_KHR: cl_gl_context_info = 0x2007;
50
51pub const CL_GL_CONTEXT_KHR: cl_context_properties = 0x2008;
53pub const CL_EGL_DISPLAY_KHR: cl_context_properties = 0x2009;
54pub const CL_GLX_DISPLAY_KHR: cl_context_properties = 0x200A;
55pub const CL_WGL_HDC_KHR: cl_context_properties = 0x200B;
56pub const CL_CGL_SHAREGROUP_KHR: cl_context_properties = 0x200C;
57
58pub type clGetGLContextInfoKHR_fn = extern "system" fn(
59 properties: *const cl_context_properties,
60 param_name: cl_gl_context_info,
61 param_value_size: size_t,
62 param_value: *mut c_void,
63 param_value_size_ret: *mut size_t,
64) -> cl_int;
65
66#[cfg_attr(target_os = "macos", link(name = "OpenCL", kind = "framework"))]
68#[cfg_attr(target_os = "windows", link(name = "OpenCL"))]
69#[cfg_attr(not(target_os = "macos"), link(name = "OpenCL"))]
70#[cfg(not(feature = "opencl_vendor_mesa"))] extern "system" {
72 pub fn clCreateFromGLBuffer(
73 context: cl_context,
74 flags: cl_mem_flags,
75 bufobj: cl_GLuint,
76 errcode_ret: *mut cl_int,
77 ) -> cl_mem;
78
79 pub fn clCreateFromGLTexture(
80 context: cl_context,
81 flags: cl_mem_flags,
82 texture_target: cl_GLenum,
83 miplevel: cl_GLint,
84 texture: cl_GLuint,
85 errcode_ret: *mut cl_int,
86 ) -> cl_mem;
87
88 pub fn clGetGLObjectInfo(
89 memobj: cl_mem,
90 gl_object_type: *mut cl_gl_object_type,
91 gl_object_name: *mut cl_GLuint,
92 ) -> cl_int;
93
94 pub fn clGetGLTextureInfo(
95 memobj: cl_mem,
96 param_name: cl_gl_texture_info,
97 param_value_size: size_t,
98 param_value: *mut c_void,
99 param_value_size_ret: *mut size_t,
100 ) -> cl_int;
101
102 pub fn clCreateFromGLRenderbuffer(
103 context: cl_context,
104 flags: cl_mem_flags,
105 renderbuffer: cl_GLuint,
106 errcode_ret: *mut cl_int,
107 ) -> cl_mem;
108
109 pub fn clEnqueueAcquireGLObjects(
110 command_queue: cl_command_queue,
111 num_objects: cl_uint,
112 mem_objects: *const cl_mem,
113 num_events_in_wait_list: cl_uint,
114 event_wait_list: *const cl_event,
115 event: *mut cl_event,
116 ) -> cl_int;
117
118 pub fn clEnqueueReleaseGLObjects(
119 command_queue: cl_command_queue,
120 num_objects: cl_uint,
121 mem_objects: *const cl_mem,
122 num_events_in_wait_list: cl_uint,
123 event_wait_list: *const cl_event,
124 event: *mut cl_event,
125 ) -> cl_int;
126
127 pub fn clGetGLContextInfoKHR(
128 properties: *const cl_context_properties,
129 param_name: cl_gl_context_info,
130 param_value_size: size_t,
131 param_value: *mut c_void,
132 param_value_size_ret: *mut size_t,
133 ) -> cl_int;
134
135 pub fn clCreateFromGLTexture2D(
137 context: cl_context,
138 flags: cl_mem_flags,
139 texture_target: cl_GLenum,
140 miplevel: cl_GLint,
141 texture: cl_GLuint,
142 errcode_ret: *mut cl_int,
143 ) -> cl_mem;
144
145 pub fn clCreateFromGLTexture3D(
146 context: cl_context,
147 flags: cl_mem_flags,
148 texture_target: cl_GLenum,
149 miplevel: cl_GLint,
150 texture: cl_GLuint,
151 errcode_ret: *mut cl_int,
152 ) -> cl_mem;
153}