* of zero.
*/
+#include <stdio.h>
#include "main/glheader.h"
#include "main/imports.h"
#include "main/mtypes.h"
GLuint count, \
TYPE min_index ) \
{ \
- const TYPE *in = (TYPE *)ptr; \
- TYPE *tmp_indices = malloc(count * sizeof(TYPE)); \
GLuint i; \
+ const TYPE *in = (TYPE *)ptr; \
+ TYPE *tmp_indices = malloc(count * sizeof(TYPE)); \
+ \
+ if (tmp_indices == NULL) { \
+ _mesa_error_no_memory(__func__); \
+ return NULL; \
+ } \
\
for (i = 0; i < count; i++) \
tmp_indices[i] = in[i] - min_index; \
REBASE(GLushort)
REBASE(GLubyte)
-GLboolean vbo_all_varyings_in_vbos( const struct gl_client_array *arrays[] )
+GLboolean vbo_all_varyings_in_vbos( const struct gl_vertex_array *arrays[] )
{
GLuint i;
return GL_TRUE;
}
-GLboolean vbo_any_varyings_in_vbos( const struct gl_client_array *arrays[] )
+GLboolean vbo_any_varyings_in_vbos( const struct gl_vertex_array *arrays[] )
{
GLuint i;
* all or nothing.
*/
void vbo_rebase_prims( struct gl_context *ctx,
- const struct gl_client_array *arrays[],
+ const struct gl_vertex_array *arrays[],
const struct _mesa_prim *prim,
GLuint nr_prims,
const struct _mesa_index_buffer *ib,
GLuint max_index,
vbo_draw_func draw )
{
- struct gl_client_array tmp_arrays[VERT_ATTRIB_MAX];
- const struct gl_client_array *tmp_array_pointers[VERT_ATTRIB_MAX];
+ struct gl_vertex_array tmp_arrays[VERT_ATTRIB_MAX];
+ const struct gl_vertex_array *tmp_array_pointers[VERT_ATTRIB_MAX];
struct _mesa_index_buffer tmp_ib;
struct _mesa_prim *tmp_prims = NULL;
- const struct gl_client_array **saved_arrays = ctx->Array._DrawArrays;
+ const struct gl_vertex_array **saved_arrays = ctx->Array._DrawArrays;
void *tmp_indices = NULL;
GLuint i;
assert(min_index != 0);
if (0)
- printf("%s %d..%d\n", __FUNCTION__, min_index, max_index);
+ printf("%s %d..%d\n", __func__, min_index, max_index);
/* XXX this path is disabled for now.
*/
tmp_prims = malloc(sizeof(*prim) * nr_prims);
+ if (tmp_prims == NULL) {
+ _mesa_error_no_memory(__func__);
+ return;
+ }
+
for (i = 0; i < nr_prims; i++) {
tmp_prims[i] = prim[i];
tmp_prims[i].basevertex -= min_index;
/* Some users might prefer it if we translated elements to
* GLuints here. Others wouldn't...
*/
- switch (ib->type) {
- case GL_UNSIGNED_INT:
+ switch (ib->index_size) {
+ case 4:
tmp_indices = rebase_GLuint( ptr, ib->count, min_index );
break;
- case GL_UNSIGNED_SHORT:
+ case 2:
tmp_indices = rebase_GLushort( ptr, ib->count, min_index );
break;
- case GL_UNSIGNED_BYTE:
+ case 1:
tmp_indices = rebase_GLubyte( ptr, ib->count, min_index );
break;
}
if (map_ib)
ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL);
+ if (tmp_indices == NULL) {
+ return;
+ }
+
tmp_ib.obj = ctx->Shared->NullBufferObj;
tmp_ib.ptr = tmp_indices;
tmp_ib.count = ib->count;
- tmp_ib.type = ib->type;
+ tmp_ib.index_size = ib->index_size;
ib = &tmp_ib;
}
*/
tmp_prims = malloc(sizeof(*prim) * nr_prims);
+ if (tmp_prims == NULL) {
+ _mesa_error_no_memory(__func__);
+ return;
+ }
+
for (i = 0; i < nr_prims; i++) {
/* If this fails, it could indicate an application error:
*/
GL_TRUE,
0,
max_index - min_index,
- NULL, NULL );
+ NULL, 0, NULL );
ctx->Array._DrawArrays = saved_arrays;
ctx->NewDriverState |= ctx->DriverFlags.NewArray;