diff options
-rw-r--r-- | src/mesa/main/formats.c | 21 | ||||
-rw-r--r-- | src/mesa/main/formats.h | 4 |
2 files changed, 25 insertions, 0 deletions
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 @@ -321,6 +321,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, * the i'th RGBA component is given by: 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); |