Lines Matching refs:ctx

149 copy_vertices(struct gl_context *ctx,
153 struct vbo_save_context *save = &vbo_context(ctx)->save;
164 unsigned r = vbo_copy_vertices(ctx, prim->mode, prim->start, &prim->count,
191 reset_counters(struct gl_context *ctx)
193 struct vbo_save_context *save = &vbo_context(ctx)->save;
205 merge_prims(struct gl_context *ctx, struct _mesa_prim *prim_list,
216 if (vbo_merge_draws(ctx, true,
338 update_vao(struct gl_context *ctx,
359 _mesa_reference_vao(ctx, vao, NULL);
360 *vao = _mesa_new_vao(ctx, ~((GLuint)0));
363 * assert(stride <= ctx->Const.MaxVertexAttribStride);
369 _mesa_bind_vertex_buffer(ctx, *vao, 0, bo, buffer_offset, stride, false,
381 assert(offset[vbo_attr] <= ctx->Const.MaxVertexAttribRelativeOffset);
383 _vbo_set_attrib_format(ctx, *vao, vao_attr, buffer_offset,
385 _mesa_vertex_attrib_binding(ctx, *vao, vao_attr, 0);
387 _mesa_enable_vertex_array_attribs(ctx, *vao, vao_enabled);
392 _mesa_set_vao_immutable(ctx, *vao);
395 static void wrap_filled_vertex(struct gl_context *ctx);
399 grow_vertex_storage(struct gl_context *ctx, int vertex_count)
401 struct vbo_save_context *save = &vbo_context(ctx)->save;
411 wrap_filled_vertex(ctx);
512 compile_vertex_list(struct gl_context *ctx)
514 struct vbo_save_context *save = &vbo_context(ctx)->save;
521 _mesa_dlist_alloc_vertex_list(ctx, !save->dangling_attr_ref && !save->no_current_update);
560 _mesa_error(ctx, GL_OUT_OF_MEMORY, "Current value allocation");
569 ctx->ListState.Current.UseLoopback = true;
573 save->copied.nr = copy_vertices(ctx, node, save->vertex_store->buffer_in_ram);
579 merge_prims(ctx, node->cold->prims, &node->cold->prim_count);
601 bool all_prims_supported = (ctx->Const.DriverSupportedPrimMask & BITFIELD_MASK(PIPE_PRIM_MAX)) == BITFIELD_MASK(PIPE_PRIM_MAX);
614 if (!ctx->ListState.Current.UseLoopback) {
645 if (!(ctx->Const.DriverSupportedPrimMask & BITFIELD_BIT(mode))) {
649 u_index_generator(ctx->Const.DriverSupportedPrimMask,
786 _mesa_reference_buffer_object(ctx, &save->current_bo, NULL);
787 save->current_bo = _mesa_bufferobj_alloc(ctx, VBO_BUF_ID + 1);
788 bool success = _mesa_bufferobj_data(ctx,
796 _mesa_reference_buffer_object(ctx, &save->current_bo, NULL);
797 _mesa_error(ctx, GL_OUT_OF_MEMORY, "IB allocation");
840 _mesa_reference_buffer_object(ctx, &node->cold->ib.obj, save->current_bo);
843 _mesa_bufferobj_subdata(ctx,
857 if (!ctx->ListState.Current.UseLoopback) {
867 _mesa_bufferobj_subdata(ctx,
922 save->current_bo = _mesa_bufferobj_alloc(ctx, VBO_BUF_ID + 1);
923 bool success = _mesa_bufferobj_data(ctx,
944 update_vao(ctx, vpm, &save->VAO[vpm],
949 _mesa_reference_vao(ctx, &node->cold->VAO[vpm], save->VAO[vpm]);
953 if (node->num_draws && ctx->Driver.DrawGalliumVertexState) {
959 ctx->Driver.CreateGalliumVertexState(ctx, node->cold->VAO[i],
966 node->ctx = ctx;
973 if (ctx->ExecuteFlag) {
976 _glapi_set_dispatch(ctx->Exec);
989 _vbo_loopback_vertex_list(ctx, node, save->vertex_store->buffer_in_ram);
997 reset_counters(ctx);
1007 wrap_buffers(struct gl_context *ctx)
1009 struct vbo_save_context *save = &vbo_context(ctx)->save;
1023 compile_vertex_list(ctx);
1041 wrap_filled_vertex(struct gl_context *ctx)
1043 struct vbo_save_context *save = &vbo_context(ctx)->save;
1048 wrap_buffers(ctx);
1070 copy_to_current(struct gl_context *ctx)
1072 struct vbo_save_context *save = &vbo_context(ctx)->save;
1090 copy_from_current(struct gl_context *ctx)
1092 struct vbo_save_context *save = &vbo_context(ctx)->save;
1125 upgrade_vertex(struct gl_context *ctx, GLuint attr, GLuint newsz)
1127 struct vbo_save_context *save = &vbo_context(ctx)->save;
1136 wrap_buffers(ctx);
1144 copy_to_current(ctx);
1169 copy_from_current(ctx);
1180 grow_vertex_storage(ctx, save->copied.nr);
1243 fixup_vertex(struct gl_context *ctx, GLuint attr,
1246 struct vbo_save_context *save = &vbo_context(ctx)->save;
1253 upgrade_vertex(ctx, attr, sz);
1268 grow_vertex_storage(ctx, 1);
1278 reset_vertex(struct gl_context *ctx)
1280 struct vbo_save_context *save = &vbo_context(ctx)->save;
1299 is_vertex_position(const struct gl_context *ctx, GLuint index)
1302 _mesa_attr_zero_aliases_vertex(ctx) &&
1303 _mesa_inside_dlist_begin_end(ctx));
1308 #define ERROR(err) _mesa_compile_error(ctx, err, __func__);
1319 struct vbo_save_context *save = &vbo_context(ctx)->save; \
1323 fixup_vertex(ctx, A, N * sz, T); \
1345 grow_vertex_storage(ctx, get_vertex_count(save)); \
1373 GET_CURRENT_CONTEXT(ctx);
1376 _mesa_compile_error(ctx, GL_INVALID_ENUM, "glMaterial(face)");
1394 if (*params < 0 || *params > ctx->Const.MaxShininess) {
1395 _mesa_compile_error(ctx, GL_INVALID_VALUE, "glMaterial(shininess)");
1409 _mesa_compile_error(ctx, GL_INVALID_ENUM, "glMaterial(pname)");
1416 vbo_install_save_vtxfmt(struct gl_context *ctx);
1424 dlist_fallback(struct gl_context *ctx)
1426 struct vbo_save_context *save = &vbo_context(ctx)->save;
1444 compile_vertex_list(ctx);
1447 copy_to_current(ctx);
1448 reset_vertex(ctx);
1450 vbo_install_save_vtxfmt_noop(ctx);
1453 _mesa_install_save_vtxfmt(ctx);
1455 ctx->Driver.SaveNeedFlush = GL_FALSE;
1462 GET_CURRENT_CONTEXT(ctx);
1463 dlist_fallback(ctx);
1464 CALL_EvalCoord1f(ctx->Save, (u));
1470 GET_CURRENT_CONTEXT(ctx);
1471 dlist_fallback(ctx);
1472 CALL_EvalCoord1fv(ctx->Save, (v));
1478 GET_CURRENT_CONTEXT(ctx);
1479 dlist_fallback(ctx);
1480 CALL_EvalCoord2f(ctx->Save, (u, v));
1486 GET_CURRENT_CONTEXT(ctx);
1487 dlist_fallback(ctx);
1488 CALL_EvalCoord2fv(ctx->Save, (v));
1494 GET_CURRENT_CONTEXT(ctx);
1495 dlist_fallback(ctx);
1496 CALL_EvalPoint1(ctx->Save, (i));
1502 GET_CURRENT_CONTEXT(ctx);
1503 dlist_fallback(ctx);
1504 CALL_EvalPoint2(ctx->Save, (i, j));
1510 GET_CURRENT_CONTEXT(ctx);
1511 dlist_fallback(ctx);
1512 CALL_CallList(ctx->Save, (l));
1518 GET_CURRENT_CONTEXT(ctx);
1519 dlist_fallback(ctx);
1520 CALL_CallLists(ctx->Save, (n, type, v));
1527 * Updating of ctx->Driver.CurrentSavePrimitive is already taken care of.
1530 vbo_save_NotifyBegin(struct gl_context *ctx, GLenum mode,
1533 struct vbo_save_context *save = &vbo_context(ctx)->save;
1536 ctx->Driver.CurrentSavePrimitive = mode;
1549 vbo_install_save_vtxfmt(ctx);
1552 ctx->Driver.SaveNeedFlush = GL_TRUE;
1559 GET_CURRENT_CONTEXT(ctx);
1560 struct vbo_save_context *save = &vbo_context(ctx)->save;
1563 ctx->Driver.CurrentSavePrimitive = PRIM_OUTSIDE_BEGIN_END;
1572 vbo_install_save_vtxfmt_noop(ctx);
1575 _mesa_install_save_vtxfmt(ctx);
1583 GET_CURRENT_CONTEXT(ctx);
1585 _mesa_compile_error(ctx, GL_INVALID_OPERATION, "Recursive glBegin");
1592 GET_CURRENT_CONTEXT(ctx);
1593 struct vbo_save_context *save = &vbo_context(ctx)->save;
1599 _mesa_compile_error(ctx, GL_INVALID_OPERATION,
1607 CALL_End(ctx->CurrentServerDispatch, ());
1608 vbo_save_NotifyBegin(ctx, curPrim, no_current_update);
1614 * maintained in ctx->ListState, active when the list is known or
1621 GET_CURRENT_CONTEXT(ctx);
1622 struct _glapi_table *dispatch = ctx->CurrentServerDispatch;
1624 vbo_save_NotifyBegin(ctx, GL_QUADS, false);
1672 GET_CURRENT_CONTEXT(ctx);
1673 struct gl_vertex_array_object *vao = ctx->Array.VAO;
1674 struct vbo_save_context *save = &vbo_context(ctx)->save;
1677 if (!_mesa_is_valid_prim_mode(ctx, mode)) {
1678 _mesa_compile_error(ctx, GL_INVALID_ENUM, "glDrawArrays(mode)");
1682 _mesa_compile_error(ctx, GL_INVALID_VALUE, "glDrawArrays(count<0)");
1689 grow_vertex_storage(ctx, count);
1692 _mesa_update_state(ctx);
1694 _mesa_vao_map_arrays(ctx, vao, GL_MAP_READ_BIT);
1696 vbo_save_NotifyBegin(ctx, mode, true);
1699 _mesa_array_element(ctx, start + i);
1700 CALL_End(ctx->CurrentServerDispatch, ());
1702 _mesa_vao_unmap_arrays(ctx, vao);
1710 GET_CURRENT_CONTEXT(ctx);
1713 if (!_mesa_is_valid_prim_mode(ctx, mode)) {
1714 _mesa_compile_error(ctx, GL_INVALID_ENUM, "glMultiDrawArrays(mode)");
1719 _mesa_compile_error(ctx, GL_INVALID_VALUE,
1727 _mesa_compile_error(ctx, GL_INVALID_VALUE,
1734 grow_vertex_storage(ctx, vertcount);
1745 array_element(struct gl_context *ctx,
1757 if (ctx->Array._PrimitiveRestart[index_size_shift] &&
1758 elt == ctx->Array._RestartIndex[index_size_shift]) {
1759 CALL_PrimitiveRestartNV(ctx->CurrentServerDispatch, ());
1763 _mesa_array_element(ctx, basevertex + elt);
1774 GET_CURRENT_CONTEXT(ctx);
1775 struct vbo_save_context *save = &vbo_context(ctx)->save;
1776 struct gl_vertex_array_object *vao = ctx->Array.VAO;
1780 if (!_mesa_is_valid_prim_mode(ctx, mode)) {
1781 _mesa_compile_error(ctx, GL_INVALID_ENUM, "glDrawElements(mode)");
1785 _mesa_compile_error(ctx, GL_INVALID_VALUE, "glDrawElements(count<0)");
1791 _mesa_compile_error(ctx, GL_INVALID_VALUE, "glDrawElements(count<0)");
1798 grow_vertex_storage(ctx, count);
1801 _mesa_update_state(ctx);
1803 _mesa_vao_map(ctx, vao, GL_MAP_READ_BIT);
1809 vbo_save_NotifyBegin(ctx, mode, true);
1814 array_element(ctx, basevertex, ((GLubyte *) indices)[i], 0);
1818 array_element(ctx, basevertex, ((GLushort *) indices)[i], 1);
1822 array_element(ctx, basevertex, ((GLuint *) indices)[i], 2);
1825 _mesa_error(ctx, GL_INVALID_ENUM, "glDrawElements(type)");
1829 CALL_End(ctx->CurrentServerDispatch, ());
1831 _mesa_vao_unmap(ctx, vao);
1847 GET_CURRENT_CONTEXT(ctx);
1848 struct vbo_save_context *save = &vbo_context(ctx)->save;
1850 if (!_mesa_is_valid_prim_mode(ctx, mode)) {
1851 _mesa_compile_error(ctx, GL_INVALID_ENUM, "glDrawRangeElements(mode)");
1855 _mesa_compile_error(ctx, GL_INVALID_VALUE,
1862 _mesa_compile_error(ctx, GL_INVALID_ENUM, "glDrawRangeElements(type)");
1866 _mesa_compile_error(ctx, GL_INVALID_VALUE,
1882 GET_CURRENT_CONTEXT(ctx);
1883 struct _glapi_table *dispatch = ctx->CurrentServerDispatch;
1890 grow_vertex_storage(ctx, vertcount);
1907 GET_CURRENT_CONTEXT(ctx);
1908 struct _glapi_table *dispatch = ctx->CurrentServerDispatch;
1915 grow_vertex_storage(ctx, vertcount);
1928 vbo_install_save_vtxfmt(struct gl_context *ctx)
1935 struct _glapi_table *tab = ctx->Save;
1941 vbo_save_SaveFlushVertices(struct gl_context *ctx)
1943 struct vbo_save_context *save = &vbo_context(ctx)->save;
1947 if (ctx->Driver.CurrentSavePrimitive <= PRIM_MAX)
1951 compile_vertex_list(ctx);
1953 copy_to_current(ctx);
1954 reset_vertex(ctx);
1955 ctx->Driver.SaveNeedFlush = GL_FALSE;
1963 vbo_save_NewList(struct gl_context *ctx, GLuint list, GLenum mode)
1965 struct vbo_save_context *save = &vbo_context(ctx)->save;
1976 reset_vertex(ctx);
1977 ctx->Driver.SaveNeedFlush = GL_FALSE;
1985 vbo_save_EndList(struct gl_context *ctx)
1987 struct vbo_save_context *save = &vbo_context(ctx)->save;
1991 if (_mesa_inside_dlist_begin_end(ctx)) {
1994 ctx->Driver.CurrentSavePrimitive = PRIM_OUTSIDE_BEGIN_END;
2003 vbo_save_SaveFlushVertices(ctx);
2009 _mesa_install_save_vtxfmt(ctx);
2019 current_init(struct gl_context *ctx)
2021 struct vbo_save_context *save = &vbo_context(ctx)->save;
2027 save->currentsz[i] = &ctx->ListState.ActiveAttribSize[j];
2028 save->current[i] = (fi_type *) ctx->ListState.CurrentAttrib[j];
2034 save->currentsz[i] = &ctx->ListState.ActiveMaterialSize[j];
2035 save->current[i] = (fi_type *) ctx->ListState.CurrentMaterial[j];
2046 struct gl_context *ctx = gl_context_from_vbo_save(save);
2048 current_init(ctx);