aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2009-10-01 16:27:23 -0600
committerBrian Paul <[email protected]>2009-10-01 16:27:23 -0600
commit040fd7ed44c21a1faaa6475888e9365e8f0de42b (patch)
tree45591993f937afd75411df6e161bfd5149ead649
parent1c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4 (diff)
mesa: added _mesa_format_row_stride()
-rw-r--r--src/mesa/main/formats.c22
-rw-r--r--src/mesa/main/formats.h4
2 files changed, 25 insertions, 1 deletions
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 82843a32910..ebe59f8960a 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -602,12 +602,13 @@ _mesa_format_image_size(gl_format format, GLsizei width,
GLsizei height, GLsizei depth)
{
const struct gl_format_info *info = _mesa_get_format_info(format);
+ /* Strictly speaking, a conditional isn't needed here */
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;
+ const GLuint sz = wblocks * hblocks * info->BytesPerBlock;
return sz;
}
else {
@@ -619,6 +620,25 @@ _mesa_format_image_size(gl_format format, GLsizei width,
+GLint
+_mesa_format_row_stride(gl_format format, GLsizei width)
+{
+ const struct gl_format_info *info = _mesa_get_format_info(format);
+ /* Strictly speaking, a conditional isn't needed here */
+ if (info->BlockWidth > 1 || info->BlockHeight > 1) {
+ /* compressed format */
+ const GLuint bw = info->BlockWidth;
+ const GLuint wblocks = (width + bw - 1) / bw;
+ const GLint stride = wblocks * info->BytesPerBlock;
+ return stride;
+ }
+ else {
+ const GLint stride = width * info->BytesPerBlock;
+ return stride;
+ }
+}
+
+
/**
* Do sanity checking of the format info table.
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index b91682809fd..316ff1a8ec6 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -206,6 +206,10 @@ extern GLuint
_mesa_format_image_size(gl_format format, GLsizei width,
GLsizei height, GLsizei depth);
+extern GLint
+_mesa_format_row_stride(gl_format format, GLsizei width);
+
+
extern void
_mesa_test_formats(void);