mesa: added _mesa_format_row_stride()
authorBrian Paul <brianp@vmware.com>
Thu, 1 Oct 2009 22:27:23 +0000 (16:27 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 1 Oct 2009 22:27:23 +0000 (16:27 -0600)
src/mesa/main/formats.c
src/mesa/main/formats.h

index 82843a32910558a5fed91625428f3eb690302662..ebe59f8960a69a8684e3d19cad2b773969938a13 100644 (file)
@@ -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.
index b91682809fd1aa66518d3e472fdbd3e524fce0b0..316ff1a8ec67945c4be534e5bc25edcccb149a05 100644 (file)
@@ -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);