NAME¶
clGetExtensionFunctionAddressForPlatform - Returns the address of the extension
function named by funcname for a given platform.
void*
clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,
const char *funcname);
PARAMETERS¶
funcname
Name of an extension function.
DESCRIPTION¶
The function
clGetExtensionFunctionAddressForPlatform returns the address
of the extension function named by
funcname for a given
platform. The pointer returned should be cast to a function pointer
type matching the extension function's definition defined in the appropriate
extension specification and header file.
A return value of NULL indicates that the specified function does not exist for
the implementation or
platform is not a valid platform. A non-NULL
return value for
clGetExtensionFunctionAddressForPlatform does not
guarantee that an extension function is actually supported by the platform.
The application must also make a corresponding query using
clGetPlatformInfo(3clc) (platform,
CL_PLATFORM_EXTENSIONS, ... )
or
clGetDeviceInfo(3clc) (device,
CL_DEVICE_EXTENSIONS, ... ) to
determine if an extension is supported by the OpenCL implementation.
clGetExtensionFunctionAddressForPlatform may not be queried for core
(non-extension) functions in OpenCL. For functions that are queryable with
clGetExtensionFunctionAddressForPlatform, implementations may choose to
also export those functions statically from the object libraries implementing
those functions. However, portable applications cannot rely on this behavior.
Function pointer typedefs must be declared for all extensions that add API
entrypoints. These typedefs are a required part of the extension interface, to
be provided in an appropriate header (such as cl_ext.h if the extension is an
OpenCL extension, or cl_gl_ext.h if the extension is an OpenCL/OpenGL sharing
extension).
NOTES¶
Since there is no way to qualify the query with a device, the function pointer
returned must work for all implementations of that extension on different
devices for a platform. The behavior of calling a device extension function on
a device not supporting that extension is undefined.
Example¶
The following convention must be followed for all extensions affecting the host
API, where TAG can be
KHR,
EXT or vendor-specific:
#ifndef extension_name #define extension_name 1 // all data typedefs,
token #defines, prototypes, and // function pointer typedefs for this
extension // function pointer typedefs must use the // following naming
convention typedef CL_API_ENTRY return type (CL_API_CALL
*clextension_func_nameTAG_fn)(...); #endif // extension_name |
Consider, for example, the
cl_khr_gl_sharing(3clc) extension. This
extension would add the following to cl_gl_ext.h::
#ifndef cl_khr_gl_sharing #define cl_khr_gl_sharing 1 // all data
typedefs, token #defines, prototypes, and // function pointer typedefs for
this extension #define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000
#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 #define
CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 #define CL_GL_CONTEXT_KHR 0x2008
#define CL_EGL_DISPLAY_KHR 0x2009 #define CL_GLX_DISPLAY_KHR 0x200A
#define CL_WGL_HDC_KHR 0x200B #define CL_CGL_SHAREGROUP_KHR 0x200C //
function pointer typedefs must use the // following naming convention
typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( const
cl_context_properties * /* properties */, cl_gl_context_info /* param_name
*/, size_t /* param_value_size */, void * /* param_value */, size_t *
/*param_value_size_ret*/); #endif // cl_khr_gl_sharing |
SPECIFICATION¶
OpenCL Specification[1]
SEE ALSO¶
EXTENSION(3clc)
AUTHORS¶
The Khronos Group
COPYRIGHT¶
Copyright © 2007-2011 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction,
including without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to permit
persons to whom the Materials are furnished to do so, subject to the condition
that this copyright notice and permission notice shall be included in all
copies or substantial portions of the Materials.
NOTES¶
- 1.
- OpenCL Specification
page 7, section 9.2 - Getting OpenCL API Extension
Function Pointers