From 9163c37349a2f4ddb3ebc2722f8a768e282884a0 Mon Sep 17 00:00:00 2001 From: Anuj Phogat Date: Wed, 9 Mar 2016 11:38:54 -0800 Subject: mesa: Add a helper function to query 3D block sizes Signed-off-by: Anuj Phogat Reviewed-by: Brian Paul --- src/mesa/main/formats.c | 21 +++++++++++++++++++++ src/mesa/main/formats.h | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index 3d2349b7304..cfaac04f13a 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -320,6 +320,27 @@ _mesa_get_format_block_size(mesa_format format, GLuint *bw, GLuint *bh) } +/** + * Return the block size (in pixels) for the given format. Normally + * the block size is 1x1x1. But compressed formats will have block + * sizes of 4x4x4, 3x3x3 pixels, etc. + * \param bw returns block width in pixels + * \param bh returns block height in pixels + * \param bd returns block depth in pixels + */ +void +_mesa_get_format_block_size_3d(mesa_format format, + GLuint *bw, + GLuint *bh, + GLuint *bd) +{ + const struct gl_format_info *info = _mesa_get_format_info(format); + *bw = info->BlockWidth; + *bh = info->BlockHeight; + *bd = info->BlockDepth; +} + + /** * Returns the an array of four numbers representing the transformation * from the RGBA or SZ colorspace to the given format. For array formats, diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index 794d599db3b..c6653bc5984 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -663,6 +663,10 @@ _mesa_get_format_base_format(uint32_t format); extern void _mesa_get_format_block_size(mesa_format format, GLuint *bw, GLuint *bh); +extern void +_mesa_get_format_block_size_3d(mesa_format format, GLuint *bw, + GLuint *bh, GLuint *bd); + extern mesa_array_format _mesa_array_format_flip_channels(mesa_array_format format); -- cgit v1.2.3