cl_gl.h revision 848b8605
1848b8605Smrg/********************************************************************************** 2848b8605Smrg * Copyright (c) 2008 - 2012 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 * 15848b8605Smrg * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16848b8605Smrg * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17848b8605Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 18848b8605Smrg * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 19848b8605Smrg * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 20848b8605Smrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 21848b8605Smrg * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 22848b8605Smrg **********************************************************************************/ 23848b8605Smrg 24848b8605Smrg#ifndef __OPENCL_CL_GL_H 25848b8605Smrg#define __OPENCL_CL_GL_H 26848b8605Smrg 27848b8605Smrg#ifdef __APPLE__ 28848b8605Smrg#include <OpenCL/cl.h> 29848b8605Smrg#else 30848b8605Smrg#include <CL/cl.h> 31848b8605Smrg#endif 32848b8605Smrg 33848b8605Smrg#ifdef __cplusplus 34848b8605Smrgextern "C" { 35848b8605Smrg#endif 36848b8605Smrg 37848b8605Smrgtypedef cl_uint cl_gl_object_type; 38848b8605Smrgtypedef cl_uint cl_gl_texture_info; 39848b8605Smrgtypedef cl_uint cl_gl_platform_info; 40848b8605Smrgtypedef struct __GLsync *cl_GLsync; 41848b8605Smrg 42848b8605Smrg/* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */ 43848b8605Smrg#define CL_GL_OBJECT_BUFFER 0x2000 44848b8605Smrg#define CL_GL_OBJECT_TEXTURE2D 0x2001 45848b8605Smrg#define CL_GL_OBJECT_TEXTURE3D 0x2002 46848b8605Smrg#define CL_GL_OBJECT_RENDERBUFFER 0x2003 47848b8605Smrg#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E 48848b8605Smrg#define CL_GL_OBJECT_TEXTURE1D 0x200F 49848b8605Smrg#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 50848b8605Smrg#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 51848b8605Smrg 52848b8605Smrg/* cl_gl_texture_info */ 53848b8605Smrg#define CL_GL_TEXTURE_TARGET 0x2004 54848b8605Smrg#define CL_GL_MIPMAP_LEVEL 0x2005 55848b8605Smrg#define CL_GL_NUM_SAMPLES 0x2012 56848b8605Smrg 57848b8605Smrg 58848b8605Smrgextern CL_API_ENTRY cl_mem CL_API_CALL 59848b8605SmrgclCreateFromGLBuffer(cl_context /* context */, 60848b8605Smrg cl_mem_flags /* flags */, 61848b8605Smrg cl_GLuint /* bufobj */, 62848b8605Smrg int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; 63848b8605Smrg 64848b8605Smrgextern CL_API_ENTRY cl_mem CL_API_CALL 65848b8605SmrgclCreateFromGLTexture(cl_context /* context */, 66848b8605Smrg cl_mem_flags /* flags */, 67848b8605Smrg cl_GLenum /* target */, 68848b8605Smrg cl_GLint /* miplevel */, 69848b8605Smrg cl_GLuint /* texture */, 70848b8605Smrg cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; 71848b8605Smrg 72848b8605Smrgextern CL_API_ENTRY cl_mem CL_API_CALL 73848b8605SmrgclCreateFromGLRenderbuffer(cl_context /* context */, 74848b8605Smrg cl_mem_flags /* flags */, 75848b8605Smrg cl_GLuint /* renderbuffer */, 76848b8605Smrg cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; 77848b8605Smrg 78848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 79848b8605SmrgclGetGLObjectInfo(cl_mem /* memobj */, 80848b8605Smrg cl_gl_object_type * /* gl_object_type */, 81848b8605Smrg cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; 82848b8605Smrg 83848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 84848b8605SmrgclGetGLTextureInfo(cl_mem /* memobj */, 85848b8605Smrg cl_gl_texture_info /* param_name */, 86848b8605Smrg size_t /* param_value_size */, 87848b8605Smrg void * /* param_value */, 88848b8605Smrg size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; 89848b8605Smrg 90848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 91848b8605SmrgclEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, 92848b8605Smrg cl_uint /* num_objects */, 93848b8605Smrg const cl_mem * /* mem_objects */, 94848b8605Smrg cl_uint /* num_events_in_wait_list */, 95848b8605Smrg const cl_event * /* event_wait_list */, 96848b8605Smrg cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; 97848b8605Smrg 98848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 99848b8605SmrgclEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, 100848b8605Smrg cl_uint /* num_objects */, 101848b8605Smrg const cl_mem * /* mem_objects */, 102848b8605Smrg cl_uint /* num_events_in_wait_list */, 103848b8605Smrg const cl_event * /* event_wait_list */, 104848b8605Smrg cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; 105848b8605Smrg 106848b8605Smrg 107848b8605Smrg/* Deprecated OpenCL 1.1 APIs */ 108848b8605Smrgextern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL 109848b8605SmrgclCreateFromGLTexture2D(cl_context /* context */, 110848b8605Smrg cl_mem_flags /* flags */, 111848b8605Smrg cl_GLenum /* target */, 112848b8605Smrg cl_GLint /* miplevel */, 113848b8605Smrg cl_GLuint /* texture */, 114848b8605Smrg cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; 115848b8605Smrg 116848b8605Smrgextern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL 117848b8605SmrgclCreateFromGLTexture3D(cl_context /* context */, 118848b8605Smrg cl_mem_flags /* flags */, 119848b8605Smrg cl_GLenum /* target */, 120848b8605Smrg cl_GLint /* miplevel */, 121848b8605Smrg cl_GLuint /* texture */, 122848b8605Smrg cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; 123848b8605Smrg 124848b8605Smrg/* cl_khr_gl_sharing extension */ 125848b8605Smrg 126848b8605Smrg#define cl_khr_gl_sharing 1 127848b8605Smrg 128848b8605Smrgtypedef cl_uint cl_gl_context_info; 129848b8605Smrg 130848b8605Smrg/* Additional Error Codes */ 131848b8605Smrg#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 132848b8605Smrg 133848b8605Smrg/* cl_gl_context_info */ 134848b8605Smrg#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 135848b8605Smrg#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 136848b8605Smrg 137848b8605Smrg/* Additional cl_context_properties */ 138848b8605Smrg#define CL_GL_CONTEXT_KHR 0x2008 139848b8605Smrg#define CL_EGL_DISPLAY_KHR 0x2009 140848b8605Smrg#define CL_GLX_DISPLAY_KHR 0x200A 141848b8605Smrg#define CL_WGL_HDC_KHR 0x200B 142848b8605Smrg#define CL_CGL_SHAREGROUP_KHR 0x200C 143848b8605Smrg 144848b8605Smrgextern CL_API_ENTRY cl_int CL_API_CALL 145848b8605SmrgclGetGLContextInfoKHR(const cl_context_properties * /* properties */, 146848b8605Smrg cl_gl_context_info /* param_name */, 147848b8605Smrg size_t /* param_value_size */, 148848b8605Smrg void * /* param_value */, 149848b8605Smrg size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; 150848b8605Smrg 151848b8605Smrgtypedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( 152848b8605Smrg const cl_context_properties * properties, 153848b8605Smrg cl_gl_context_info param_name, 154848b8605Smrg size_t param_value_size, 155848b8605Smrg void * param_value, 156848b8605Smrg size_t * param_value_size_ret); 157848b8605Smrg 158848b8605Smrg#ifdef __cplusplus 159848b8605Smrg} 160848b8605Smrg#endif 161848b8605Smrg 162848b8605Smrg#endif /* __OPENCL_CL_GL_H */ 163