Mesa (master): mesa/varray: create get_array_format() helper
Timothy Arceri
tarceri at kemper.freedesktop.org
Wed Apr 19 07:20:33 UTC 2017
Module: Mesa
Branch: master
Commit: 9e60742ddcce04bb218fda15f0b577f850668080
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e60742ddcce04bb218fda15f0b577f850668080
Author: Timothy Arceri <tarceri at itsqueeze.com>
Date: Fri Mar 31 14:44:59 2017 +1100
mesa/varray: create get_array_format() helper
This will help us split array validation from array update.
V2: add const to ctx param
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
---
src/mesa/main/varray.c | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index 63aef84dec..f4e4372d11 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -258,6 +258,24 @@ get_legal_types_mask(const struct gl_context *ctx)
return legalTypesMask;
}
+static GLenum
+get_array_format(const struct gl_context *ctx, GLint sizeMax, GLint *size)
+{
+ GLenum format = GL_RGBA;
+
+ /* Do size parameter checking.
+ * If sizeMax = BGRA_OR_4 it means that size = GL_BGRA is legal and
+ * must be handled specially.
+ */
+ if (ctx->Extensions.EXT_vertex_array_bgra && sizeMax == BGRA_OR_4 &&
+ *size == GL_BGRA) {
+ format = GL_BGRA;
+ *size = 4;
+ }
+
+ return format;
+}
+
/**
* \param attrib The index of the attribute array
@@ -329,7 +347,7 @@ update_array_format(struct gl_context *ctx,
GLuint relativeOffset)
{
GLbitfield typeBit;
- GLenum format = GL_RGBA;
+ GLenum format = get_array_format(ctx, sizeMax, &size);
/* at most, one of these bools can be true */
assert((int) normalized + (int) integer + (int) doubles <= 1);
@@ -359,13 +377,7 @@ update_array_format(struct gl_context *ctx,
return false;
}
- /* Do size parameter checking.
- * If sizeMax = BGRA_OR_4 it means that size = GL_BGRA is legal and
- * must be handled specially.
- */
- if (ctx->Extensions.EXT_vertex_array_bgra &&
- sizeMax == BGRA_OR_4 &&
- size == GL_BGRA) {
+ if (format == GL_BGRA) {
/* Page 298 of the PDF of the OpenGL 4.3 (Core Profile) spec says:
*
* "An INVALID_OPERATION error is generated under any of the following
@@ -397,9 +409,6 @@ update_array_format(struct gl_context *ctx,
"%s(size=GL_BGRA and normalized=GL_FALSE)", func);
return false;
}
-
- format = GL_BGRA;
- size = 4;
}
else if (size < sizeMin || size > sizeMax || size > 4) {
_mesa_error(ctx, GL_INVALID_VALUE, "%s(size=%d)", func, size);
More information about the mesa-commit
mailing list