+ GLenum format = GL_RGBA;
+ const GLbitfield legalTypes = (ctx->API == API_OPENGLES)
+ ? (BYTE_BIT | SHORT_BIT | FLOAT_BIT | FIXED_ES_BIT)
+ : (SHORT_BIT | INT_BIT |
+ HALF_BIT | FLOAT_BIT | DOUBLE_BIT |
+ UNSIGNED_INT_2_10_10_10_REV_BIT |
+ INT_2_10_10_10_REV_BIT);
+
+ struct gl_vertex_array_object* vao;
+ struct gl_buffer_object* vbo;
+
+ if (!_lookup_vao_and_vbo_dsa(ctx, vaobj, buffer, offset,
+ &vao, &vbo,
+ "glVertexArrayMultiTexCoordOffsetEXT"))
+ return;
+
+ if (unit >= ctx->Const.MaxCombinedTextureImageUnits) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glVertexArrayMultiTexCoordOffsetEXT(texunit=%d)",
+ texunit);
+ return;
+ }
+
+ if (!validate_array_and_format(ctx, "glVertexArrayMultiTexCoordOffsetEXT",
+ vao, vbo,
+ VERT_ATTRIB_TEX(unit), legalTypes,
+ sizeMin, 4, size, type, stride,
+ GL_FALSE, GL_FALSE, GL_FALSE, format, (void*) offset))
+ return;
+
+ update_array(ctx, vao, vbo,
+ VERT_ATTRIB_TEX(unit), format, 4, size, type,
+ stride, GL_FALSE, GL_FALSE, GL_FALSE, (void*) offset);