#pragma OPENCL EXTENSION cl_khr_mipmap_image : enable |
#pragma OPENCL EXTENSION cl_khr_mipmap_image_writes : enable |
This extension adds support for mipmaps. This proposal is implemented
as two optional extensions. The cl_khr_mipmap_image
extension implements support to create a mipmapped image, enqueue commands
to read/write/copy/map a region of a mipmapped image and built-in
functions that can be used to read a mip-mapped image in an OpenCL C
program. The cl_khr_mipmap_image_writes
extension
adds built-in functions that can be used to write a mip-mapped image in
an OpenCL C program. If the cl_khr_mipmap_image_writes
extension is supported by the OpenCL device, the
cl_khr_mipmap_image
extension must also be supported.
A mip-mapped 1D image, 1D image array, 2D image, 2D image array
or 3D image is created by specifying num_mip_levels
to be a value > 1 in cl_image_desc
passed to
clCreateImage.
The dimensions of a mip-mapped image can be a power of two or a
non-power of two. Each successively smaller mipmap level is half
the size of the previous level. If this half value is a fractional
value, it is rounded down to the nearest integer.
CL_MEM_USE_HOST_PTR
or CL_MEM_COPY_HOST_PTR
cannot be specified if a mipmapped image is created.
host_ptr
argument to
clCreateImage
must be a NULL value.
CL_MEM_OBJECT_IMAGE1D_BUFFER
images and multi-sampled (i.e. msaa) images.
Calls to clEnqueueReadImage,
clEnqueueWriteImage, and
clEnqueueMapImage can be used
to read from or write to a specific mip-level of a mip-mapped image.
If image
argument is a 1D image,
origin
[1] specifies the mip-level to use.
If image
argument is a 1D image array,
origin
[2] specifies the mip-level to use.
If image
argument is a 2D image,
origin
[3] specifies the mip-level to use.
If image
argument is a 2D image array or a 3D image,
origin
[3] specifies the mip-level to use.
Calls to clEnqueueCopyImage,
clEnqueueCopyImageToBuffer, and
clEnqueueCopyBufferToImage can also
be used to copy from and to a specific mip-level of a mip-mapped image.
If src_image
argument is a 1D image,
src_origin
[1] specifies the mip-level to use.
If src_image
argument is a 1D image array,
src_origin
[2] specifies the mip-level to use.
If src_image
argument is a 2D image,
src_origin
[3] specifies the mip-level to use.
If src_image
argument is a 2D image array or a 3D image,
src_origin
[3] specifies the mip-level to use.
If dst_image
argument is a 1D image,
dst_origin
[1] specifies the mip-level to use.
If dst_image
argument is a 1D image array,
dst_origin
[2] specifies the mip-level to use.
If dst_image
argument is a 2D image,
dst_origin
[3] specifies the mip-level to use.
If dst_image
argument is a 2D image array or a 3D image,
dst_origin
[3] specifies the mip-level to use.
If the mip level specified is not a valid value, these functions return the error CL_INVALID_MIP_LEVEL.
Add the following sampler properties that can be specified when a sampler object is created using clCreateSamplerWithProperties.
cl_sampler_properties enum | Property Value | Default Value |
---|---|---|
CL_SAMPLER_MIP_FILTER_MODE
|
cl_filter_mode |
CL_FILTER_NONE
|
CL_SAMPLER_LOD_MIN
|
float | 0.0f |
CL_SAMPLER_LOD_MAX
|
float |
MAXFLOAT
|
NOTE: The sampler properties CL_SAMPLER_MIP_FILTER_MODE
,
CL_SAMPLER_LOD_MIN
, and
CL_SAMPLER_LOD_MAX
cannot be specified with any
samplers initialized in the OpenCL program source. Only the default
values for these properties will be used. To create a sampler with
specific values for these properties, a sampler object must be created with
clCreateSamplerWithProperties
and passed as an argument to a kernel.
The image read and write functions read from and write to mip-level
0 if the image
argument is a mip-mapped image.
New built-in image read, write, and query functions are added to the
image functions
available.
NOTE: CL_SAMPLER_NORMALIZED_COORDS
must be
CL_TRUE
for the new built-in read functions
referred to above that read from a mip-mapped image; otherwise
the behavior is undefined. The value specified in the
lod
argument is clamped to the minimum of
(actual number of mip-levels – 1) in the image or value
specified for CL_SAMPLER_LOD_MAX
.
If the cl_khr_mipmap_image
extension is
supported by the OpenCL device, the
cl_khr_gl_sharing
extension adds support for creating a mip-mapped CL image from a mip-mapped GL texture.
To create a mip-mapped CL image from a mip-mapped GL texture, the
miplevel
argument to
clCreateFromGLTexture
should be a negative value. If miplevel
is a negative
value then a CL mipmapped image object is created from a mipmapped
GL texture object instead of a CL image object for a specific
miplevel of a GL texture.
EXTENSION, clCreateProgramWithBinary, Image Functions, clCreateFromGLTexture, clEnqueueCopyImage, clEnqueueCopyImageToBuffer, clEnqueueCopyBufferToImage, clEnqueueReadImage, clEnqueueWriteImage, clEnqueueMapImage, clCreateImage