Lines Matching full:ctx
68 type_to_bit(const struct gl_context *ctx, GLenum type)
86 if (ctx->Extensions.ARB_half_float_vertex)
95 return _mesa_is_desktop_gl(ctx) ? FIXED_GL_BIT : FIXED_ES_BIT;
123 update_array(struct gl_context *ctx,
146 if (ctx->API == API_OPENGL_CORE
147 && (ctx->Array.ArrayObj == ctx->Array.DefaultArrayObj)) {
148 _mesa_error(ctx, GL_INVALID_OPERATION, "%s(no array object bound)",
153 if (_mesa_is_gles(ctx)) {
164 if (ctx->Version < 30) {
178 if (!ctx->Extensions.ARB_ES2_compatibility)
181 if (!ctx->Extensions.ARB_vertex_type_2_10_10_10_rev)
186 typeBit = type_to_bit(ctx, type);
188 _mesa_error(ctx, GL_INVALID_ENUM, "%s(type = %s)",
197 if (ctx->Extensions.EXT_vertex_array_bgra &&
202 if (ctx->Extensions.ARB_vertex_type_2_10_10_10_rev) {
211 _mesa_error(ctx, GL_INVALID_VALUE, "%s(GL_BGRA/GLubyte)", func);
218 _mesa_error(ctx, GL_INVALID_VALUE, "%s(size=%d)", func, size);
222 if (ctx->Extensions.ARB_vertex_type_2_10_10_10_rev &&
225 _mesa_error(ctx, GL_INVALID_OPERATION, "%s(size=%d)", func, size);
232 _mesa_error( ctx, GL_INVALID_VALUE, "%s(stride=%d)", func, stride );
248 if (ptr != NULL && ctx->Array.ArrayObj->ARBsemantics &&
249 !_mesa_is_bufferobj(ctx->Array.ArrayBufferObj)) {
250 _mesa_error(ctx, GL_INVALID_OPERATION, "%s(non-VBO array)", func);
256 array = &ctx->Array.ArrayObj->VertexAttrib[attrib];
267 _mesa_reference_buffer_object(ctx, &array->BufferObj,
268 ctx->Array.ArrayBufferObj);
270 ctx->NewState |= _NEW_ARRAY;
271 ctx->Array.ArrayObj->NewArrays |= VERT_BIT(attrib);
278 GET_CURRENT_CONTEXT(ctx);
279 GLbitfield legalTypes = (ctx->API == API_OPENGLES)
285 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
287 update_array(ctx, "glVertexPointer", VERT_ATTRIB_POS,
296 GET_CURRENT_CONTEXT(ctx);
297 const GLbitfield legalTypes = (ctx->API == API_OPENGLES)
303 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
305 update_array(ctx, "glNormalPointer", VERT_ATTRIB_NORMAL,
314 GET_CURRENT_CONTEXT(ctx);
315 const GLbitfield legalTypes = (ctx->API == API_OPENGLES)
323 const GLint sizeMin = (ctx->API == API_OPENGLES) ? 4 : 3;
324 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
326 update_array(ctx, "glColorPointer", VERT_ATTRIB_COLOR0,
336 GET_CURRENT_CONTEXT(ctx);
337 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
339 update_array(ctx, "glFogCoordPointer", VERT_ATTRIB_FOG,
350 GET_CURRENT_CONTEXT(ctx);
351 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
353 update_array(ctx, "glIndexPointer", VERT_ATTRIB_COLOR_INDEX,
369 GET_CURRENT_CONTEXT(ctx);
370 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
372 update_array(ctx, "glSecondaryColorPointer", VERT_ATTRIB_COLOR1,
382 GET_CURRENT_CONTEXT(ctx);
383 GLbitfield legalTypes = (ctx->API == API_OPENGLES)
389 const GLint sizeMin = (ctx->API == API_OPENGLES) ? 2 : 1;
390 const GLuint unit = ctx->Array.ActiveTexture;
391 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
393 update_array(ctx, "glTexCoordPointer", VERT_ATTRIB_TEX(unit),
406 GET_CURRENT_CONTEXT(ctx);
407 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
409 update_array(ctx, "glEdgeFlagPointer", VERT_ATTRIB_EDGEFLAG,
419 GET_CURRENT_CONTEXT(ctx);
420 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
422 if (ctx->API != API_OPENGLES) {
423 _mesa_error(ctx, GL_INVALID_OPERATION,
428 update_array(ctx, "glPointSizePointer", VERT_ATTRIB_POINT_SIZE,
448 GET_CURRENT_CONTEXT(ctx);
449 ASSERT_OUTSIDE_BEGIN_END(ctx);
452 _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerNV(index)");
457 _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerNV(size!=4)");
461 update_array(ctx, "glVertexAttribPointerNV", VERT_ATTRIB_GENERIC(index),
486 GET_CURRENT_CONTEXT(ctx);
487 ASSERT_OUTSIDE_BEGIN_END(ctx);
489 if (index >= ctx->Const.VertexProgram.MaxAttribs) {
490 _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribPointerARB(index)");
494 update_array(ctx, "glVertexAttribPointer", VERT_ATTRIB_GENERIC(index),
516 GET_CURRENT_CONTEXT(ctx);
517 ASSERT_OUTSIDE_BEGIN_END(ctx);
519 if (index >= ctx->Const.VertexProgram.MaxAttribs) {
520 _mesa_error(ctx, GL_INVALID_VALUE, "glVertexAttribIPointer(index)");
524 update_array(ctx, "glVertexAttribIPointer", VERT_ATTRIB_GENERIC(index),
535 GET_CURRENT_CONTEXT(ctx);
536 ASSERT_OUTSIDE_BEGIN_END(ctx);
538 if (index >= ctx->Const.VertexProgram.MaxAttribs) {
539 _mesa_error(ctx, GL_INVALID_VALUE,
544 arrayObj = ctx->Array.ArrayObj;
550 FLUSH_VERTICES(ctx, _NEW_ARRAY);
562 GET_CURRENT_CONTEXT(ctx);
563 ASSERT_OUTSIDE_BEGIN_END(ctx);
565 if (index >= ctx->Const.VertexProgram.MaxAttribs) {
566 _mesa_error(ctx, GL_INVALID_VALUE,
571 arrayObj = ctx->Array.ArrayObj;
577 FLUSH_VERTICES(ctx, _NEW_ARRAY);
591 get_vertex_array_attrib(struct gl_context *ctx, GLuint index, GLenum pname,
596 if (index >= ctx->Const.VertexProgram.MaxAttribs) {
597 _mesa_error(ctx, GL_INVALID_VALUE, "%s(index=%u)", caller, index);
601 ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(ctx->Array.ArrayObj->VertexAttrib));
603 array = &ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_GENERIC(index)];
619 if ((_mesa_is_desktop_gl(ctx)
620 && (ctx->Version >= 30 || ctx->Extensions.EXT_gpu_shader4))
621 || _mesa_is_gles3(ctx)) {
626 if ((_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_instanced_arrays)
627 || _mesa_is_gles3(ctx)) {
636 _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=0x%x)", caller, pname);
642 get_current_attrib(struct gl_context *ctx, GLuint index, const char *function)
650 if ((ctx->API != API_OPENGL_CORE || ctx->Version < 31)
651 && ctx->API != API_OPENGLES2) {
652 _mesa_error(ctx, GL_INVALID_OPERATION, "%s(index==0)", function);
656 else if (index >= ctx->Const.VertexProgram.MaxAttribs) {
657 _mesa_error(ctx, GL_INVALID_VALUE,
662 ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(ctx->Array.ArrayObj->VertexAttrib));
664 FLUSH_CURRENT(ctx, 0);
665 return ctx->Current.Attrib[VERT_ATTRIB_GENERIC(index)];
671 GET_CURRENT_CONTEXT(ctx);
672 ASSERT_OUTSIDE_BEGIN_END(ctx);
675 const GLfloat *v = get_current_attrib(ctx, index, "glGetVertexAttribfv");
681 params[0] = (GLfloat) get_vertex_array_attrib(ctx, index, pname,
690 GET_CURRENT_CONTEXT(ctx);
691 ASSERT_OUTSIDE_BEGIN_END(ctx);
694 const GLfloat *v = get_current_attrib(ctx, index, "glGetVertexAttribdv");
703 params[0] = (GLdouble) get_vertex_array_attrib(ctx, index, pname,
712 GET_CURRENT_CONTEXT(ctx);
713 ASSERT_OUTSIDE_BEGIN_END(ctx);
716 const GLfloat *v = get_current_attrib(ctx, index, "glGetVertexAttribiv");
726 params[0] = (GLint) get_vertex_array_attrib(ctx, index, pname,
736 GET_CURRENT_CONTEXT(ctx);
737 ASSERT_OUTSIDE_BEGIN_END(ctx);
741 get_current_attrib(ctx, index, "glGetVertexAttribIiv");
747 params[0] = (GLint) get_vertex_array_attrib(ctx, index, pname,
757 GET_CURRENT_CONTEXT(ctx);
758 ASSERT_OUTSIDE_BEGIN_END(ctx);
762 get_current_attrib(ctx, index, "glGetVertexAttribIuiv");
768 params[0] = get_vertex_array_attrib(ctx, index, pname,
777 GET_CURRENT_CONTEXT(ctx);
778 ASSERT_OUTSIDE_BEGIN_END(ctx);
780 if (index >= ctx->Const.VertexProgram.MaxAttribs) {
781 _mesa_error(ctx, GL_INVALID_VALUE, "glGetVertexAttribPointerARB(index)");
786 _mesa_error(ctx, GL_INVALID_ENUM, "glGetVertexAttribPointerARB(pname)");
790 ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(ctx->Array.ArrayObj->VertexAttrib));
792 *pointer = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_GENERIC(index)].Ptr;
852 GET_CURRENT_CONTEXT(ctx);
861 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
867 _mesa_error( ctx, GL_INVALID_VALUE, "glInterleavedArrays(stride)" );
978 _mesa_error( ctx, GL_INVALID_ENUM, "glInterleavedArrays(format)" );
1030 GET_CURRENT_CONTEXT(ctx);
1031 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
1034 _mesa_debug(ctx, "glLockArrays %d %d\n", first, count);
1037 _mesa_error( ctx, GL_INVALID_VALUE, "glLockArraysEXT(first)" );
1041 _mesa_error( ctx
1044 if (ctx->Array.LockCount != 0) {
1045 _mesa_error( ctx, GL_INVALID_OPERATION, "glLockArraysEXT(reentry)" );
1049 ctx->Array.LockFirst = first;
1050 ctx->Array.LockCount = count;
1052 ctx->NewState |= _NEW_ARRAY;
1059 GET_CURRENT_CONTEXT(ctx);
1060 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
1063 _mesa_debug(ctx, "glUnlockArrays\n");
1065 if (ctx->Array.LockCount == 0) {
1066 _mesa_error( ctx, GL_INVALID_OPERATION, "glUnlockArraysEXT(reexit)" );
1070 ctx->Array.LockFirst = 0;
1071 ctx->Array.LockCount = 0;
1072 ctx->NewState |= _NEW_ARRAY;
1081 GET_CURRENT_CONTEXT(ctx);
1084 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
1088 CALL_DrawArrays(ctx->Exec, (mode, first[i], count[i]));
1100 GET_CURRENT_CONTEXT(ctx);
1103 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
1108 CALL_DrawArrays(ctx->Exec, ( m, first[i], count[i] ));
1120 GET_CURRENT_CONTEXT(ctx);
1123 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
1130 CALL_DrawElements(ctx->Exec, ( m, count[i], type, indices[i] ));
1142 GET_CURRENT_CONTEXT(ctx);
1144 if (!ctx->Extensions.NV_primitive_restart && ctx->Version < 31) {
1145 _mesa_error(ctx, GL_INVALID_OPERATION, "glPrimitiveRestartIndexNV()");
1149 ASSERT_OUTSIDE_BEGIN_END(ctx);
1151 if (ctx->Array.RestartIndex != index) {
1152 FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
1153 ctx->Array.RestartIndex = index;
1167 GET_CURRENT_CONTEXT(ctx);
1168 ASSERT_OUTSIDE_BEGIN_END(ctx);
1170 if (!ctx->Extensions.ARB_instanced_arrays) {
1171 _mesa_error(ctx, GL_INVALID_OPERATION, "glVertexAttribDivisor()");
1175 if (index >= ctx->Const.VertexProgram.MaxAttribs) {
1176 _mesa_error(ctx, GL_INVALID_ENUM, "glVertexAttribDivisor(index = %u)",
1181 ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(ctx->Array.ArrayObj->VertexAttrib));
1183 array = &ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_GENERIC(index)];
1185 FLUSH_VERTICES(ctx, _NEW_ARRAY);
1187 ctx->Array.ArrayObj->NewArrays |= VERT_BIT(VERT_ATTRIB_GENERIC(index));
1197 _mesa_copy_client_array(struct gl_context *ctx,
1212 _mesa_reference_buffer_object(ctx, &dst->BufferObj, src->BufferObj);
1240 _mesa_print_arrays(struct gl_context *ctx)
1242 struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
1245 _mesa_update_array_object_max_element(ctx, arrayObj);
1254 for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++)
1268 _mesa_init_varray(struct gl_context *ctx)
1270 ctx->Array.DefaultArrayObj = ctx->Driver.NewArrayObject(ctx, 0);
1271 _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj,
1272 ctx->Array.DefaultArrayObj);
1273 ctx->Array.ActiveTexture = 0; /* GL_ARB_multitexture */
1275 ctx->Array.Objects = _mesa_NewHashTable();
1286 struct gl_context *ctx = (struct gl_context *) userData;
1287 _mesa_delete_array_object(ctx, arrayObj);
1295 _mesa_free_varray_data(struct gl_context *ctx)
1297 _mesa_HashDeleteAll(ctx->Array.Objects, delete_arrayobj_cb, ctx);
1298 _mesa_DeleteHashTable(ctx->Array.Objects);