From 62cff793785ee203b086e4895bae0f78cc0748d7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20K=C3=B6nig?= Date: Fri, 13 Jan 2017 19:11:43 +0100 Subject: [PATCH] gallium: add P016 format MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Same layout as NV12, but 16bit per channel instead of 8. Signed-off-by: Christian König Reviewed-by: Mark Thompson --- src/gallium/auxiliary/util/u_format.csv | 2 ++ src/gallium/auxiliary/util/u_format_yuv.c | 19 +++++++++++++++++++ src/gallium/auxiliary/util/u_format_yuv.h | 19 +++++++++++++++++++ src/gallium/include/pipe/p_format.h | 2 ++ 4 files changed, 42 insertions(+) diff --git a/src/gallium/auxiliary/util/u_format.csv b/src/gallium/auxiliary/util/u_format.csv index c26d7331d4c..cef530aae7c 100644 --- a/src/gallium/auxiliary/util/u_format.csv +++ b/src/gallium/auxiliary/util/u_format.csv @@ -320,6 +320,8 @@ PIPE_FORMAT_IYUV , other, 1, 1, x8 , x8 , x8 , x8 , xyzw, y PIPE_FORMAT_NV12 , other, 1, 1, x8 , x8 , x8 , x8 , xyzw, yuv PIPE_FORMAT_NV21 , other, 1, 1, x8 , x8 , x8 , x8 , xyzw, yuv +PIPE_FORMAT_P016 , other, 1, 1, x16 , x16 , , , xyzw, yuv + # Usually used to implement IA44 and AI44 formats in video decoding PIPE_FORMAT_A4R4_UNORM , plain, 1, 1, un4 , un4 , , , y00x, rgb, un4, un4 , , , x00y PIPE_FORMAT_R4A4_UNORM , plain, 1, 1, un4 , un4 , , , x00y, rgb, un4, un4 , , , y00x diff --git a/src/gallium/auxiliary/util/u_format_yuv.c b/src/gallium/auxiliary/util/u_format_yuv.c index 16ed8af7ba6..55f8ad68ec7 100644 --- a/src/gallium/auxiliary/util/u_format_yuv.c +++ b/src/gallium/auxiliary/util/u_format_yuv.c @@ -1015,6 +1015,25 @@ util_format_nv21_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, void util_format_nv21_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) {} +void +util_format_p016_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, + const uint8_t *src_row, unsigned src_stride, + unsigned width, unsigned height) {} +void +util_format_p016_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, + const uint8_t *src_row, unsigned src_stride, + unsigned width, unsigned height) {} +void +util_format_p016_unpack_rgba_float(float *dst_row, unsigned dst_stride, + const uint8_t *src_row, unsigned src_stride, + unsigned width, unsigned height) {} +void +util_format_p016_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, + const float *src_row, unsigned src_stride, + unsigned width, unsigned height) {} +void +util_format_p016_fetch_rgba_float(float *dst, const uint8_t *src, + unsigned i, unsigned j) {} void util_format_r8g8_r8b8_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, diff --git a/src/gallium/auxiliary/util/u_format_yuv.h b/src/gallium/auxiliary/util/u_format_yuv.h index 41524d63f3a..d8e67b45940 100644 --- a/src/gallium/auxiliary/util/u_format_yuv.h +++ b/src/gallium/auxiliary/util/u_format_yuv.h @@ -266,6 +266,25 @@ void util_format_nv21_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); void +util_format_p016_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, + const uint8_t *src_row, unsigned src_stride, + unsigned width, unsigned height); +void +util_format_p016_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, + const uint8_t *src_row, unsigned src_stride, + unsigned width, unsigned height); +void +util_format_p016_unpack_rgba_float(float *dst_row, unsigned dst_stride, + const uint8_t *src_row, unsigned src_stride, + unsigned width, unsigned height); +void +util_format_p016_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, + const float *src_row, unsigned src_stride, + unsigned width, unsigned height); +void +util_format_p016_fetch_rgba_float(float *dst, const uint8_t *src, + unsigned i, unsigned j); +void util_format_r8g8_b8g8_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); diff --git a/src/gallium/include/pipe/p_format.h b/src/gallium/include/pipe/p_format.h index b22baa9c650..e4e09d8b435 100644 --- a/src/gallium/include/pipe/p_format.h +++ b/src/gallium/include/pipe/p_format.h @@ -389,6 +389,8 @@ enum pipe_format { PIPE_FORMAT_ASTC_12x10_SRGB = 305, PIPE_FORMAT_ASTC_12x12_SRGB = 306, + PIPE_FORMAT_P016 = 307, + PIPE_FORMAT_COUNT }; -- 2.30.2