singe-npp 0.1.0-alpha.8

Safe Rust wrappers for NVIDIA Performance Primitives library (NPP).
Documentation
use singe_cuda::memory::DeviceMemory;

use crate::{
    context::StreamContext,
    error::Result,
    image::{
        statistics,
        view::{AC4, C1, C3, C4, ImageView},
    },
    pipeline::image::ImagePipeline,
};

use super::{
    DotProductImage, HistogramEvenChannelsImage, HistogramEvenImage, HistogramRangeChannelsImage,
    HistogramRangeImage,
};

impl_histogram_even_image!(u8, C1, statistics::histogram_even_u8_c1);
impl_histogram_even_image!(u16, C1, statistics::histogram_even_u16_c1);
impl_histogram_even_image!(i16, C1, statistics::histogram_even_i16_c1);

impl_histogram_even_channels_image!(u8, C3, 3, statistics::histogram_even_u8_c3);
impl_histogram_even_channels_image!(u16, C3, 3, statistics::histogram_even_u16_c3);
impl_histogram_even_channels_image!(i16, C3, 3, statistics::histogram_even_i16_c3);
impl_histogram_even_channels_image!(u8, C4, 4, statistics::histogram_even_u8_c4);
impl_histogram_even_channels_image!(u16, C4, 4, statistics::histogram_even_u16_c4);
impl_histogram_even_channels_image!(i16, C4, 4, statistics::histogram_even_i16_c4);
impl_histogram_even_channels_image!(u8, AC4, 3, statistics::histogram_even_u8_ac4);
impl_histogram_even_channels_image!(u16, AC4, 3, statistics::histogram_even_u16_ac4);
impl_histogram_even_channels_image!(i16, AC4, 3, statistics::histogram_even_i16_ac4);

impl_histogram_range_image!(u8, i32, C1, statistics::histogram_range_u8_c1);
impl_histogram_range_image!(u16, i32, C1, statistics::histogram_range_u16_c1);
impl_histogram_range_image!(i16, i32, C1, statistics::histogram_range_i16_c1);
impl_histogram_range_image!(f32, f32, C1, statistics::histogram_range_f32_c1);
impl_histogram_range_channels_image!(u8, i32, C3, 3, statistics::histogram_range_u8_c3);
impl_histogram_range_channels_image!(u16, i32, C3, 3, statistics::histogram_range_u16_c3);
impl_histogram_range_channels_image!(i16, i32, C3, 3, statistics::histogram_range_i16_c3);
impl_histogram_range_channels_image!(f32, f32, C3, 3, statistics::histogram_range_f32_c3);
impl_histogram_range_channels_image!(u8, i32, C4, 4, statistics::histogram_range_u8_c4);
impl_histogram_range_channels_image!(u16, i32, C4, 4, statistics::histogram_range_u16_c4);
impl_histogram_range_channels_image!(i16, i32, C4, 4, statistics::histogram_range_i16_c4);
impl_histogram_range_channels_image!(f32, f32, C4, 4, statistics::histogram_range_f32_c4);
impl_histogram_range_channels_image!(u8, i32, AC4, 3, statistics::histogram_range_u8_ac4);
impl_histogram_range_channels_image!(u16, i32, AC4, 3, statistics::histogram_range_u16_ac4);
impl_histogram_range_channels_image!(i16, i32, AC4, 3, statistics::histogram_range_i16_ac4);
impl_histogram_range_channels_image!(f32, f32, AC4, 3, statistics::histogram_range_f32_ac4);

impl_dot_product_image!(u8, C1, 1, statistics::dot_prod_u8_c1);
impl_dot_product_image!(i8, C1, 1, statistics::dot_prod_i8_c1);
impl_dot_product_image!(u16, C1, 1, statistics::dot_prod_u16_c1);
impl_dot_product_image!(i16, C1, 1, statistics::dot_prod_i16_c1);
impl_dot_product_image!(u32, C1, 1, statistics::dot_prod_u32_c1);
impl_dot_product_image!(i32, C1, 1, statistics::dot_prod_i32_c1);
impl_dot_product_image!(f32, C1, 1, statistics::dot_prod_f32_c1);
impl_dot_product_image!(u8, C3, 3, statistics::dot_prod_u8_c3);
impl_dot_product_image!(i8, C3, 3, statistics::dot_prod_i8_c3);
impl_dot_product_image!(u16, C3, 3, statistics::dot_prod_u16_c3);
impl_dot_product_image!(i16, C3, 3, statistics::dot_prod_i16_c3);
impl_dot_product_image!(u32, C3, 3, statistics::dot_prod_u32_c3);
impl_dot_product_image!(i32, C3, 3, statistics::dot_prod_i32_c3);
impl_dot_product_image!(f32, C3, 3, statistics::dot_prod_f32_c3);
impl_dot_product_image!(u8, C4, 4, statistics::dot_prod_u8_c4);
impl_dot_product_image!(i8, C4, 4, statistics::dot_prod_i8_c4);
impl_dot_product_image!(u16, C4, 4, statistics::dot_prod_u16_c4);
impl_dot_product_image!(i16, C4, 4, statistics::dot_prod_i16_c4);
impl_dot_product_image!(u32, C4, 4, statistics::dot_prod_u32_c4);
impl_dot_product_image!(i32, C4, 4, statistics::dot_prod_i32_c4);
impl_dot_product_image!(f32, C4, 4, statistics::dot_prod_f32_c4);
impl_dot_product_image!(u8, AC4, 3, statistics::dot_prod_u8_ac4);
impl_dot_product_image!(i8, AC4, 3, statistics::dot_prod_i8_ac4);
impl_dot_product_image!(u16, AC4, 3, statistics::dot_prod_u16_ac4);
impl_dot_product_image!(i16, AC4, 3, statistics::dot_prod_i16_ac4);
impl_dot_product_image!(u32, AC4, 3, statistics::dot_prod_u32_ac4);
impl_dot_product_image!(i32, AC4, 3, statistics::dot_prod_i32_ac4);
impl_dot_product_image!(f32, AC4, 3, statistics::dot_prod_f32_ac4);