mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 15:20:10 +01:00
mesa: Rearrange array type checking, filter more types in ES
v2: Fix handling of GL_INT and GL_UNSIGNED_INT types pre-ES3.0, and fix handling of GL_INT_2_10_10_10_REV and GL_UNSIGNED_INT_2_10_10_10_REV in ES3.0. Based on review comments by Ken Graunke. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
a33f360e8f
commit
bbceed268e
1 changed files with 25 additions and 9 deletions
|
|
@ -133,16 +133,32 @@ update_array(struct gl_context *ctx,
|
|||
GLsizei elementSize;
|
||||
GLenum format = GL_RGBA;
|
||||
|
||||
if (ctx->API != API_OPENGLES && ctx->API != API_OPENGLES2) {
|
||||
/* fixed point arrays / data is only allowed with OpenGL ES 1.x/2.0 */
|
||||
if (_mesa_is_gles(ctx)) {
|
||||
/* Once Mesa gets support for GL_OES_vertex_half_float this mask will
|
||||
* change. Adding support for this extension isn't quite as trivial as
|
||||
* we'd like because ES uses a different enum value for GL_HALF_FLOAT.
|
||||
*/
|
||||
legalTypesMask &= ~(FIXED_GL_BIT | HALF_BIT | DOUBLE_BIT);
|
||||
|
||||
/* GL_INT and GL_UNSIGNED_INT data is not allowed in OpenGL ES until
|
||||
* 3.0. The 2_10_10_10 types are added in OpenGL ES 3.0 or
|
||||
* GL_OES_vertex_type_10_10_10_2.
|
||||
*/
|
||||
if (ctx->Version < 30) {
|
||||
legalTypesMask &= ~(UNSIGNED_INT_BIT
|
||||
| INT_BIT
|
||||
| UNSIGNED_INT_2_10_10_10_REV_BIT
|
||||
| INT_2_10_10_10_REV_BIT);
|
||||
}
|
||||
} else {
|
||||
legalTypesMask &= ~FIXED_ES_BIT;
|
||||
}
|
||||
if (!ctx->Extensions.ARB_ES2_compatibility) {
|
||||
legalTypesMask &= ~FIXED_GL_BIT;
|
||||
}
|
||||
if (!ctx->Extensions.ARB_vertex_type_2_10_10_10_rev) {
|
||||
legalTypesMask &= ~(UNSIGNED_INT_2_10_10_10_REV_BIT |
|
||||
INT_2_10_10_10_REV_BIT);
|
||||
|
||||
if (!ctx->Extensions.ARB_ES2_compatibility)
|
||||
legalTypesMask &= ~FIXED_GL_BIT;
|
||||
|
||||
if (!ctx->Extensions.ARB_vertex_type_2_10_10_10_rev)
|
||||
legalTypesMask &= ~(UNSIGNED_INT_2_10_10_10_REV_BIT |
|
||||
INT_2_10_10_10_REV_BIT);
|
||||
}
|
||||
|
||||
typeBit = type_to_bit(ctx, type);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue