From: Brian Paul Date: Wed, 13 Mar 2002 04:34:32 +0000 (+0000) Subject: added _mesa_image_image_stride() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d488af5b34e390a9b81dac96053bd45f34ffffff;p=mesa.git added _mesa_image_image_stride() --- diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index d99d908509f..1d779ea82bd 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -1,10 +1,10 @@ -/* $Id: image.c,v 1.63 2001/07/14 17:53:04 brianp Exp $ */ +/* $Id: image.c,v 1.64 2002/03/13 04:34:32 brianp Exp $ */ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.1 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -544,6 +544,46 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing, +/* + * Compute the stride between images in a 3D texture (in bytes) for the given + * pixel packing parameters and image width, format and type. + */ +GLint +_mesa_image_image_stride( const struct gl_pixelstore_attrib *packing, + GLint width, GLint height, + GLenum format, GLenum type ) +{ + ASSERT(packing); + ASSERT(type != GL_BITMAP); + + { + const GLint bytesPerPixel = _mesa_bytes_per_pixel(format, type); + GLint bytesPerRow, bytesPerImage, remainder; + + if (bytesPerPixel <= 0) + return -1; /* error */ + if (packing->RowLength == 0) { + bytesPerRow = bytesPerPixel * width; + } + else { + bytesPerRow = bytesPerPixel * packing->RowLength; + } + remainder = bytesPerRow % packing->Alignment; + if (remainder > 0) + bytesPerRow += (packing->Alignment - remainder); + + if (packing->ImageHeight == 0) + bytesPerImage = bytesPerRow * height; + else + bytesPerImage = bytesPerRow * packing->ImageHeight; + + return bytesPerImage; + } +} + + + + /* * Unpack a 32x32 pixel polygon stipple from user memory using the * current pixel unpack settings. diff --git a/src/mesa/main/image.h b/src/mesa/main/image.h index 12376f1d2f0..4b5d7caba02 100644 --- a/src/mesa/main/image.h +++ b/src/mesa/main/image.h @@ -1,10 +1,10 @@ -/* $Id: image.h,v 1.17 2001/03/07 05:06:12 brianp Exp $ */ +/* $Id: image.h,v 1.18 2002/03/13 04:34:32 brianp Exp $ */ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.1 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -69,6 +69,11 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing, GLint width, GLenum format, GLenum type ); +extern GLint +_mesa_image_image_stride( const struct gl_pixelstore_attrib *packing, + GLint width, GLint height, + GLenum format, GLenum type ); + extern void _mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32], const struct gl_pixelstore_attrib *unpacking );