[Mesa-dev] [PATCH 10/11] mesa: move _mesa_compute_compressed_pixelstore() to pixelstore.c
Brian Paul
brianp at vmware.com
Sat Dec 13 06:42:53 PST 2014
So it's near the other pixel-store functions.
---
src/mesa/main/pixelstore.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++
src/mesa/main/pixelstore.h | 22 ++++++++++++++++
src/mesa/main/texstore.c | 65 +--------------------------------------------
src/mesa/main/texstore.h | 19 -------------
4 files changed, 89 insertions(+), 83 deletions(-)
diff --git a/src/mesa/main/pixelstore.c b/src/mesa/main/pixelstore.c
index fc81533..a453f17 100644
--- a/src/mesa/main/pixelstore.c
+++ b/src/mesa/main/pixelstore.c
@@ -30,6 +30,7 @@
#include "glheader.h"
#include "bufferobj.h"
+#include "formats.h"
#include "context.h"
#include "pixelstore.h"
#include "mtypes.h"
@@ -326,3 +327,68 @@ _mesa_compressed_pixel_storage_error_check(
return true;
}
+
+
+/**
+ * Compute compressed_pixelstore parameters for copying compressed
+ * texture data.
+ * \param dims number of texture image dimensions: 1, 2 or 3
+ * \param texFormat the compressed texture format
+ * \param width, height, depth size of image to copy
+ * \param packing pixelstore parameters describing user-space image packing
+ * \param store returns the compressed_pixelstore parameters
+ */
+void
+_mesa_compute_compressed_pixelstore(GLuint dims, mesa_format texFormat,
+ GLsizei width, GLsizei height,
+ GLsizei depth,
+ const struct gl_pixelstore_attrib *packing,
+ struct compressed_pixelstore *store)
+{
+ GLuint bw, bh;
+
+ _mesa_get_format_block_size(texFormat, &bw, &bh);
+
+ store->SkipBytes = 0;
+ store->TotalBytesPerRow = store->CopyBytesPerRow =
+ _mesa_format_row_stride(texFormat, width);
+ store->TotalRowsPerSlice = store->CopyRowsPerSlice =
+ (height + bh - 1) / bh;
+ store->CopySlices = depth;
+
+ if (packing->CompressedBlockWidth &&
+ packing->CompressedBlockSize) {
+
+ bw = packing->CompressedBlockWidth;
+
+ if (packing->RowLength) {
+ store->TotalBytesPerRow = packing->CompressedBlockSize *
+ ((packing->RowLength + bw - 1) / bw);
+ }
+
+ store->SkipBytes +=
+ packing->SkipPixels * packing->CompressedBlockSize / bw;
+ }
+
+ if (dims > 1 && packing->CompressedBlockHeight &&
+ packing->CompressedBlockSize) {
+
+ bh = packing->CompressedBlockHeight;
+
+ store->SkipBytes += packing->SkipRows * store->TotalBytesPerRow / bh;
+ store->CopyRowsPerSlice = (height + bh - 1) / bh; /* rows in blocks */
+
+ if (packing->ImageHeight) {
+ store->TotalRowsPerSlice = (packing->ImageHeight + bh - 1) / bh;
+ }
+ }
+
+ if (dims > 2 && packing->CompressedBlockDepth &&
+ packing->CompressedBlockSize) {
+
+ int bd = packing->CompressedBlockDepth;
+
+ store->SkipBytes += packing->SkipImages * store->TotalBytesPerRow *
+ store->TotalRowsPerSlice / bd;
+ }
+}
diff --git a/src/mesa/main/pixelstore.h b/src/mesa/main/pixelstore.h
index 6838454..e3f7cf9 100644
--- a/src/mesa/main/pixelstore.h
+++ b/src/mesa/main/pixelstore.h
@@ -57,4 +57,26 @@ _mesa_compressed_pixel_storage_error_check(
const char *caller);
+
+/**
+ * Information used when copying compressed image data.
+ */
+struct compressed_pixelstore
+{
+ int SkipBytes;
+ int CopyBytesPerRow;
+ int CopyRowsPerSlice;
+ int TotalBytesPerRow;
+ int TotalRowsPerSlice;
+ int CopySlices;
+};
+
+
+extern void
+_mesa_compute_compressed_pixelstore(GLuint dims, mesa_format texFormat,
+ GLsizei width, GLsizei height,
+ GLsizei depth,
+ const struct gl_pixelstore_attrib *packing,
+ struct compressed_pixelstore *store);
+
#endif
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index 50aa1fd..4208ae0 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -62,6 +62,7 @@
#include "mtypes.h"
#include "pack.h"
#include "pbo.h"
+#include "pixelstore.h"
#include "imports.h"
#include "texcompress.h"
#include "texcompress_fxt1.h"
@@ -2198,70 +2199,6 @@ _mesa_store_compressed_teximage(struct gl_context *ctx, GLuint dims,
/**
- * Compute compressed_pixelstore parameters for copying compressed
- * texture data.
- * \param dims number of texture image dimensions: 1, 2 or 3
- * \param texFormat the compressed texture format
- * \param width, height, depth size of image to copy
- * \param packing pixelstore parameters describing user-space image packing
- * \param store returns the compressed_pixelstore parameters
- */
-void
-_mesa_compute_compressed_pixelstore(GLuint dims, mesa_format texFormat,
- GLsizei width, GLsizei height,
- GLsizei depth,
- const struct gl_pixelstore_attrib *packing,
- struct compressed_pixelstore *store)
-{
- GLuint bw, bh;
-
- _mesa_get_format_block_size(texFormat, &bw, &bh);
-
- store->SkipBytes = 0;
- store->TotalBytesPerRow = store->CopyBytesPerRow =
- _mesa_format_row_stride(texFormat, width);
- store->TotalRowsPerSlice = store->CopyRowsPerSlice =
- (height + bh - 1) / bh;
- store->CopySlices = depth;
-
- if (packing->CompressedBlockWidth &&
- packing->CompressedBlockSize) {
-
- bw = packing->CompressedBlockWidth;
-
- if (packing->RowLength) {
- store->TotalBytesPerRow = packing->CompressedBlockSize *
- ((packing->RowLength + bw - 1) / bw);
- }
-
- store->SkipBytes += packing->SkipPixels * packing->CompressedBlockSize / bw;
- }
-
- if (dims > 1 && packing->CompressedBlockHeight &&
- packing->CompressedBlockSize) {
-
- bh = packing->CompressedBlockHeight;
-
- store->SkipBytes += packing->SkipRows * store->TotalBytesPerRow / bh;
- store->CopyRowsPerSlice = (height + bh - 1) / bh; /* rows in blocks */
-
- if (packing->ImageHeight) {
- store->TotalRowsPerSlice = (packing->ImageHeight + bh - 1) / bh;
- }
- }
-
- if (dims > 2 && packing->CompressedBlockDepth &&
- packing->CompressedBlockSize) {
-
- int bd = packing->CompressedBlockDepth;
-
- store->SkipBytes += packing->SkipImages * store->TotalBytesPerRow *
- store->TotalRowsPerSlice / bd;
- }
-}
-
-
-/**
* Fallback for Driver.CompressedTexSubImage()
*/
void
diff --git a/src/mesa/main/texstore.h b/src/mesa/main/texstore.h
index 4c41d1f..2e5a266 100644
--- a/src/mesa/main/texstore.h
+++ b/src/mesa/main/texstore.h
@@ -138,23 +138,4 @@ _mesa_store_compressed_texsubimage(struct gl_context *ctx, GLuint dims,
GLenum format,
GLsizei imageSize, const GLvoid *data);
-
-struct compressed_pixelstore {
- int SkipBytes;
- int CopyBytesPerRow;
- int CopyRowsPerSlice;
- int TotalBytesPerRow;
- int TotalRowsPerSlice;
- int CopySlices;
-};
-
-
-extern void
-_mesa_compute_compressed_pixelstore(GLuint dims, mesa_format texFormat,
- GLsizei width, GLsizei height,
- GLsizei depth,
- const struct gl_pixelstore_attrib *packing,
- struct compressed_pixelstore *store);
-
-
#endif
--
1.9.1
More information about the mesa-dev
mailing list