cl_mem
clCreateFromGLRenderbuffer
(
| cl_context context, |
cl_mem_flags flags, | |
GLuint renderbuffer, | |
cl_int * errcode_ret) |
context
A valid OpenCL context created from an OpenGL context.
flags
A bit-field that is
used to specify usage information. Refer to the table at
clCreateBuffer
for a description of flags
. Only
CL_MEM_READ_ONLY
,
CL_MEM_WRITE_ONLY
, and
CL_MEM_READ_WRITE
values specified in the table at
clCreateBuffer
can be used.
renderbuffer
The name of a GL renderbuffer
object. The renderbuffer storage must be specified before the
image object can be created. The renderbuffer
format and dimensions defined by OpenGL will be used to create the
2D image object. Only GL renderbuffers with internal formats that
map to appropriate image channel order and data type specified in
the table of supported Image Channel Order Values
and the table of supported Image Channel Data Types for
cl_image_format
can be used to create the 2D image object.
errcode_ret
Returns an appropriate error code as described
below. If errcode_ret
is NULL, no error code is returned.
If the state of a GL renderbuffer object is modified through the GL API (i.e. changes
to the dimensions or format used to represent pixels of the GL renderbuffer using
appropriate GL API calls such as glRenderbufferStorage
) while
there exists a corresponding CL image object, subsequent use of the CL image object
will result in undefined behavior.
The clRetainMemObject and clReleaseMemObject functions can be used to retain and release the image objects.
The table below (Table 9.4) describes the list of GL texture internal formats and the corresponding CL image formats. If a GL texture object with an internal format from the table below is successfully created by OpenGL, then there is guaranteed to be a mapping to one of the corresponding CL image format(s) in that table. Texture objects created with other OpenGL internal formats may (but are not guaranteed to) have a mapping to a CL image format; if such mappings exist, they are guaranteed to preserve all color components, data types, and at least the number of bits/component actually allocated by OpenGL for that format.
GL internal format | CL image format (channel order, channel data type) |
---|---|
GL_RGBA8
|
CL_RGBA, CL_UNORM_INT8 or CL_BGRA, CL_UNORM_INT8
|
GL_RGBA , GL_UNSIGNED_INT_8_8_8_8_REV |
CL_RGBA, CL_UNORM_INT8
|
GL_BGRA , GL_UNSIGNED_INT_8_8_8_8_REV |
CL_BGRA, CL_UNORM_INT8
|
GL_RGBA16
|
CL_RGBA, CL_UNORM_INT16
|
GL_RGBA8I, GL_RGBA8I_EXT
|
CL_RGBA, CL_SIGNED_INT8
|
GL_RGBA16I, GL_RGBA16I_EXT
|
CL_RGBA, CL_SIGNED_INT16
|
GL_RGBA32I, GL_RGBA32I_EXT
|
CL_RGBA, CL_SIGNED_INT32
|
GL_RGBA8UI, GL_RGBA8UI_EXT
|
CL_RGBA, CL_UNSIGNED_INT8
|
GL_RGBA16UI, GL_RGBA16UI_EXT
|
CL_RGBA, CL_UNSIGNED_INT16
|
GL_RGBA32UI, GL_RGBA32UI_EXT
|
CL_RGBA, CL_UNSIGNED_INT32
|
GL_RGBA16F, GL_RGBA16F_ARB
|
CL_RGBA, CL_HALF_FLOAT
|
GL_RGBA32F, GL_RGBA32F_ARB
|
CL_RGBA, CL_FLOAT
|
Returns a valid non-zero OpenCL image object and errcode_ret
is set
to CL_SUCCESS if the image object is created successfully. Otherwise, it returns a NULL
value with one of the following error values returned in errcode_ret
:
context
is not
a valid context or was not created from a GL context.
flags
are not valid.
renderbuffer
is not
a GL renderbuffer object or if the width or height of renderbuffer
is zero.
renderbuffer
is a multi-sample GL renderbuffer object.