GLenum format = get_array_format(ctx, sizeMax, &size);
- /* The ARB_vertex_attrib_binding spec says:
- *
- * "An INVALID_OPERATION error is generated under any of the following
- * conditions:
- * - if no vertex array object is currently bound (see section 2.10);
- * - ..."
- *
- * This error condition only applies to VertexAttribFormat and
- * VertexAttribIFormat in the extension spec, but we assume that this
- * is an oversight. In the OpenGL 4.3 (Core Profile) spec, it applies
- * to all three functions.
- */
- if ((ctx->API == API_OPENGL_CORE || _mesa_is_gles31(ctx)) &&
- ctx->Array.VAO == ctx->Array.DefaultVAO) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "%s(No array object bound)", func);
- return;
- }
+ if (!_mesa_is_no_error_enabled(ctx)) {
+ /* The ARB_vertex_attrib_binding spec says:
+ *
+ * "An INVALID_OPERATION error is generated under any of the
+ * following conditions:
+ * - if no vertex array object is currently bound (see section
+ * 2.10);
+ * - ..."
+ *
+ * This error condition only applies to VertexAttribFormat and
+ * VertexAttribIFormat in the extension spec, but we assume that this
+ * is an oversight. In the OpenGL 4.3 (Core Profile) spec, it applies
+ * to all three functions.
+ */
+ if ((ctx->API == API_OPENGL_CORE || _mesa_is_gles31(ctx)) &&
+ ctx->Array.VAO == ctx->Array.DefaultVAO) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "%s(No array object bound)", func);
+ return;
+ }
- /* The ARB_vertex_attrib_binding spec says:
- *
- * "The error INVALID_VALUE is generated if index is greater than or equal
- * to the value of MAX_VERTEX_ATTRIBS."
- */
- if (attribIndex >= ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "%s(attribindex=%u > "
- "GL_MAX_VERTEX_ATTRIBS)",
- func, attribIndex);
- return;
+ /* The ARB_vertex_attrib_binding spec says:
+ *
+ * "The error INVALID_VALUE is generated if index is greater than or
+ * equal to the value of MAX_VERTEX_ATTRIBS."
+ */
+ if (attribIndex >= ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "%s(attribindex=%u > "
+ "GL_MAX_VERTEX_ATTRIBS)",
+ func, attribIndex);
+ return;
+ }
+
+ if (!validate_array_format(ctx, func, ctx->Array.VAO,
+ VERT_ATTRIB_GENERIC(attribIndex),
+ legalTypes, 1, sizeMax, size, type,
+ normalized, integer, doubles, relativeOffset,
+ format)) {
+ return;
+ }
}
FLUSH_VERTICES(ctx, 0);
- if (!validate_array_format(ctx, func, ctx->Array.VAO,
- VERT_ATTRIB_GENERIC(attribIndex),
- legalTypes, 1, sizeMax, size, type,
- normalized, integer, doubles, relativeOffset,
- format)) {
- return;
- }
-
_mesa_update_array_format(ctx, ctx->Array.VAO,
VERT_ATTRIB_GENERIC(attribIndex), size, type,
format, normalized, integer, doubles,
GLenum format = get_array_format(ctx, sizeMax, &size);
- /* The ARB_direct_state_access spec says:
- *
- * "An INVALID_OPERATION error is generated by VertexArrayAttrib*Format
- * if <vaobj> is not [compatibility profile: zero or] the name of an
- * existing vertex array object."
- */
- vao = _mesa_lookup_vao_err(ctx, vaobj, func);
- if (!vao)
- return;
+ if (_mesa_is_no_error_enabled(ctx)) {
+ vao = _mesa_lookup_vao(ctx, vaobj);
+ if (!vao)
+ return;
+ } else {
+ /* The ARB_direct_state_access spec says:
+ *
+ * "An INVALID_OPERATION error is generated by
+ * VertexArrayAttrib*Format if <vaobj> is not [compatibility profile:
+ * zero or] the name of an existing vertex array object."
+ */
+ vao = _mesa_lookup_vao_err(ctx, vaobj, func);
+ if (!vao)
+ return;
- /* The ARB_vertex_attrib_binding spec says:
- *
- * "The error INVALID_VALUE is generated if index is greater than or equal
- * to the value of MAX_VERTEX_ATTRIBS."
- */
- if (attribIndex >= ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "%s(attribindex=%u > GL_MAX_VERTEX_ATTRIBS)",
- func, attribIndex);
- return;
+ /* The ARB_vertex_attrib_binding spec says:
+ *
+ * "The error INVALID_VALUE is generated if index is greater than or
+ * equal to the value of MAX_VERTEX_ATTRIBS."
+ */
+ if (attribIndex >= ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "%s(attribindex=%u > GL_MAX_VERTEX_ATTRIBS)",
+ func, attribIndex);
+ return;
+ }
+
+ if (!validate_array_format(ctx, func, vao,
+ VERT_ATTRIB_GENERIC(attribIndex),
+ legalTypes, 1, sizeMax, size, type,
+ normalized, integer, doubles, relativeOffset,
+ format)) {
+ return;
+ }
}
FLUSH_VERTICES(ctx, 0);
- if (!validate_array_format(ctx, func, vao,
- VERT_ATTRIB_GENERIC(attribIndex),
- legalTypes, 1, sizeMax, size, type, normalized,
- integer, doubles, relativeOffset, format)) {
- return;
- }
-
_mesa_update_array_format(ctx, vao, VERT_ATTRIB_GENERIC(attribIndex), size,
type, format, normalized, integer, doubles,
relativeOffset);