blob: 5ea0fd8b7f4274bf28a2bbea83b896593c1f1a5b [file] [log] [blame]
Sheri Zhang79cb9452021-09-07 14:51:49 +01001/*******************************************************************************
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00002 * Copyright (c) 2008-2021 The Khronos Group Inc.
Anthony Barbier6ff3b192017-09-04 18:44:23 +01003 *
Sheri Zhang79cb9452021-09-07 14:51:49 +01004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Anthony Barbier6ff3b192017-09-04 18:44:23 +01007 *
Sheri Zhang79cb9452021-09-07 14:51:49 +01008 * http://www.apache.org/licenses/LICENSE-2.0
Anthony Barbier6ff3b192017-09-04 18:44:23 +01009 *
Sheri Zhang79cb9452021-09-07 14:51:49 +010010 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 ******************************************************************************/
Anthony Barbier6ff3b192017-09-04 18:44:23 +010016
17#ifndef __OPENCL_CL_GL_H
18#define __OPENCL_CL_GL_H
19
Anthony Barbier6ff3b192017-09-04 18:44:23 +010020#include <CL/cl.h>
Anthony Barbier6ff3b192017-09-04 18:44:23 +010021
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26typedef cl_uint cl_gl_object_type;
27typedef cl_uint cl_gl_texture_info;
28typedef cl_uint cl_gl_platform_info;
29typedef struct __GLsync *cl_GLsync;
30
31/* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */
32#define CL_GL_OBJECT_BUFFER 0x2000
33#define CL_GL_OBJECT_TEXTURE2D 0x2001
34#define CL_GL_OBJECT_TEXTURE3D 0x2002
35#define CL_GL_OBJECT_RENDERBUFFER 0x2003
Anthony Barbier8b2fdc92018-08-09 11:42:38 +010036#ifdef CL_VERSION_1_2
Anthony Barbier6ff3b192017-09-04 18:44:23 +010037#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E
38#define CL_GL_OBJECT_TEXTURE1D 0x200F
39#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010
40#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011
Anthony Barbier8b2fdc92018-08-09 11:42:38 +010041#endif
Anthony Barbier6ff3b192017-09-04 18:44:23 +010042
43/* cl_gl_texture_info */
44#define CL_GL_TEXTURE_TARGET 0x2004
45#define CL_GL_MIPMAP_LEVEL 0x2005
Anthony Barbier8b2fdc92018-08-09 11:42:38 +010046#ifdef CL_VERSION_1_2
Anthony Barbier6ff3b192017-09-04 18:44:23 +010047#define CL_GL_NUM_SAMPLES 0x2012
Anthony Barbier8b2fdc92018-08-09 11:42:38 +010048#endif
Anthony Barbier6ff3b192017-09-04 18:44:23 +010049
50
51extern CL_API_ENTRY cl_mem CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +010052clCreateFromGLBuffer(cl_context context,
53 cl_mem_flags flags,
54 cl_GLuint bufobj,
55 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
Anthony Barbier6ff3b192017-09-04 18:44:23 +010056
Anthony Barbier8b2fdc92018-08-09 11:42:38 +010057#ifdef CL_VERSION_1_2
58
Anthony Barbier6ff3b192017-09-04 18:44:23 +010059extern CL_API_ENTRY cl_mem CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +010060clCreateFromGLTexture(cl_context context,
61 cl_mem_flags flags,
62 cl_GLenum target,
63 cl_GLint miplevel,
64 cl_GLuint texture,
65 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
66
Anthony Barbier8b2fdc92018-08-09 11:42:38 +010067#endif
68
Anthony Barbier6ff3b192017-09-04 18:44:23 +010069extern CL_API_ENTRY cl_mem CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +010070clCreateFromGLRenderbuffer(cl_context context,
71 cl_mem_flags flags,
72 cl_GLuint renderbuffer,
73 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
Anthony Barbier6ff3b192017-09-04 18:44:23 +010074
75extern CL_API_ENTRY cl_int CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +010076clGetGLObjectInfo(cl_mem memobj,
77 cl_gl_object_type * gl_object_type,
78 cl_GLuint * gl_object_name) CL_API_SUFFIX__VERSION_1_0;
Anthony Barbier6ff3b192017-09-04 18:44:23 +010079
80extern CL_API_ENTRY cl_int CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +010081clGetGLTextureInfo(cl_mem memobj,
82 cl_gl_texture_info param_name,
83 size_t param_value_size,
84 void * param_value,
85 size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
Anthony Barbier6ff3b192017-09-04 18:44:23 +010086
87extern CL_API_ENTRY cl_int CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +010088clEnqueueAcquireGLObjects(cl_command_queue command_queue,
89 cl_uint num_objects,
90 const cl_mem * mem_objects,
91 cl_uint num_events_in_wait_list,
92 const cl_event * event_wait_list,
93 cl_event * event) CL_API_SUFFIX__VERSION_1_0;
94
95extern CL_API_ENTRY cl_int CL_API_CALL
96clEnqueueReleaseGLObjects(cl_command_queue command_queue,
97 cl_uint num_objects,
98 const cl_mem * mem_objects,
99 cl_uint num_events_in_wait_list,
100 const cl_event * event_wait_list,
101 cl_event * event) CL_API_SUFFIX__VERSION_1_0;
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100102
103
Pablo Telloe86a09f2018-01-11 15:44:48 +0000104/* Deprecated OpenCL 1.1 APIs */
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000105extern CL_API_ENTRY CL_API_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +0100106clCreateFromGLTexture2D(cl_context context,
107 cl_mem_flags flags,
108 cl_GLenum target,
109 cl_GLint miplevel,
110 cl_GLuint texture,
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000111 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100112
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000113extern CL_API_ENTRY CL_API_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +0100114clCreateFromGLTexture3D(cl_context context,
115 cl_mem_flags flags,
116 cl_GLenum target,
117 cl_GLint miplevel,
118 cl_GLuint texture,
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000119 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100120
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100121/* cl_khr_gl_sharing extension */
Sheri Zhang67354e02021-06-30 16:08:29 +0100122
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100123#define cl_khr_gl_sharing 1
Sheri Zhang67354e02021-06-30 16:08:29 +0100124
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100125typedef cl_uint cl_gl_context_info;
Sheri Zhang67354e02021-06-30 16:08:29 +0100126
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100127/* Additional Error Codes */
128#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000
Sheri Zhang67354e02021-06-30 16:08:29 +0100129
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100130/* cl_gl_context_info */
131#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006
132#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007
Sheri Zhang67354e02021-06-30 16:08:29 +0100133
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100134/* Additional cl_context_properties */
135#define CL_GL_CONTEXT_KHR 0x2008
136#define CL_EGL_DISPLAY_KHR 0x2009
137#define CL_GLX_DISPLAY_KHR 0x200A
138#define CL_WGL_HDC_KHR 0x200B
139#define CL_CGL_SHAREGROUP_KHR 0x200C
Sheri Zhang67354e02021-06-30 16:08:29 +0100140
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100141extern CL_API_ENTRY cl_int CL_API_CALL
Sheri Zhang67354e02021-06-30 16:08:29 +0100142clGetGLContextInfoKHR(const cl_context_properties * properties,
143 cl_gl_context_info param_name,
144 size_t param_value_size,
145 void * param_value,
146 size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
147
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000148typedef cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)(
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100149 const cl_context_properties * properties,
150 cl_gl_context_info param_name,
151 size_t param_value_size,
152 void * param_value,
153 size_t * param_value_size_ret);
154
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000155/*
156 * cl_khr_gl_event extension
157 */
158#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D
159
160extern CL_API_ENTRY cl_event CL_API_CALL
161clCreateEventFromGLsyncKHR(cl_context context,
162 cl_GLsync sync,
163 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1;
164
Anthony Barbier6ff3b192017-09-04 18:44:23 +0100165#ifdef __cplusplus
166}
167#endif
168
169#endif /* __OPENCL_CL_GL_H */