Name Strings

    cl_qcom_ext_host_ptr_iocoherent

Contributors

    Balaji Calidas, Qualcomm Technologies, Inc.
    Manali Torpe, Qualcomm Innovation Center, Inc.
    Sreelakshmi Haridas Maruthur, Qualcomm Innovation Center, Inc.

Contact

    bcalidas at qti dot qualcomm dot com

Version

    Version 4, 2018/03/06

Number

    OpenCL Extension #TBD

Status

    Shipping

Extension Type

    OpenCL device extension

Dependencies

    OpenCL 1.1 is required.
    cl_qcom_ext_host_ptr is required.

    This extension extends the functionality of cl_qcom_ext_host_ptr.

Overview

    This extension extends the functionality provided by cl_qcom_ext_host_ptr by
    adding a new host cache policy. It allows applications to specify a new
    value, CL_MEM_HOST_IOCOHERENT_QCOM, for
    cl_mem_ext_host_ptr::host_cache_policy. When the application selects this
    value for host cache policy, the imported allocation is mapped as
    io-coherent for the GPU. This in turn avoids the need for the OpenCL driver
    to explicitly issue CPU cache operation calls. Although GPU performance can
    be slower in some cases for io-coherent allocations, the overall performance
    can improve due to the elimination of explicit CPU cache operations.

Header File

    cl_ext.h

New Tokens

    Modification to handling of <host_ptr> argument of clCreateBuffer,
    clCreateImage2D and clCreateImage3D when CL_MEM_EXT_HOST_PTR_QCOM is
    specified in the <flags> argument.

    New accepted value for cl_mem_ext_host_ptr::host_cache_policy:

        CL_MEM_HOST_IOCOHERENT_QCOM                0x40A9

    As described in the cl_qcom_ext_host_ptr spec, 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 initialize
    cl_mem_ext_host_ptr::host_cache_policy to one of CL_MEM_HOST_UNCACHED_QCOM,
    CL_MEM_HOST_WRITEBACK_QCOM, or CL_MEM_HOST_IOCOHERENT_QCOM according to the
    cache policy used in the host for this memory allocation.
    CL_MEM_HOST_IOCOHERENT_QCOM can only be specified when the memory was
    originally allocated as cached. Use of this value with an uncached
    allocation will lead to undefined results.

Revision History

    Revision 1, 2018/01/03: Initial version.
    Revision 2, 2018/01/15: Minor edits.
    Revision 3, 2018/01/19: Formatting and misc changes. No functional changes.
    Revision 4, 2018/03/06: Corrected token value.

