Summary | Features | Operators | Supported Devices | Setup Instructions | Build Instructions | Related Repos | Licensing | Contributions | Developer Resources
VXLIB is TI's optimized image-processing library for the C7™ DSP architecture. It provides a suite of kernels targeting the C7™ vector and streaming engines (SE/SA), enabling high-throughput image processing operations such as filtering, convolution, morphology, and pixel arithmetic on TI SoCs such as AM62D and AM275.
Each kernel ships in two variants selected at init time via the
VXLIB_FUNCTION_OPT / VXLIB_FUNCTION_NATC enum in the kernel's InitArgs:
| Suffix | Description |
|---|---|
_cn |
C-native reference (NATC) — portable, functionally correct, used for validation |
_ci |
C7™ intrinsic (OPT) — hardware-optimized, targets SE/SA streaming engines |
Each kernel has a corresponding test driver (_d.c). Some kernels additionally include a Python
reference implementation under test/VXLIB_idat_gen/VXLIB_<kernel>/ for test vector generation.
- 30+ kernels spanning pixel arithmetic, filtering, morphology, feature detection, and image conversion
- C7™ streaming engine optimized — leverages SE/SA hardware for peak throughput across all kernels
- Portable reference implementations —
_cnvariants enable host-side validation and porting - CMake-based build with presets for PC simulation and on-target deployment
- Multi-type support —
uint8_t,int16_t,uint16_t,int32_t,float
| Kernel | Description |
|---|---|
VXLIB_add |
Element-wise addition of two images |
VXLIB_subtract |
Element-wise subtraction of two images |
VXLIB_multiply |
Element-wise multiplication of two images |
VXLIB_absDiff |
Absolute difference between two images |
VXLIB_addSquare |
Add the square of a pixel value to an accumulator |
VXLIB_addWeight |
Weighted addition of two images |
| Kernel | Description |
|---|---|
VXLIB_and |
Bitwise AND of two images |
VXLIB_or |
Bitwise OR of two images |
VXLIB_xor |
Bitwise XOR of two images |
VXLIB_not |
Bitwise NOT of an image |
| Kernel | Description |
|---|---|
VXLIB_box |
Box (averaging) filter |
VXLIB_gaussian |
Gaussian filter |
VXLIB_median |
Median filter |
VXLIB_convolve |
User-defined convolution kernel |
VXLIB_halfScaleGaussian |
Half-scale Gaussian pyramid step |
| Kernel | Description |
|---|---|
VXLIB_dilate |
Morphological dilation |
| Kernel | Description |
|---|---|
VXLIB_magnitude |
Gradient magnitude from Sobel x/y components |
VXLIB_histogram |
Compute image histogram |
VXLIB_meanStdDev |
Mean and standard deviation of pixel values |
VXLIB_minMaxLoc |
Minimum and maximum pixel value and location |
VXLIB_normL1 |
L1 norm of an image or vector |
VXLIB_normL2 |
L2 norm of an image or vector |
| Kernel | Description |
|---|---|
VXLIB_accumulateImage |
Accumulate an image into a running sum |
VXLIB_accumulateSquareImage |
Accumulate the square of an image |
VXLIB_accumulateWeightImage |
Weighted accumulation of an image |
| Kernel | Description |
|---|---|
VXLIB_convertDepth |
Convert pixel depth (e.g., U8 to S16) |
VXLIB_tableLookup |
Apply a lookup table transformation |
VXLIB_thresholdBinary |
Binary threshold (pixels above/below threshold → 0 or 255) |
VXLIB_thresholdRange |
Range threshold (pixels inside/outside range → 0 or 255) |
| Device | C7™ Core |
|---|---|
| AM62D | C7504 |
| AM275 | C7524 |
-
Linux host (Ubuntu 20.04 or later recommended)
-
CMake ≥ 3.21
-
TI C7000 Code Generation Tools (
ti-cgt-c7000) — install to~/ti/Download from TI CGT C7000. Default expected path:
~/ti/ti-cgt-c7000_5.0.0.LTS/Or set the environment variable before building:
export CGT7X_ROOT=/path/to/ti-cgt-c7000_<version>
VXLIB uses CMake presets to manage build configurations.
| Preset | SoC | Platform |
|---|---|---|
release-autotest-am62d-pc |
AM62D | PC simulation + tests |
release-autotest-am62d-target |
AM62D | On-device + tests |
release-autotest-am275-pc |
AM275 | PC simulation + tests |
release-autotest-am275-target |
AM275 | On-device + tests |
release-buildlib-am62d-pc |
AM62D | PC (library only) |
release-buildlib-am62d-target |
AM62D | On-device (library only) |
release-buildlib-am275-pc |
AM275 | PC (library only) |
release-buildlib-am275-target |
AM275 | On-device (library only) |
# Configure
cmake -S . -B build --preset=release-autotest-am62d-pc
# Build
cmake --build build -- -j$(nproc)
# Build test binaries (ctest not supported; run binaries directly on target)
cmake --build build -- -j$(nproc)cmake -S . -B build --preset=release-autotest-am62d-target
cmake --build build -- -j$(nproc)cmake -S . -B build --preset=release-buildlib-am62d-pc
cmake --build build -- -j$(nproc)- MCU+ SDK — SoC drivers and middleware for AM2x/AM6x devices
This repository is licensed under the Apache License, Version 2.0. See LICENSE for the full text.
All source files carry an SPDX Apache-2.0 identifier.
This repository is not currently accepting community contributions.
Bug reports and feature requests are welcome via TI E2E Community Forums.