1*6467f958SSadaf Ebrahimi /******************************************************************************* 2*6467f958SSadaf Ebrahimi * Copyright (c) 2008-2020 The Khronos Group Inc. 3*6467f958SSadaf Ebrahimi * 4*6467f958SSadaf Ebrahimi * Licensed under the Apache License, Version 2.0 (the "License"); 5*6467f958SSadaf Ebrahimi * you may not use this file except in compliance with the License. 6*6467f958SSadaf Ebrahimi * You may obtain a copy of the License at 7*6467f958SSadaf Ebrahimi * 8*6467f958SSadaf Ebrahimi * http://www.apache.org/licenses/LICENSE-2.0 9*6467f958SSadaf Ebrahimi * 10*6467f958SSadaf Ebrahimi * Unless required by applicable law or agreed to in writing, software 11*6467f958SSadaf Ebrahimi * distributed under the License is distributed on an "AS IS" BASIS, 12*6467f958SSadaf Ebrahimi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*6467f958SSadaf Ebrahimi * See the License for the specific language governing permissions and 14*6467f958SSadaf Ebrahimi * limitations under the License. 15*6467f958SSadaf Ebrahimi ******************************************************************************/ 16*6467f958SSadaf Ebrahimi 17*6467f958SSadaf Ebrahimi #ifndef __OPENCL_CL_EGL_H 18*6467f958SSadaf Ebrahimi #define __OPENCL_CL_EGL_H 19*6467f958SSadaf Ebrahimi 20*6467f958SSadaf Ebrahimi #include <CL/cl.h> 21*6467f958SSadaf Ebrahimi 22*6467f958SSadaf Ebrahimi #ifdef __cplusplus 23*6467f958SSadaf Ebrahimi extern "C" { 24*6467f958SSadaf Ebrahimi #endif 25*6467f958SSadaf Ebrahimi 26*6467f958SSadaf Ebrahimi 27*6467f958SSadaf Ebrahimi /* Command type for events created with clEnqueueAcquireEGLObjectsKHR */ 28*6467f958SSadaf Ebrahimi #define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F 29*6467f958SSadaf Ebrahimi #define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D 30*6467f958SSadaf Ebrahimi #define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E 31*6467f958SSadaf Ebrahimi 32*6467f958SSadaf Ebrahimi /* Error type for clCreateFromEGLImageKHR */ 33*6467f958SSadaf Ebrahimi #define CL_INVALID_EGL_OBJECT_KHR -1093 34*6467f958SSadaf Ebrahimi #define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 35*6467f958SSadaf Ebrahimi 36*6467f958SSadaf Ebrahimi /* CLeglImageKHR is an opaque handle to an EGLImage */ 37*6467f958SSadaf Ebrahimi typedef void* CLeglImageKHR; 38*6467f958SSadaf Ebrahimi 39*6467f958SSadaf Ebrahimi /* CLeglDisplayKHR is an opaque handle to an EGLDisplay */ 40*6467f958SSadaf Ebrahimi typedef void* CLeglDisplayKHR; 41*6467f958SSadaf Ebrahimi 42*6467f958SSadaf Ebrahimi /* CLeglSyncKHR is an opaque handle to an EGLSync object */ 43*6467f958SSadaf Ebrahimi typedef void* CLeglSyncKHR; 44*6467f958SSadaf Ebrahimi 45*6467f958SSadaf Ebrahimi /* properties passed to clCreateFromEGLImageKHR */ 46*6467f958SSadaf Ebrahimi typedef intptr_t cl_egl_image_properties_khr; 47*6467f958SSadaf Ebrahimi 48*6467f958SSadaf Ebrahimi 49*6467f958SSadaf Ebrahimi #define cl_khr_egl_image 1 50*6467f958SSadaf Ebrahimi 51*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_mem CL_API_CALL 52*6467f958SSadaf Ebrahimi clCreateFromEGLImageKHR(cl_context context, 53*6467f958SSadaf Ebrahimi CLeglDisplayKHR egldisplay, 54*6467f958SSadaf Ebrahimi CLeglImageKHR eglimage, 55*6467f958SSadaf Ebrahimi cl_mem_flags flags, 56*6467f958SSadaf Ebrahimi const cl_egl_image_properties_khr * properties, 57*6467f958SSadaf Ebrahimi cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; 58*6467f958SSadaf Ebrahimi 59*6467f958SSadaf Ebrahimi typedef cl_mem (CL_API_CALL *clCreateFromEGLImageKHR_fn)( 60*6467f958SSadaf Ebrahimi cl_context context, 61*6467f958SSadaf Ebrahimi CLeglDisplayKHR egldisplay, 62*6467f958SSadaf Ebrahimi CLeglImageKHR eglimage, 63*6467f958SSadaf Ebrahimi cl_mem_flags flags, 64*6467f958SSadaf Ebrahimi const cl_egl_image_properties_khr * properties, 65*6467f958SSadaf Ebrahimi cl_int * errcode_ret); 66*6467f958SSadaf Ebrahimi 67*6467f958SSadaf Ebrahimi 68*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL 69*6467f958SSadaf Ebrahimi clEnqueueAcquireEGLObjectsKHR(cl_command_queue command_queue, 70*6467f958SSadaf Ebrahimi cl_uint num_objects, 71*6467f958SSadaf Ebrahimi const cl_mem * mem_objects, 72*6467f958SSadaf Ebrahimi cl_uint num_events_in_wait_list, 73*6467f958SSadaf Ebrahimi const cl_event * event_wait_list, 74*6467f958SSadaf Ebrahimi cl_event * event) CL_API_SUFFIX__VERSION_1_0; 75*6467f958SSadaf Ebrahimi 76*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *clEnqueueAcquireEGLObjectsKHR_fn)( 77*6467f958SSadaf Ebrahimi cl_command_queue command_queue, 78*6467f958SSadaf Ebrahimi cl_uint num_objects, 79*6467f958SSadaf Ebrahimi const cl_mem * mem_objects, 80*6467f958SSadaf Ebrahimi cl_uint num_events_in_wait_list, 81*6467f958SSadaf Ebrahimi const cl_event * event_wait_list, 82*6467f958SSadaf Ebrahimi cl_event * event); 83*6467f958SSadaf Ebrahimi 84*6467f958SSadaf Ebrahimi 85*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL 86*6467f958SSadaf Ebrahimi clEnqueueReleaseEGLObjectsKHR(cl_command_queue command_queue, 87*6467f958SSadaf Ebrahimi cl_uint num_objects, 88*6467f958SSadaf Ebrahimi const cl_mem * mem_objects, 89*6467f958SSadaf Ebrahimi cl_uint num_events_in_wait_list, 90*6467f958SSadaf Ebrahimi const cl_event * event_wait_list, 91*6467f958SSadaf Ebrahimi cl_event * event) CL_API_SUFFIX__VERSION_1_0; 92*6467f958SSadaf Ebrahimi 93*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *clEnqueueReleaseEGLObjectsKHR_fn)( 94*6467f958SSadaf Ebrahimi cl_command_queue command_queue, 95*6467f958SSadaf Ebrahimi cl_uint num_objects, 96*6467f958SSadaf Ebrahimi const cl_mem * mem_objects, 97*6467f958SSadaf Ebrahimi cl_uint num_events_in_wait_list, 98*6467f958SSadaf Ebrahimi const cl_event * event_wait_list, 99*6467f958SSadaf Ebrahimi cl_event * event); 100*6467f958SSadaf Ebrahimi 101*6467f958SSadaf Ebrahimi 102*6467f958SSadaf Ebrahimi #define cl_khr_egl_event 1 103*6467f958SSadaf Ebrahimi 104*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_event CL_API_CALL 105*6467f958SSadaf Ebrahimi clCreateEventFromEGLSyncKHR(cl_context context, 106*6467f958SSadaf Ebrahimi CLeglSyncKHR sync, 107*6467f958SSadaf Ebrahimi CLeglDisplayKHR display, 108*6467f958SSadaf Ebrahimi cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; 109*6467f958SSadaf Ebrahimi 110*6467f958SSadaf Ebrahimi typedef cl_event (CL_API_CALL *clCreateEventFromEGLSyncKHR_fn)( 111*6467f958SSadaf Ebrahimi cl_context context, 112*6467f958SSadaf Ebrahimi CLeglSyncKHR sync, 113*6467f958SSadaf Ebrahimi CLeglDisplayKHR display, 114*6467f958SSadaf Ebrahimi cl_int * errcode_ret); 115*6467f958SSadaf Ebrahimi 116*6467f958SSadaf Ebrahimi #ifdef __cplusplus 117*6467f958SSadaf Ebrahimi } 118*6467f958SSadaf Ebrahimi #endif 119*6467f958SSadaf Ebrahimi 120*6467f958SSadaf Ebrahimi #endif /* __OPENCL_CL_EGL_H */ 121