#include "main/api_arrayelt.h"
#include "main/arrayobj.h"
#include "main/varray.h"
+#include "util/u_memory.h"
#include "vbo.h"
#include "vbo_private.h"
void
-vbo_exec_invalidate_state(struct gl_context *ctx)
+vbo_exec_update_eval_maps(struct gl_context *ctx)
{
struct vbo_context *vbo = vbo_context(ctx);
- struct vbo_exec_context *exec = &vbo->exec;
- if (ctx->NewState & _NEW_EVAL)
- exec->eval.recalculate_maps = GL_TRUE;
+ vbo->exec.eval.recalculate_maps = GL_TRUE;
}
GLboolean
-_vbo_CreateContext(struct gl_context *ctx)
+_vbo_CreateContext(struct gl_context *ctx, bool use_buffer_objects)
{
- struct vbo_context *vbo = CALLOC_STRUCT(vbo_context);
+ struct vbo_context *vbo = &ctx->vbo_context;
- ctx->vbo_context = vbo;
+ memset(vbo, 0, sizeof(*vbo));
vbo->binding.Offset = 0;
vbo->binding.Stride = 0;
vbo->binding.InstanceDivisor = 0;
- _mesa_reference_buffer_object(ctx, &vbo->binding.BufferObj,
- ctx->Shared->NullBufferObj);
+
init_legacy_currval(ctx);
init_generic_currval(ctx);
init_mat_currval(ctx);
* will pretty much be permanently installed, which means that the
* vtxfmt mechanism can be removed now.
*/
- vbo_exec_init(ctx);
+ vbo_exec_init(ctx, use_buffer_objects);
if (ctx->API == API_OPENGL_COMPAT)
vbo_save_init(ctx);
struct vbo_context *vbo = vbo_context(ctx);
if (vbo) {
-
_mesa_reference_buffer_object(ctx, &vbo->binding.BufferObj, NULL);
vbo_exec_destroy(ctx);
if (ctx->API == API_OPENGL_COMPAT)
vbo_save_destroy(ctx);
_mesa_reference_vao(ctx, &vbo->VAO, NULL);
- free(vbo);
- ctx->vbo_context = NULL;
}
}