blob: 4a741ad20739d31713c703b365530358a4913f52 [file] [log] [blame]
Name
CL_QCOM_EXT_HOST_PTR
Name Strings
cl_qcom_ext_host_ptr
Contact
ssusheel at quicinc dot com
dgarcia at qti dot qualcomm dot com
Contributors
Balaji Calidas, QUALCOMM
David Garcia, QUALCOMM
Rajeev Rao, QUALCOMM
Sushmita Susheelendra, QUALCOMM Innovation Center Inc.
Status
SHIPPING
Number
OpenCL Extension #21
Dependencies
OpenCL 1.1 is required.
This extension is written against the OpenCL 1.1 specification
Overview
This extension extends the functionality provided by
clCreateBuffer, clCreateImage2D, clCreateImage3D.
It allows applications to specify a new flag CL_MEM_EXT_HOST_PTR_QCOM
which enables the driver to map external memory allocations
--to be defined in future layered extensions--
to the device's address space and thus avoiding having to
copy data back and forth between the host and the device.
IP Status
No known IP claims.
New Procedures and Functions
cl_int clGetDeviceImageInfoQCOM(cl_device_id device,
size_t image_width,
size_t image_height,
const cl_image_format *image_format,
cl_image_pitch_info_qcom param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
New Types
typedef cl_uint cl_image_pitch_info_qcom;
New Tokens
Accepted by the <param_name> argument of clGetDeviceInfo
CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0
CL_DEVICE_PAGE_SIZE_QCOM 0x40A1
Accepted by the <flags> argument of clCreateBuffer, clCreateImage2D and clCreateImage3D:
CL_MEM_EXT_HOST_PTR_QCOM (1 << 29)
Accepted by the <host_ptr> argument of clCreateBuffer, clCreateImage2D and clCreateImage3D:
typedef struct _cl_mem_ext_host_ptr
{
// Type of external memory allocation.
// Legal values will be defined in layered extensions.
cl_uint allocation_type;
// Host cache policy for this external memory allocation.
cl_uint host_cache_policy;
} cl_mem_ext_host_ptr;
Accepted values for cl_mem_ext_host_ptr::host_cache_policy:
CL_MEM_HOST_UNCACHED_QCOM 0x40A4
CL_MEM_HOST_WRITEBACK_QCOM 0x40A5
CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6
CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7
Accepted by the <param_name> argument of clGetDeviceImageInfoQCOM
CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2
CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3
Additions to Chapter 5.2.1 of the OpenCL 1.1 Specification
(Creating Buffer Objects)
Add the following token to Table 5.3 (clCreateBuffer List of supported cl_mem_flags values):
CL_MEM_EXT_HOST_PTR_QCOM This flag is valid only when used together with CL_MEM_USE_HOST_PTR.
If specified, it indicates that the <host_ptr> argument provided by
the application is actually a pointer to cl_mem_ext_host_ptr.
When CL_MEM_EXT_HOST_PTR_QCOM is enabled in the <flags> argument, then <host_ptr> is interpreted as a pointer to cl_mem_ext_host_ptr.
The application must then initialize cl_mem_ext_host_ptr::allocation_type to the allowed token values defined in future layered extensions.
The application must also initialize cl_mem_ext_host_ptr::host_cache_policy to one of CL_MEM_HOST_UNCACHED_QCOM, CL_MEM_HOST_WRITEBACK_QCOM,
CL_MEM_HOST_WRITETHROUGH_QCOM, or CL_MEM_HOST_WRITE_COMBINING_QCOM according to the cache policy used in the host for this memory allocation.
Add the following token to Table 4.3 (clGetDeviceInfo OpenCL Device Queries):
CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM Returns the amount of memory padding that the application must add
to the end of every external allocation that will be used in conjunction with
CL_MEM_EXT_HOST_PTR_QCOM.
CL_DEVICE_PAGE_SIZE_QCOM Returns the device's page size.
The application may query the row and slice pitch values using clGetDeviceImageInfoQCOM
and provide the queried values or any other supported value to clCreateImage2D and clCreateImage3D
when using CL_MEM_EXT_HOST_PTR_QCOM.
A supported value for row pitch and slice pitch is defined respectively as:
* Any value greater than or equal to CL_IMAGE_ROW_PITCH that is also a multiple of CL_IMAGE_ROW_ALIGNMENT_QCOM
* Any value greater than or equal to CL_IMAGE_SLICE_PITCH that is also a multiple of CL_IMAGE_SLICE_ALIGNMENT_QCOM
Additions to Section 5.3 after clGetImageInfo
An application that creates OpenCL image objects with the CL_MEM_EXT_HOST_PTR_QCOM flag
can invoke the following function to query the required row pitch, slice pitch and
alignment for a particular device:
cl_int clGetDeviceImageInfoQCOM(cl_device_id device,
size_t image_width,
size_t image_height,
const cl_image_format *image_format,
cl_image_pitch_info_qcom param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
device - is a valid device
image_width - width of the image in image elements (pixels)
image_height - height of the image in image elements (pixels)
image_row_pitch - scan-line pitch in bytes
param_name - specifies the information to query. The list of supported param_name types and the
information returned in param_value by clGetImageInfo is described in table 5.XXX
param_value - is a pointer to memory where the appropriate result being queried is returned. If
param_value is NULL, it is ignored.
param_value_size - is used to specify the size in bytes of memory pointed to by param_value.
This size must be >= size of return type as described in table 5.8.
param_value_size_ret - returns the actual size in bytes of data being queried by param_value. If
param_value_size_ret is NULL, it is ignored.
clGetDeviceImageInfoQCOM returns CL_SUCCESS if the function is executed successfully.
Otherwise, it returns one of the following errors:
CL_INVALID_VALUE - if param_name is not valid, or if size in bytes specified by param_value_size
is < size of return type for that param_value and param_value is not NULL.
CL_INVALID_MEM_OBJECT - if image is a not a valid image object.
CL_OUT_OF_RESOURCES - if there is a failure to allocate resources required by the OpenCL implementation on the device.
CL_OUT_OF_HOST_MEMORY - if there is a failure to allocate resources required by the OpenCL implementation on the host.
Table 5.XXX
List of supported param_names by clGetDeviceImageInfoQCOM
cl_image_pitch_info_qcom Return Type Info returned in param_value
CL_IMAGE_ROW_PITCH cl_uint Returns the image row pitch supported by this device
CL_IMAGE_ROW_ALIGNMENT_QCOM cl_uint Returns the image row pitch alignment supported by this device
CL_IMAGE_SLICE_PITCH cl_uint Returns the image slice pitch supported by this device
CL_IMAGE_SLICE_ALIGNMENT_QCOM cl_uint Returns the image slice pitch alignment supported by this device
Additions to Section 5.3.1. (Creating Image Objects) at the end
of the list of errors returned by clCreateImage2D and clCreateImage3D
CL_INVALID_VALUE if <flags> has CL_MEM_EXT_HOST_PTR_QCOM enabled and yet
CL_MEM_USE_HOST_PTR is not enabled.
CL_INVALID_VALUE if <flags> has CL_MEM_EXT_HOST_PTR_QCOM enabled and if
<image_row_pitch> and/or <image_slice_pitch> fail to match the requirements
of section 5.3
CL_INVALID_VALUE if any of the fields in the struct pointed at by <host_ptr> are invalid.
Issues
None.
Revision History
Revision 1, 2013/05/27: Initial version.