#include "glheader.h"
#include "hash.h"
#include "imports.h"
#include "context.h"
#include "arrayobj.h"
#include "macros.h"
#include "glapi/dispatch.h"
Functions | |
| static INLINE struct gl_array_object * | lookup_arrayobj (GLcontext *ctx, GLuint id) |
| Look up the array object for the given ID. | |
| static void | unbind_array_object_vbos (GLcontext *ctx, struct gl_array_object *obj) |
| For all the vertex arrays in the array object, unbind any pointers to any buffer objects (VBOs). | |
| struct gl_array_object * | _mesa_new_array_object (GLcontext *ctx, GLuint name) |
| Allocate and initialize a new vertex array object. | |
| void | _mesa_delete_array_object (GLcontext *ctx, struct gl_array_object *obj) |
| Delete an array object. | |
| void | _mesa_reference_array_object (GLcontext *ctx, struct gl_array_object **ptr, struct gl_array_object *arrayObj) |
| Set ptr to arrayObj w/ reference counting. | |
| static void | init_array (GLcontext *ctx, struct gl_client_array *array, GLint size, GLint type) |
| void | _mesa_initialize_array_object (GLcontext *ctx, struct gl_array_object *obj, GLuint name) |
| Initialize a gl_array_object's arrays. | |
| static void | save_array_object (GLcontext *ctx, struct gl_array_object *obj) |
| Add the given array object to the array object pool. | |
| static void | remove_array_object (GLcontext *ctx, struct gl_array_object *obj) |
| Remove the given array object from the array object pool. | |
| static void | compute_max_element (struct gl_client_array *array) |
| Compute the index of the last array element that can be safely accessed in a vertex array. | |
| static GLuint | update_min (GLuint min, struct gl_client_array *array) |
| Helper for update_arrays(). | |
| void | _mesa_update_array_object_max_element (GLcontext *ctx, struct gl_array_object *arrayObj) |
| Examine vertex arrays to update the gl_array_object::_MaxElement field. | |
| static void | bind_vertex_array (GLcontext *ctx, GLuint id, GLboolean genRequired) |
| Helper for _mesa_BindVertexArray() and _mesa_BindVertexArrayAPPLE(). | |
| void GLAPIENTRY | _mesa_BindVertexArray (GLuint id) |
| ARB version of glBindVertexArray() This function behaves differently from glBindVertexArrayAPPLE() in that this function requires all ids to have been previously generated by glGenVertexArrays[APPLE](). | |
| void GLAPIENTRY | _mesa_BindVertexArrayAPPLE (GLuint id) |
| Bind a new array. | |
| void GLAPIENTRY | _mesa_DeleteVertexArraysAPPLE (GLsizei n, const GLuint *ids) |
| Delete a set of array objects. | |
| static void | gen_vertex_arrays (GLcontext *ctx, GLsizei n, GLuint *arrays, GLboolean vboOnly) |
Generate a set of unique array object IDs and store them in arrays. | |
| void GLAPIENTRY | _mesa_GenVertexArrays (GLsizei n, GLuint *arrays) |
| ARB version of glGenVertexArrays() All arrays will be required to live in VBOs. | |
| void GLAPIENTRY | _mesa_GenVertexArraysAPPLE (GLsizei n, GLuint *arrays) |
| APPLE version of glGenVertexArraysAPPLE() Arrays may live in VBOs or ordinary memory. | |
| GLboolean GLAPIENTRY | _mesa_IsVertexArrayAPPLE (GLuint id) |
| Determine if ID is the name of an array object. | |
| void GLAPIENTRY _mesa_BindVertexArray | ( | GLuint | id | ) |
ARB version of glBindVertexArray() This function behaves differently from glBindVertexArrayAPPLE() in that this function requires all ids to have been previously generated by glGenVertexArrays[APPLE]().
| void GLAPIENTRY _mesa_BindVertexArrayAPPLE | ( | GLuint | id | ) |
Bind a new array.
| void _mesa_delete_array_object | ( | GLcontext * | ctx, | |
| struct gl_array_object * | obj | |||
| ) |
Delete an array object.
This function is intended to be called via dd_function_table::DeleteArrayObject.
| void GLAPIENTRY _mesa_DeleteVertexArraysAPPLE | ( | GLsizei | n, | |
| const GLuint * | ids | |||
| ) |
Delete a set of array objects.
| n | Number of array objects to delete. | |
| ids | Array of n array object IDs. |
| void GLAPIENTRY _mesa_GenVertexArrays | ( | GLsizei | n, | |
| GLuint * | arrays | |||
| ) |
ARB version of glGenVertexArrays() All arrays will be required to live in VBOs.
| void GLAPIENTRY _mesa_GenVertexArraysAPPLE | ( | GLsizei | n, | |
| GLuint * | arrays | |||
| ) |
APPLE version of glGenVertexArraysAPPLE() Arrays may live in VBOs or ordinary memory.
| void _mesa_initialize_array_object | ( | GLcontext * | ctx, | |
| struct gl_array_object * | obj, | |||
| GLuint | name | |||
| ) |
Initialize a gl_array_object's arrays.
| GLboolean GLAPIENTRY _mesa_IsVertexArrayAPPLE | ( | GLuint | id | ) |
Determine if ID is the name of an array object.
| id | ID of the potential array object. |
GL_TRUE if id is the name of a array object, GL_FALSE otherwise. | struct gl_array_object* _mesa_new_array_object | ( | GLcontext * | ctx, | |
| GLuint | name | |||
| ) | [read] |
Allocate and initialize a new vertex array object.
This function is intended to be called via dd_function_table::NewArrayObject.
| void _mesa_reference_array_object | ( | GLcontext * | ctx, | |
| struct gl_array_object ** | ptr, | |||
| struct gl_array_object * | arrayObj | |||
| ) |
Set ptr to arrayObj w/ reference counting.
| void _mesa_update_array_object_max_element | ( | GLcontext * | ctx, | |
| struct gl_array_object * | arrayObj | |||
| ) |
Examine vertex arrays to update the gl_array_object::_MaxElement field.
| static void bind_vertex_array | ( | GLcontext * | ctx, | |
| GLuint | id, | |||
| GLboolean | genRequired | |||
| ) | [static] |
Helper for _mesa_BindVertexArray() and _mesa_BindVertexArrayAPPLE().
| genRequired | specifies behavour when id was not generated with glGenVertexArrays(). |
| static void compute_max_element | ( | struct gl_client_array * | array | ) | [static] |
Compute the index of the last array element that can be safely accessed in a vertex array.
We can really only do this when the array lives in a VBO. The array->_MaxElement field will be updated. Later in glDrawArrays/Elements/etc we can do some bounds checking.
| static void gen_vertex_arrays | ( | GLcontext * | ctx, | |
| GLsizei | n, | |||
| GLuint * | arrays, | |||
| GLboolean | vboOnly | |||
| ) | [static] |
Generate a set of unique array object IDs and store them in arrays.
Helper for _mesa_GenVertexArrays[APPLE]() functions below.
| n | Number of IDs to generate. | |
| arrays | Array of n locations to store the IDs. | |
| vboOnly | Will arrays have to reside in VBOs? |
| static void init_array | ( | GLcontext * | ctx, | |
| struct gl_client_array * | array, | |||
| GLint | size, | |||
| GLint | type | |||
| ) | [static] |
| static INLINE struct gl_array_object* lookup_arrayobj | ( | GLcontext * | ctx, | |
| GLuint | id | |||
| ) | [static, read] |
Look up the array object for the given ID.
NULL for a non-existent ID. The spec defines ID 0 as being technically non-existent. | static void remove_array_object | ( | GLcontext * | ctx, | |
| struct gl_array_object * | obj | |||
| ) | [static] |
Remove the given array object from the array object pool.
Do not deallocate the array object though.
| static void save_array_object | ( | GLcontext * | ctx, | |
| struct gl_array_object * | obj | |||
| ) | [static] |
Add the given array object to the array object pool.
| static void unbind_array_object_vbos | ( | GLcontext * | ctx, | |
| struct gl_array_object * | obj | |||
| ) | [static] |
For all the vertex arrays in the array object, unbind any pointers to any buffer objects (VBOs).
This is done just prior to array object destruction.
| static GLuint update_min | ( | GLuint | min, | |
| struct gl_client_array * | array | |||
| ) | [static] |
1.5.4