TIOVX User Guide
OpenVX Standard Specification Interpretations

OpenVX 1.1 Specification: Vendor-specific implementation details broken down by section

  • Section 2.10.2: User Kernels Naming Conventions
    • TI's vendor ID is VX_ID_TI
    • TI user kernel strings begin with "com.ti"
    • TI user kernel enums begin with TIVX_KERNEL_
  • Section 2.12: Targets
    • TI's targets can be found at <TIOVX_PATH>/include/TI/tivx.h
  • Section 2.18.1: Extending Attributes
    • TI's vendor extension ID is VX_ID_TI
  • Section 2.18.2: Vendor Custom Kernels
    • Further documentation is provided for any custom kernel extension
  • Section 2.18.3: Vendor Custom extensions
    • TI does not currently support any custom extensions
  • Section 2.18.4: Hinting
    • TI does not currently support any custom hints

Additional specification interpretation beyond the scope of OpenVX 1.1 Specification:

  • Vendor Naming Conventions
    • TI's naming convention append "tivx" to the front of a given object. For example, a TI extension of the df_image_e is called "tivx_df_image_e".
    • TI's enumeration values append "TIVX" to the front of an enum. For example, a TI-specific target host is called TIVX_TARGET_HOST.

Context Creation

  • The TI Implementation of OpenVX supports the creation of a single context. Additional calls to vxCreateContext beyond the initial call simply return a reference to the initially created context.
  • Furthermore, the TIVX_CONTEXT_MAX_OBJECTS does not take effect. It merely provides the value of the amount of contexts that are allowed, namely 1.

Valid Region

  • The valid regions for each kernel are set prior to graph verification and restrictions to valid regions are propagated to downstream kernels during the initialize callbacks of each kernel.
  • After graph verification, the valid regions for each kernel have been set.
  • Therefore, following graph verification, changes to the valid region using vxSetImageValidRectangle must not be made.

Data Object Mapping

  • The following functions are used for mapping of specific data objects:
    • vxMapArrayRange
    • vxMapImagePatch
    • tivxMapTensorPatch
  • The types of mapping supported for these functions are the following:
    • VX_READ_ONLY
    • VX_READ_AND_WRITE
    • VX_WRITE_ONLY
  • The framework allows multiple mappings of the same region of a given data object.
  • Therefore, the user must be aware of the regions that have been mapped and the read/write privileges that each mapping has been granted.

Tensor Object

  • Each tensor is mapped to a single contiguous buffer, of size = stride[number_of_dimensions - 1U] * dimensions[number_of_dimensions - 1U]