Requirements and Functionality#
NPPDx is a CUDA C++ header-only library. To use this, the following software is required:
CUDA Toolkit: 13.0 or newer
CUDA compiler: C++17 required
Host Compiler: C++17 required
CMake (Optional): 3.30 or newer – to build the shipped examples or consume the CMake package; not required for a manual
nvcc -Ibuild
Supported Hardware and Platforms#
CPU architecture:
x86_64on Linux orx64on Windows. aarch64 is not officially supported.NVIDIA GPU architectures:
sm_75(Turing) or newer.
Supported Compilers#
CUDA compilers:
NVCC: 13.0+ (CUDA Toolkit 13.0 or newer)
Clang: 21+ for Clang device compilation to PTX (see Installation Guide)
Host / C++ compilers (C++17 required):
GCC 10 or newer on Linux
Clang 15 or newer when using Clang as the host compiler on Linux
MSVC 1944 or newer with Visual Studio 2022 on Windows
Dependencies#
commonDx headers (bundled under
include/in the repository)
Supported Functionality#
This is an Early Access (EA) version of NPPDx. The current functionality of the library is a subset of the capabilities that will be available in the first official release.
Supported memory packing formats#
The following packing_format values are supported for ingest and exgest
(for definitions, see Terminology). FFmpeg names are
the closest matching pixel formats. Texture Buffer support marks formats
that can use the hardware accelerated (CUDA array) texture and surface path.
NPPDx format |
Description |
FFmpeg equivalent |
Texture Buffer support |
|---|---|---|---|
Packed RGB |
|||
|
8-bit packed RGB |
|
Yes |
|
10-bit packed RGB ( |
|
|
|
16-bit packed RGB |
|
|
Packed YUV 4:2:2 |
|||
|
10-bit packed Y0 U0 Y1 V0 in 16-bit samples |
|
|
|
10-bit packed (2 pixels per 5 bytes) |
n/a |
|
|
10-bit packed (4 |
|
|
|
8-bit packed Y0 U01 Y1 V01 (4 bytes per 2 pixels; YUYV-style) |
|
|
Semi-planar YUV |
|||
|
8-bit semi-planar 4:2:0 |
|
Yes |
|
10-bit semi-planar 4:2:0 |
|
Yes |
|
8-bit semi-planar 4:2:2 |
|
Yes |
|
16-bit semi-planar 4:2:2 |
|
Yes |
Planar RGB/BGR |
|||
|
8-bit planar RGB (R, G, B plane order) |
|
Yes |
|
8-bit planar BGR (B, G, R plane order) |
|
Yes |
Planar YUV |
|||
|
8-bit planar 4:2:0 |
|
|
|
10-bit planar 4:2:0 |
|
|
|
8-bit planar 4:2:2 |
|
|
|
10-bit planar 4:2:2 |
|
|
|
8-bit planar 4:4:4 |
|
Yes |
|
10-bit planar 4:4:4 |
|
Yes |
The authoritative enum is in operators/formats.hpp.
Supported image processing step categories#
The following processing step categories are available to be fused between ingest and exgest (for definitions, see Terminology):
Pointwise process (see Pointwise processing steps):
color_convert,gamma,affine_channel_mapArea process (see Area processing steps): box_blur, gaussian_blur, median, sharpen, resize (nearest, bilinear, bicubic, Lanczos3)
Use is_supported_v or the shipped examples to verify that a specific processing step is valid for the tile size, format, and architecture combination.