1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/********************************************************************************** 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (c) 2008-2010 The Khronos Group Inc. 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and/or associated documentation files (the 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * "Materials"), to deal in the Materials without restriction, including 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * without limitation the rights to use, copy, modify, merge, publish, 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * distribute, sublicense, and/or sell copies of the Materials, and to 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * permit persons to whom the Materials are furnished to do so, subject to 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the following conditions: 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice shall be included 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * in all copies or substantial portions of the Materials. 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org **********************************************************************************/ 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * cl_gl.h contains Khronos-approved (KHR) OpenCL extensions which have 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OpenGL dependencies. The application is responsible for #including 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OpenGL or OpenGL ES headers before #including cl_gl.h. 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef __OPENCL_CL_GL_H 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __OPENCL_CL_GL_H 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifdef __APPLE__ 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <OpenCL/cl.h> 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <OpenGL/CGLDevice.h> 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#else 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <CL/cl.h> 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifdef __cplusplus 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern "C" { 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef cl_uint cl_gl_object_type; 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef cl_uint cl_gl_texture_info; 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef cl_uint cl_gl_platform_info; 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef struct __GLsync *cl_GLsync; 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* cl_gl_object_type */ 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_GL_OBJECT_BUFFER 0x2000 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_GL_OBJECT_TEXTURE2D 0x2001 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_GL_OBJECT_TEXTURE3D 0x2002 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_GL_OBJECT_RENDERBUFFER 0x2003 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* cl_gl_texture_info */ 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_GL_TEXTURE_TARGET 0x2004 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_GL_MIPMAP_LEVEL 0x2005 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_mem CL_API_CALL 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclCreateFromGLBuffer(cl_context /* context */, 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_mem_flags /* flags */, 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLuint /* bufobj */, 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_mem CL_API_CALL 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclCreateFromGLTexture2D(cl_context /* context */, 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_mem_flags /* flags */, 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLenum /* target */, 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLint /* miplevel */, 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLuint /* texture */, 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_mem CL_API_CALL 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclCreateFromGLTexture3D(cl_context /* context */, 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_mem_flags /* flags */, 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLenum /* target */, 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLint /* miplevel */, 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLuint /* texture */, 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_mem CL_API_CALL 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclCreateFromGLRenderbuffer(cl_context /* context */, 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_mem_flags /* flags */, 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLuint /* renderbuffer */, 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_int CL_API_CALL 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclGetGLObjectInfo(cl_mem /* memobj */, 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_gl_object_type * /* gl_object_type */, 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_int CL_API_CALL 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclGetGLTextureInfo(cl_mem /* memobj */, 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_gl_texture_info /* param_name */, 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org size_t /* param_value_size */, 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void * /* param_value */, 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_int CL_API_CALL 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_uint /* num_objects */, 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const cl_mem * /* mem_objects */, 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_uint /* num_events_in_wait_list */, 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const cl_event * /* event_wait_list */, 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_int CL_API_CALL 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_uint /* num_objects */, 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const cl_mem * /* mem_objects */, 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_uint /* num_events_in_wait_list */, 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const cl_event * /* event_wait_list */, 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* cl_khr_gl_sharing extension */ 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define cl_khr_gl_sharing 1 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef cl_uint cl_gl_context_info; 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Additional Error Codes */ 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* cl_gl_context_info */ 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Additional cl_context_properties */ 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_GL_CONTEXT_KHR 0x2008 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_EGL_DISPLAY_KHR 0x2009 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_GLX_DISPLAY_KHR 0x200A 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_WGL_HDC_KHR 0x200B 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define CL_CGL_SHAREGROUP_KHR 0x200C 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern CL_API_ENTRY cl_int CL_API_CALL 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclGetGLContextInfoKHR(const cl_context_properties * /* properties */, 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_gl_context_info /* param_name */, 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org size_t /* param_value_size */, 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void * /* param_value */, 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtypedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const cl_context_properties * properties, 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cl_gl_context_info param_name, 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org size_t param_value_size, 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void * param_value, 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org size_t * param_value_size_ret); 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifdef __cplusplus 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif /* __OPENCL_CL_GL_H */ 156