1848b8605Smrg/********************************************************************************** 2b8e80941Smrg * Copyright (c) 2008-2019 The Khronos Group Inc. 3848b8605Smrg * 4848b8605Smrg * Permission is hereby granted, free of charge, to any person obtaining a 5848b8605Smrg * copy of this software and/or associated documentation files (the 6848b8605Smrg * "Materials"), to deal in the Materials without restriction, including 7848b8605Smrg * without limitation the rights to use, copy, modify, merge, publish, 8848b8605Smrg * distribute, sublicense, and/or sell copies of the Materials, and to 9848b8605Smrg * permit persons to whom the Materials are furnished to do so, subject to 10848b8605Smrg * the following conditions: 11848b8605Smrg * 12848b8605Smrg * The above copyright notice and this permission notice shall be included 13848b8605Smrg * in all copies or substantial portions of the Materials. 14848b8605Smrg * 15b8e80941Smrg * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS 16b8e80941Smrg * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS 17b8e80941Smrg * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT 18b8e80941Smrg * https://www.khronos.org/registry/ 19b8e80941Smrg * 20848b8605Smrg * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21848b8605Smrg * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22848b8605Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 23848b8605Smrg * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 24848b8605Smrg * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 25848b8605Smrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 26848b8605Smrg * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 27848b8605Smrg **********************************************************************************/ 28848b8605Smrg 29848b8605Smrg#ifndef __OPENCL_CL_GL_H 30848b8605Smrg#define __OPENCL_CL_GL_H 31848b8605Smrg 32848b8605Smrg#include <CL/cl.h> 33848b8605Smrg 34848b8605Smrg#ifdef __cplusplus 35848b8605Smrgextern "C" { 36848b8605Smrg#endif 37848b8605Smrg 38848b8605Smrgtypedef cl_uint cl_gl_object_type; 39848b8605Smrgtypedef cl_uint cl_gl_texture_info; 40848b8605Smrgtypedef cl_uint cl_gl_platform_info; 41848b8605Smrgtypedef struct __GLsync *cl_GLsync; 42848b8605Smrg 43848b8605Smrg/* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */ 44848b8605Smrg#define CL_GL_OBJECT_BUFFER 0x2000 45848b8605Smrg#define CL_GL_OBJECT_TEXTURE2D 0x2001 46848b8605Smrg#define CL_GL_OBJECT_TEXTURE3D 0x2002 47848b8605Smrg#define CL_GL_OBJECT_RENDERBUFFER 0x2003 48b8e80941Smrg#ifdef CL_VERSION_1_2 49848b8605Smrg#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E 50848b8605Smrg#define CL_GL_OBJECT_TEXTURE1D 0x200F 51848b8605Smrg#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 52848b8605Smrg#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 53b8e80941Smrg#endif 54848b8605Smrg 55848b8605Smrg/* cl_gl_texture_info */ 56848b8605Smrg#define CL_GL_TEXTURE_TARGET 0x2004 57848b8605Smrg#define CL_GL_MIPMAP_LEVEL 0x2005 58b8e80941Smrg#ifdef CL_VERSION_1_2 59848b8605Smrg#define CL_GL_NUM_SAMPLES 0x2012 60b8e80941Smrg#endif 61848b8605Smrg 62848b8605Smrg 63848b8605Smrgextern CL_API_ENTRY cl_mem CL_API_CALL 64b8e80941SmrgclCreateFromGLBuffer(cl_context context, 65b8e80941Smrg cl_mem_flags flags, 66b8e80941Smrg cl_GLuint bufobj, 67b8e80941Smrg cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; 68b8e80941Smrg 69b8e80941Smrg#ifdef CL_VERSION_1_2 70848b8605Smrg 71848b8605Smrgextern CL_API_ENTRY cl_mem CL_API_CALL 72b8e80941SmrgclCreateFromGLTexture(cl_context context, 73b8e80941Smrg cl_mem_flags flags, 74b8e80941Smrg cl_GLenum target, 75b8e80941Smrg cl_GLint miplevel, 76b8e80941Smrg cl_GLuint texture, 77b8e80941Smrg cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; 78b8e80941Smrg 79b8e80941Smrg#endif 80b8e80941Smrg 81848b8605Smrgextern CL_API_ENTRY cl_mem CL_API_CALL 82b8e80941SmrgclCreateFromGLRenderbuffer(cl_context context, 83b8e80941Smrg cl_mem_flags flags, 84b8e80941Smrg cl_GLuint renderbuffer, 85b8e80941Smrg cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; 86848b8605Smrg 87848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 88b8e80941SmrgclGetGLObjectInfo(cl_mem memobj, 89b8e80941Smrg cl_gl_object_type * gl_object_type, 90b8e80941Smrg cl_GLuint * gl_object_name) CL_API_SUFFIX__VERSION_1_0; 91b8e80941Smrg 92848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 93b8e80941SmrgclGetGLTextureInfo(cl_mem memobj, 94b8e80941Smrg cl_gl_texture_info param_name, 95b8e80941Smrg size_t param_value_size, 96b8e80941Smrg void * param_value, 97b8e80941Smrg size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; 98848b8605Smrg 99848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 100b8e80941SmrgclEnqueueAcquireGLObjects(cl_command_queue command_queue, 101b8e80941Smrg cl_uint num_objects, 102b8e80941Smrg const cl_mem * mem_objects, 103b8e80941Smrg cl_uint num_events_in_wait_list, 104b8e80941Smrg const cl_event * event_wait_list, 105b8e80941Smrg cl_event * event) CL_API_SUFFIX__VERSION_1_0; 106848b8605Smrg 107848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 108b8e80941SmrgclEnqueueReleaseGLObjects(cl_command_queue command_queue, 109b8e80941Smrg cl_uint num_objects, 110b8e80941Smrg const cl_mem * mem_objects, 111b8e80941Smrg cl_uint num_events_in_wait_list, 112b8e80941Smrg const cl_event * event_wait_list, 113b8e80941Smrg cl_event * event) CL_API_SUFFIX__VERSION_1_0; 114848b8605Smrg 115848b8605Smrg 116848b8605Smrg/* Deprecated OpenCL 1.1 APIs */ 117848b8605Smrgextern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL 118b8e80941SmrgclCreateFromGLTexture2D(cl_context context, 119b8e80941Smrg cl_mem_flags flags, 120b8e80941Smrg cl_GLenum target, 121b8e80941Smrg cl_GLint miplevel, 122b8e80941Smrg cl_GLuint texture, 123b8e80941Smrg cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; 124b8e80941Smrg 125848b8605Smrgextern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL 126b8e80941SmrgclCreateFromGLTexture3D(cl_context context, 127b8e80941Smrg cl_mem_flags flags, 128b8e80941Smrg cl_GLenum target, 129b8e80941Smrg cl_GLint miplevel, 130b8e80941Smrg cl_GLuint texture, 131b8e80941Smrg cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; 132b8e80941Smrg 133848b8605Smrg/* cl_khr_gl_sharing extension */ 134b8e80941Smrg 135848b8605Smrg#define cl_khr_gl_sharing 1 136b8e80941Smrg 137848b8605Smrgtypedef cl_uint cl_gl_context_info; 138b8e80941Smrg 139848b8605Smrg/* Additional Error Codes */ 140848b8605Smrg#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 141b8e80941Smrg 142848b8605Smrg/* cl_gl_context_info */ 143848b8605Smrg#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 144848b8605Smrg#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 145b8e80941Smrg 146848b8605Smrg/* Additional cl_context_properties */ 147848b8605Smrg#define CL_GL_CONTEXT_KHR 0x2008 148848b8605Smrg#define CL_EGL_DISPLAY_KHR 0x2009 149848b8605Smrg#define CL_GLX_DISPLAY_KHR 0x200A 150848b8605Smrg#define CL_WGL_HDC_KHR 0x200B 151848b8605Smrg#define CL_CGL_SHAREGROUP_KHR 0x200C 152b8e80941Smrg 153848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 154b8e80941SmrgclGetGLContextInfoKHR(const cl_context_properties * properties, 155b8e80941Smrg cl_gl_context_info param_name, 156b8e80941Smrg size_t param_value_size, 157b8e80941Smrg void * param_value, 158b8e80941Smrg size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; 159b8e80941Smrg 160848b8605Smrgtypedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( 161848b8605Smrg const cl_context_properties * properties, 162848b8605Smrg cl_gl_context_info param_name, 163848b8605Smrg size_t param_value_size, 164848b8605Smrg void * param_value, 165848b8605Smrg size_t * param_value_size_ret); 166848b8605Smrg 167848b8605Smrg#ifdef __cplusplus 168848b8605Smrg} 169848b8605Smrg#endif 170848b8605Smrg 171848b8605Smrg#endif /* __OPENCL_CL_GL_H */ 172