From f406cf4ac82510c6b064d9411ec0cbd38a0ef7e0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 14 Jul 2010 10:46:12 +0000 Subject: Fix a few compile warnings and rename gpu_buffers.h to GPU_buffers.h for consistency. --- source/blender/blenkernel/intern/DerivedMesh.c | 2 +- source/blender/blenkernel/intern/cdderivedmesh.c | 2 +- source/blender/blenlib/intern/pbvh.c | 2 +- source/blender/editors/sculpt_paint/sculpt.c | 2 +- source/blender/editors/space_view3d/drawmesh.c | 2 +- source/blender/gpu/GPU_buffers.h | 178 +++++++++++++++++++++ source/blender/gpu/gpu_buffers.h | 177 -------------------- source/blender/gpu/intern/gpu_buffers.c | 2 +- source/blender/gpu/intern/gpu_draw.c | 4 +- source/blender/windowmanager/intern/wm_init_exit.c | 2 +- 10 files changed, 187 insertions(+), 186 deletions(-) create mode 100644 source/blender/gpu/GPU_buffers.h delete mode 100644 source/blender/gpu/gpu_buffers.h (limited to 'source/blender') diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index d5ece6ae31f..8b1443403a3 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -59,7 +59,7 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_material.h" diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index a586ca57966..41e33002999 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -54,7 +54,7 @@ #include "MEM_guardedalloc.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_material.h" diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 82e2090c432..426181e5304 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -32,7 +32,7 @@ #include "BKE_mesh.h" /* for mesh_calc_normals */ #include "BKE_global.h" /* for mesh_calc_normals */ -#include "gpu_buffers.h" +#include "GPU_buffers.h" #define LEAF_LIMIT 10000 diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 53e07a50020..b53771c92ae 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -82,7 +82,7 @@ #include "RE_render_ext.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include #include diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index 63155a95601..f0e2f33491c 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -62,7 +62,7 @@ #include "UI_resources.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_extensions.h" #include "GPU_draw.h" diff --git a/source/blender/gpu/GPU_buffers.h b/source/blender/gpu/GPU_buffers.h new file mode 100644 index 00000000000..6f552e087d7 --- /dev/null +++ b/source/blender/gpu/GPU_buffers.h @@ -0,0 +1,178 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Brecht Van Lommel. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef __GPU_BUFFERS_H__ +#define __GPU_BUFFERS_H__ + +#define MAX_FREE_GPU_BUFFERS 8 + +#ifdef _DEBUG +/*#define DEBUG_VBO(X) printf(X)*/ +#define DEBUG_VBO(X) +#else +#define DEBUG_VBO(X) +#endif + +#ifdef _DEBUG +#define ERROR_VBO(X) printf(X) +#else +#define ERROR_VBO(X) +#endif + +struct DerivedMesh; +struct DMGridData; +struct GHash; +struct DMGridData; + +/* V - vertex, N - normal, T - uv, C - color + F - float, UB - unsigned byte */ +#define GPU_BUFFER_INTER_V3F 1 +#define GPU_BUFFER_INTER_N3F 2 +#define GPU_BUFFER_INTER_T2F 3 +#define GPU_BUFFER_INTER_C3UB 4 +#define GPU_BUFFER_INTER_C4UB 5 +#define GPU_BUFFER_INTER_END -1 + +typedef struct GPUBuffer +{ + int size; /* in bytes */ + void *pointer; /* used with vertex arrays */ + unsigned int id; /* used with vertex buffer objects */ +} GPUBuffer; + +typedef struct GPUBufferPool +{ + int size; /* number of allocated buffers stored */ + int maxsize; /* size of the array */ + GPUBuffer **buffers; +} GPUBufferPool; + +typedef struct GPUBufferMaterial +{ + int start; /* at which vertex in the buffer the material starts */ + int end; /* at which vertex it ends */ + char mat_nr; +} GPUBufferMaterial; + +typedef struct IndexLink { + int element; + struct IndexLink *next; +} IndexLink; + +typedef struct GPUDrawObject +{ + GPUBuffer *vertices; + GPUBuffer *normals; + GPUBuffer *uv; + GPUBuffer *colors; + GPUBuffer *edges; + GPUBuffer *uvedges; + + int *faceRemap; /* at what index was the face originally in DerivedMesh */ + IndexLink *indices; /* given an index, find all elements using it */ + IndexLink *indexMem; /* for faster memory allocation/freeing */ + int indexMemUsage; /* how many are already allocated */ + int colType; + + GPUBufferMaterial *materials; + + int nmaterials; + int nelements; /* (number of faces) * 3 */ + int nlooseverts; + int nedges; + int nindices; + int legacy; /* if there was a failure allocating some buffer, use old rendering code */ + +} GPUDrawObject; + +typedef struct GPUAttrib +{ + int index; + int size; + int type; +} GPUAttrib; + +GPUBufferPool *GPU_buffer_pool_new(); +void GPU_buffer_pool_free( GPUBufferPool *pool ); +void GPU_buffer_pool_free_unused( GPUBufferPool *pool ); + +GPUBuffer *GPU_buffer_alloc( int size, GPUBufferPool *pool ); +void GPU_buffer_free( GPUBuffer *buffer, GPUBufferPool *pool ); + +GPUDrawObject *GPU_drawobject_new( struct DerivedMesh *dm ); +void GPU_drawobject_free( struct DerivedMesh *dm ); + +/* Buffers for non-DerivedMesh drawing */ +void *GPU_build_mesh_buffers(struct GHash *map, struct MVert *mvert, + struct MFace *mface, int *face_indices, + int totface, int *vert_indices, int uniq_verts, + int totvert); +void GPU_update_mesh_buffers(void *buffers, struct MVert *mvert, + int *vert_indices, int totvert); +void *GPU_build_grid_buffers(struct DMGridData **grids, + int *grid_indices, int totgrid, int gridsize); +void GPU_update_grid_buffers(void *buffers_v, struct DMGridData **grids, + int *grid_indices, int totgrid, int gridsize, int smooth); +void GPU_draw_buffers(void *buffers); +void GPU_free_buffers(void *buffers); + +/* called before drawing */ +void GPU_vertex_setup( struct DerivedMesh *dm ); +void GPU_normal_setup( struct DerivedMesh *dm ); +void GPU_uv_setup( struct DerivedMesh *dm ); +void GPU_color_setup( struct DerivedMesh *dm ); +void GPU_edge_setup( struct DerivedMesh *dm ); /* does not mix with other data */ +void GPU_uvedge_setup( struct DerivedMesh *dm ); +void GPU_interleaved_setup( GPUBuffer *buffer, int data[] ); +int GPU_attrib_element_size( GPUAttrib data[], int numdata ); +void GPU_interleaved_attrib_setup( GPUBuffer *buffer, GPUAttrib data[], int numdata ); + +/* can't lock more than one buffer at once */ +void *GPU_buffer_lock( GPUBuffer *buffer ); +void *GPU_buffer_lock_stream( GPUBuffer *buffer ); +void GPU_buffer_unlock( GPUBuffer *buffer ); + +/* upload three unsigned chars, representing RGB colors, for each vertex. Resets dm->drawObject->colType to -1 */ +void GPU_color3_upload( struct DerivedMesh *dm, unsigned char *data ); +/* upload four unsigned chars, representing RGBA colors, for each vertex. Resets dm->drawObject->colType to -1 */ +void GPU_color4_upload( struct DerivedMesh *dm, unsigned char *data ); +/* switch color rendering on=1/off=0 */ +void GPU_color_switch( int mode ); + +void GPU_buffer_draw_elements( GPUBuffer *elements, unsigned int mode, int start, int count ); + +/* called after drawing */ +void GPU_buffer_unbind(); + +int GPU_buffer_legacy( struct DerivedMesh *dm ); + +#endif diff --git a/source/blender/gpu/gpu_buffers.h b/source/blender/gpu/gpu_buffers.h deleted file mode 100644 index 75e596935a3..00000000000 --- a/source/blender/gpu/gpu_buffers.h +++ /dev/null @@ -1,177 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2005 Blender Foundation. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): Brecht Van Lommel. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#ifndef __GPU_BUFFERS_H__ -#define __GPU_BUFFERS_H__ - -#define MAX_FREE_GPU_BUFFERS 8 - -#ifdef _DEBUG -/*#define DEBUG_VBO(X) printf(X)*/ -#define DEBUG_VBO(X) -#else -#define DEBUG_VBO(X) -#endif - -#ifdef _DEBUG -#define ERROR_VBO(X) printf(X) -#else -#define ERROR_VBO(X) -#endif - -struct DerivedMesh; -struct GHash; -struct DMGridData; - -/* V - vertex, N - normal, T - uv, C - color - F - float, UB - unsigned byte */ -#define GPU_BUFFER_INTER_V3F 1 -#define GPU_BUFFER_INTER_N3F 2 -#define GPU_BUFFER_INTER_T2F 3 -#define GPU_BUFFER_INTER_C3UB 4 -#define GPU_BUFFER_INTER_C4UB 5 -#define GPU_BUFFER_INTER_END -1 - -typedef struct GPUBuffer -{ - int size; /* in bytes */ - void *pointer; /* used with vertex arrays */ - unsigned int id; /* used with vertex buffer objects */ -} GPUBuffer; - -typedef struct GPUBufferPool -{ - int size; /* number of allocated buffers stored */ - int maxsize; /* size of the array */ - GPUBuffer **buffers; -} GPUBufferPool; - -typedef struct GPUBufferMaterial -{ - int start; /* at which vertex in the buffer the material starts */ - int end; /* at which vertex it ends */ - char mat_nr; -} GPUBufferMaterial; - -typedef struct IndexLink { - int element; - struct IndexLink *next; -} IndexLink; - -typedef struct GPUDrawObject -{ - GPUBuffer *vertices; - GPUBuffer *normals; - GPUBuffer *uv; - GPUBuffer *colors; - GPUBuffer *edges; - GPUBuffer *uvedges; - - int *faceRemap; /* at what index was the face originally in DerivedMesh */ - IndexLink *indices; /* given an index, find all elements using it */ - IndexLink *indexMem; /* for faster memory allocation/freeing */ - int indexMemUsage; /* how many are already allocated */ - int colType; - - GPUBufferMaterial *materials; - - int nmaterials; - int nelements; /* (number of faces) * 3 */ - int nlooseverts; - int nedges; - int nindices; - int legacy; /* if there was a failure allocating some buffer, use old rendering code */ - -} GPUDrawObject; - -typedef struct GPUAttrib -{ - int index; - int size; - int type; -} GPUAttrib; - -GPUBufferPool *GPU_buffer_pool_new(); -void GPU_buffer_pool_free( GPUBufferPool *pool ); -void GPU_buffer_pool_free_unused( GPUBufferPool *pool ); - -GPUBuffer *GPU_buffer_alloc( int size, GPUBufferPool *pool ); -void GPU_buffer_free( GPUBuffer *buffer, GPUBufferPool *pool ); - -GPUDrawObject *GPU_drawobject_new( struct DerivedMesh *dm ); -void GPU_drawobject_free( struct DerivedMesh *dm ); - -/* Buffers for non-DerivedMesh drawing */ -void *GPU_build_mesh_buffers(struct GHash *map, struct MVert *mvert, - struct MFace *mface, int *face_indices, - int totface, int *vert_indices, int uniq_verts, - int totvert); -void GPU_update_mesh_buffers(void *buffers, struct MVert *mvert, - int *vert_indices, int totvert); -void *GPU_build_grid_buffers(struct DMGridData **grids, - int *grid_indices, int totgrid, int gridsize); -void GPU_update_grid_buffers(void *buffers_v, struct DMGridData **grids, - int *grid_indices, int totgrid, int gridsize, int smooth); -void GPU_draw_buffers(void *buffers); -void GPU_free_buffers(void *buffers); - -/* called before drawing */ -void GPU_vertex_setup( struct DerivedMesh *dm ); -void GPU_normal_setup( struct DerivedMesh *dm ); -void GPU_uv_setup( struct DerivedMesh *dm ); -void GPU_color_setup( struct DerivedMesh *dm ); -void GPU_edge_setup( struct DerivedMesh *dm ); /* does not mix with other data */ -void GPU_uvedge_setup( struct DerivedMesh *dm ); -void GPU_interleaved_setup( GPUBuffer *buffer, int data[] ); -int GPU_attrib_element_size( GPUAttrib data[], int numdata ); -void GPU_interleaved_attrib_setup( GPUBuffer *buffer, GPUAttrib data[], int numdata ); - -/* can't lock more than one buffer at once */ -void *GPU_buffer_lock( GPUBuffer *buffer ); -void *GPU_buffer_lock_stream( GPUBuffer *buffer ); -void GPU_buffer_unlock( GPUBuffer *buffer ); - -/* upload three unsigned chars, representing RGB colors, for each vertex. Resets dm->drawObject->colType to -1 */ -void GPU_color3_upload( struct DerivedMesh *dm, unsigned char *data ); -/* upload four unsigned chars, representing RGBA colors, for each vertex. Resets dm->drawObject->colType to -1 */ -void GPU_color4_upload( struct DerivedMesh *dm, unsigned char *data ); -/* switch color rendering on=1/off=0 */ -void GPU_color_switch( int mode ); - -void GPU_buffer_draw_elements( GPUBuffer *elements, unsigned int mode, int start, int count ); - -/* called after drawing */ -void GPU_buffer_unbind(); - -int GPU_buffer_legacy( struct DerivedMesh *dm ); - -#endif diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index e0a47c0c5bc..bc90ddb23b7 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -49,7 +49,7 @@ #include "DNA_userdef_types.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #define GPU_BUFFER_VERTEX_STATE 1 #define GPU_BUFFER_NORMAL_STATE 2 diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index abbdbb4ac27..488eea40500 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -65,10 +65,10 @@ #include "BLI_threads.h" #include "BLI_blenlib.h" +#include "GPU_buffers.h" +#include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_material.h" -#include "GPU_draw.h" -#include "gpu_buffers.h" #include "smoke_API.h" diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index acb3f5ea254..db668390b88 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -88,7 +88,7 @@ #include "UI_interface.h" #include "BLF_api.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_extensions.h" #include "GPU_draw.h" -- cgit v1.2.3