mesa: added _mesa_format_image_size()

This commit is contained in:
Brian Paul
2009-10-01 15:59:13 -06:00
parent 8c36ca707c
commit 1c7ec97ec4
2 changed files with 31 additions and 0 deletions
+27
View File
@@ -593,6 +593,33 @@ _mesa_is_format_compressed(gl_format format)
}
/**
* Return number of bytes needed to store an image of the given size
* in the given format.
*/
GLuint
_mesa_format_image_size(gl_format format, GLsizei width,
GLsizei height, GLsizei depth)
{
const struct gl_format_info *info = _mesa_get_format_info(format);
if (info->BlockWidth > 1 || info->BlockHeight > 1) {
/* compressed format */
const GLuint bw = info->BlockWidth, bh = info->BlockHeight;
const GLuint wblocks = (width + bw - 1) / bw;
const GLuint hblocks = (height + bh - 1) / bh;
const GLuint sz = wblocks * hblocks * info->BytesPerBlock;
return sz;
}
else {
/* non-compressed */
const GLuint sz = width * height * depth * info->BytesPerBlock;
return sz;
}
}
/**
* Do sanity checking of the format info table.
*/
+4
View File
@@ -202,6 +202,10 @@ extern void
_mesa_format_to_type_and_comps2(gl_format format,
GLenum *datatype, GLuint *comps);
extern GLuint
_mesa_format_image_size(gl_format format, GLsizei width,
GLsizei height, GLsizei depth);
extern void
_mesa_test_formats(void);