summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/pixelstore.c
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2014-08-15 16:28:59 -0600
committerBrian Paul <[email protected]>2014-08-16 06:48:44 -0600
commitcf8b680f40a4d1a48be82798b7a09da2d828bee5 (patch)
treec2d1ebcf39e3275ef5c96b7644266c54500c53e9 /src/mesa/main/pixelstore.c
parent9b4c6da7f08f3e1ae5df2d51e2b1dcf316d19288 (diff)
mesa: move _mesa_compressed_texture_pixel_storage_error_check()
to pixelstore.c, add const qualifier to the 'packing' parameter. Add comments. Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/mesa/main/pixelstore.c')
-rw-r--r--src/mesa/main/pixelstore.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/mesa/main/pixelstore.c b/src/mesa/main/pixelstore.c
index 05f6583a481..fc815337b8d 100644
--- a/src/mesa/main/pixelstore.c
+++ b/src/mesa/main/pixelstore.c
@@ -284,3 +284,45 @@ _mesa_init_pixelstore( struct gl_context *ctx )
_mesa_reference_buffer_object(ctx, &ctx->DefaultPacking.BufferObj,
ctx->Shared->NullBufferObj);
}
+
+
+/**
+ * Check if the given compressed pixel storage parameters are legal.
+ * Record a GL error if illegal.
+ * \return true if legal, false if illegal
+ */
+bool
+_mesa_compressed_pixel_storage_error_check(
+ struct gl_context *ctx,
+ GLint dimensions,
+ const struct gl_pixelstore_attrib *packing,
+ const char *caller)
+{
+ if (!_mesa_is_desktop_gl(ctx) || !packing->CompressedBlockSize)
+ return true;
+
+ if (packing->CompressedBlockWidth &&
+ packing->SkipPixels % packing->CompressedBlockWidth) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "%s(skip-pixels %% block-width)", caller);
+ return false;
+ }
+
+ if (dimensions > 1 &&
+ packing->CompressedBlockHeight &&
+ packing->SkipRows % packing->CompressedBlockHeight) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "%s(skip-rows %% block-height)", caller);
+ return false;
+ }
+
+ if (dimensions > 2 &&
+ packing->CompressedBlockDepth &&
+ packing->SkipImages % packing->CompressedBlockDepth) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "%s(skip-images %% block-depth)", caller);
+ return false;
+ }
+
+ return true;
+}