Merge pull request #4127 from avershov:opengl-opencl-sample
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// AUTOGENERATED, DO NOT EDIT
|
||||
//
|
||||
#ifndef __OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_HPP__
|
||||
#error "Invalid usage"
|
||||
#endif
|
||||
|
||||
// generated by parser_cl.py
|
||||
#define clCreateFromGLBuffer clCreateFromGLBuffer_
|
||||
#define clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer_
|
||||
#define clCreateFromGLTexture clCreateFromGLTexture_
|
||||
#define clCreateFromGLTexture2D clCreateFromGLTexture2D_
|
||||
#define clCreateFromGLTexture3D clCreateFromGLTexture3D_
|
||||
#define clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects_
|
||||
#define clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects_
|
||||
#define clGetGLContextInfoKHR clGetGLContextInfoKHR_
|
||||
#define clGetGLObjectInfo clGetGLObjectInfo_
|
||||
#define clGetGLTextureInfo clGetGLTextureInfo_
|
||||
|
||||
#if defined __APPLE__
|
||||
#include <OpenCL/cl_gl.h>
|
||||
#else
|
||||
#include <CL/cl_gl.h>
|
||||
#endif
|
||||
|
||||
// generated by parser_cl.py
|
||||
#undef clCreateFromGLBuffer
|
||||
#define clCreateFromGLBuffer clCreateFromGLBuffer_pfn
|
||||
#undef clCreateFromGLRenderbuffer
|
||||
#define clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer_pfn
|
||||
#undef clCreateFromGLTexture
|
||||
#define clCreateFromGLTexture clCreateFromGLTexture_pfn
|
||||
#undef clCreateFromGLTexture2D
|
||||
#define clCreateFromGLTexture2D clCreateFromGLTexture2D_pfn
|
||||
#undef clCreateFromGLTexture3D
|
||||
#define clCreateFromGLTexture3D clCreateFromGLTexture3D_pfn
|
||||
#undef clEnqueueAcquireGLObjects
|
||||
#define clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects_pfn
|
||||
#undef clEnqueueReleaseGLObjects
|
||||
#define clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects_pfn
|
||||
#undef clGetGLContextInfoKHR
|
||||
#define clGetGLContextInfoKHR clGetGLContextInfoKHR_pfn
|
||||
#undef clGetGLObjectInfo
|
||||
#define clGetGLObjectInfo clGetGLObjectInfo_pfn
|
||||
#undef clGetGLTextureInfo
|
||||
#define clGetGLTextureInfo clGetGLTextureInfo_pfn
|
||||
|
||||
// generated by parser_cl.py
|
||||
extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLBuffer)(cl_context, cl_mem_flags, cl_GLuint, int*);
|
||||
extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLRenderbuffer)(cl_context, cl_mem_flags, cl_GLuint, cl_int*);
|
||||
extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLTexture)(cl_context, cl_mem_flags, cl_GLenum, cl_GLint, cl_GLuint, cl_int*);
|
||||
extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLTexture2D)(cl_context, cl_mem_flags, cl_GLenum, cl_GLint, cl_GLuint, cl_int*);
|
||||
extern CL_RUNTIME_EXPORT cl_mem (CL_API_CALL*clCreateFromGLTexture3D)(cl_context, cl_mem_flags, cl_GLenum, cl_GLint, cl_GLuint, cl_int*);
|
||||
extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueAcquireGLObjects)(cl_command_queue, cl_uint, const cl_mem*, cl_uint, const cl_event*, cl_event*);
|
||||
extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clEnqueueReleaseGLObjects)(cl_command_queue, cl_uint, const cl_mem*, cl_uint, const cl_event*, cl_event*);
|
||||
extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetGLContextInfoKHR)(const cl_context_properties*, cl_gl_context_info, size_t, void*, size_t*);
|
||||
extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetGLObjectInfo)(cl_mem, cl_gl_object_type*, cl_GLuint*);
|
||||
extern CL_RUNTIME_EXPORT cl_int (CL_API_CALL*clGetGLTextureInfo)(cl_mem, cl_gl_texture_info, size_t, void*, size_t*);
|
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// AUTOGENERATED, DO NOT EDIT
|
||||
//
|
||||
#ifndef __OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_WRAPPERS_HPP__
|
||||
#error "Invalid usage"
|
||||
#endif
|
||||
|
||||
// generated by parser_cl.py
|
||||
#undef clCreateFromGLBuffer
|
||||
#define clCreateFromGLBuffer clCreateFromGLBuffer_fn
|
||||
inline cl_mem clCreateFromGLBuffer(cl_context p0, cl_mem_flags p1, cl_GLuint p2, int* p3) { return clCreateFromGLBuffer_pfn(p0, p1, p2, p3); }
|
||||
#undef clCreateFromGLRenderbuffer
|
||||
#define clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer_fn
|
||||
inline cl_mem clCreateFromGLRenderbuffer(cl_context p0, cl_mem_flags p1, cl_GLuint p2, cl_int* p3) { return clCreateFromGLRenderbuffer_pfn(p0, p1, p2, p3); }
|
||||
#undef clCreateFromGLTexture
|
||||
#define clCreateFromGLTexture clCreateFromGLTexture_fn
|
||||
inline cl_mem clCreateFromGLTexture(cl_context p0, cl_mem_flags p1, cl_GLenum p2, cl_GLint p3, cl_GLuint p4, cl_int* p5) { return clCreateFromGLTexture_pfn(p0, p1, p2, p3, p4, p5); }
|
||||
#undef clCreateFromGLTexture2D
|
||||
#define clCreateFromGLTexture2D clCreateFromGLTexture2D_fn
|
||||
inline cl_mem clCreateFromGLTexture2D(cl_context p0, cl_mem_flags p1, cl_GLenum p2, cl_GLint p3, cl_GLuint p4, cl_int* p5) { return clCreateFromGLTexture2D_pfn(p0, p1, p2, p3, p4, p5); }
|
||||
#undef clCreateFromGLTexture3D
|
||||
#define clCreateFromGLTexture3D clCreateFromGLTexture3D_fn
|
||||
inline cl_mem clCreateFromGLTexture3D(cl_context p0, cl_mem_flags p1, cl_GLenum p2, cl_GLint p3, cl_GLuint p4, cl_int* p5) { return clCreateFromGLTexture3D_pfn(p0, p1, p2, p3, p4, p5); }
|
||||
#undef clEnqueueAcquireGLObjects
|
||||
#define clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects_fn
|
||||
inline cl_int clEnqueueAcquireGLObjects(cl_command_queue p0, cl_uint p1, const cl_mem* p2, cl_uint p3, const cl_event* p4, cl_event* p5) { return clEnqueueAcquireGLObjects_pfn(p0, p1, p2, p3, p4, p5); }
|
||||
#undef clEnqueueReleaseGLObjects
|
||||
#define clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects_fn
|
||||
inline cl_int clEnqueueReleaseGLObjects(cl_command_queue p0, cl_uint p1, const cl_mem* p2, cl_uint p3, const cl_event* p4, cl_event* p5) { return clEnqueueReleaseGLObjects_pfn(p0, p1, p2, p3, p4, p5); }
|
||||
#undef clGetGLContextInfoKHR
|
||||
#define clGetGLContextInfoKHR clGetGLContextInfoKHR_fn
|
||||
inline cl_int clGetGLContextInfoKHR(const cl_context_properties* p0, cl_gl_context_info p1, size_t p2, void* p3, size_t* p4) { return clGetGLContextInfoKHR_pfn(p0, p1, p2, p3, p4); }
|
||||
#undef clGetGLObjectInfo
|
||||
#define clGetGLObjectInfo clGetGLObjectInfo_fn
|
||||
inline cl_int clGetGLObjectInfo(cl_mem p0, cl_gl_object_type* p1, cl_GLuint* p2) { return clGetGLObjectInfo_pfn(p0, p1, p2); }
|
||||
#undef clGetGLTextureInfo
|
||||
#define clGetGLTextureInfo clGetGLTextureInfo_fn
|
||||
inline cl_int clGetGLTextureInfo(cl_mem p0, cl_gl_texture_info p1, size_t p2, void* p3, size_t* p4) { return clGetGLTextureInfo_pfn(p0, p1, p2, p3, p4); }
|
@@ -0,0 +1,65 @@
|
||||
/*M///////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
|
||||
//
|
||||
// By downloading, copying, installing or using the software you agree to this license.
|
||||
// If you do not agree to this license, do not download, install,
|
||||
// copy or use the software.
|
||||
//
|
||||
//
|
||||
// License Agreement
|
||||
// For Open Source Computer Vision Library
|
||||
//
|
||||
// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
|
||||
// Third party copyrights are property of their respective owners.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// * Redistribution's of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
//
|
||||
// * Redistribution's in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// * The name of the copyright holders may not be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// This software is provided by the copyright holders and contributors "as is" and
|
||||
// any express or implied warranties, including, but not limited to, the implied
|
||||
// warranties of merchantability and fitness for a particular purpose are disclaimed.
|
||||
// In no event shall the OpenCV Foundation or contributors be liable for any direct,
|
||||
// indirect, incidental, special, exemplary, or consequential damages
|
||||
// (including, but not limited to, procurement of substitute goods or services;
|
||||
// loss of use, data, or profits; or business interruption) however caused
|
||||
// and on any theory of liability, whether in contract, strict liability,
|
||||
// or tort (including negligence or otherwise) arising in any way out of
|
||||
// the use of this software, even if advised of the possibility of such damage.
|
||||
//
|
||||
//M*/
|
||||
|
||||
#ifndef __OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_HPP__
|
||||
#define __OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_HPP__
|
||||
|
||||
#if defined HAVE_OPENCL && defined HAVE_OPENGL
|
||||
|
||||
#include "opencl_core.hpp"
|
||||
|
||||
#if defined(HAVE_OPENCL_STATIC)
|
||||
|
||||
#if defined __APPLE__
|
||||
#include <OpenCL/cl_gl.h>
|
||||
#else
|
||||
#include <CL/cl_gl.h>
|
||||
#endif
|
||||
|
||||
#else // HAVE_OPENCL_STATIC
|
||||
|
||||
#include "autogenerated/opencl_gl.hpp"
|
||||
|
||||
#endif // HAVE_OPENCL_STATIC
|
||||
|
||||
#endif // defined HAVE_OPENCL && defined HAVE_OPENGL
|
||||
|
||||
#endif // __OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_HPP__
|
@@ -0,0 +1,47 @@
|
||||
/*M///////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
|
||||
//
|
||||
// By downloading, copying, installing or using the software you agree to this license.
|
||||
// If you do not agree to this license, do not download, install,
|
||||
// copy or use the software.
|
||||
//
|
||||
//
|
||||
// License Agreement
|
||||
// For Open Source Computer Vision Library
|
||||
//
|
||||
// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
|
||||
// Third party copyrights are property of their respective owners.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// * Redistribution's of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
//
|
||||
// * Redistribution's in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// * The name of the copyright holders may not be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// This software is provided by the copyright holders and contributors "as is" and
|
||||
// any express or implied warranties, including, but not limited to, the implied
|
||||
// warranties of merchantability and fitness for a particular purpose are disclaimed.
|
||||
// In no event shall the OpenCV Foundation or contributors be liable for any direct,
|
||||
// indirect, incidental, special, exemplary, or consequential damages
|
||||
// (including, but not limited to, procurement of substitute goods or services;
|
||||
// loss of use, data, or profits; or business interruption) however caused
|
||||
// and on any theory of liability, whether in contract, strict liability,
|
||||
// or tort (including negligence or otherwise) arising in any way out of
|
||||
// the use of this software, even if advised of the possibility of such damage.
|
||||
//
|
||||
//M*/
|
||||
|
||||
#ifndef __OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_WRAPPERS_HPP__
|
||||
#define __OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_WRAPPERS_HPP__
|
||||
|
||||
#include "autogenerated/opencl_gl_wrappers.hpp"
|
||||
|
||||
#endif // __OPENCV_CORE_OCL_RUNTIME_OPENCL_GL_WRAPPERS_HPP__
|
@@ -48,6 +48,7 @@
|
||||
#endif
|
||||
|
||||
#include "opencv2/core.hpp"
|
||||
#include "ocl.hpp"
|
||||
|
||||
namespace cv { namespace ogl {
|
||||
|
||||
@@ -511,7 +512,30 @@ CV_EXPORTS void render(const Arrays& arr, int mode = POINTS, Scalar color = Scal
|
||||
*/
|
||||
CV_EXPORTS void render(const Arrays& arr, InputArray indices, int mode = POINTS, Scalar color = Scalar::all(255));
|
||||
|
||||
//! @} core_opengl
|
||||
/////////////////// CL-GL Interoperability Functions ///////////////////
|
||||
|
||||
namespace ocl {
|
||||
using namespace cv::ocl;
|
||||
|
||||
// TODO static functions in the Context class
|
||||
/** @brief Creates OpenCL context from GL.
|
||||
@return Returns reference to OpenCL Context
|
||||
*/
|
||||
CV_EXPORTS Context& initializeContextFromGL();
|
||||
|
||||
} // namespace cv::ogl::ocl
|
||||
|
||||
/** @brief Converts InputArray to Texture2D object.
|
||||
@param src - source InputArray.
|
||||
@param texture - destination Texture2D object.
|
||||
*/
|
||||
CV_EXPORTS void convertToGLTexture2D(InputArray src, Texture2D& texture);
|
||||
|
||||
/** @brief Converts Texture2D object to OutputArray.
|
||||
@param texture - source Texture2D object.
|
||||
@param dst - destination OutputArray.
|
||||
*/
|
||||
CV_EXPORTS void convertFromGLTexture2D(const Texture2D& texture, OutputArray dst);
|
||||
|
||||
}} // namespace cv::ogl
|
||||
|
||||
|
Reference in New Issue
Block a user