Add vao cache for static surfaces.
Remove support for draw range elements, multi draw arrays, world vao creation, surface merging.
This commit is contained in:
parent
127464ed19
commit
c65d2c2657
12 changed files with 413 additions and 730 deletions
|
@ -929,8 +929,6 @@ typedef struct srfBspSurface_s
|
|||
// BSP VBO offsets
|
||||
int firstVert;
|
||||
int firstIndex;
|
||||
glIndex_t minIndex;
|
||||
glIndex_t maxIndex;
|
||||
|
||||
// static render data
|
||||
vao_t *vao;
|
||||
|
@ -1005,8 +1003,6 @@ typedef struct srfVaoMdvMesh_s
|
|||
// backEnd stats
|
||||
int numIndexes;
|
||||
int numVerts;
|
||||
glIndex_t minIndex;
|
||||
glIndex_t maxIndex;
|
||||
|
||||
// static render data
|
||||
vao_t *vao;
|
||||
|
@ -1135,15 +1131,8 @@ typedef struct {
|
|||
int *surfacesDlightBits;
|
||||
int *surfacesPshadowBits;
|
||||
|
||||
int numMergedSurfaces;
|
||||
msurface_t *mergedSurfaces;
|
||||
int *mergedSurfacesViewCount;
|
||||
int *mergedSurfacesDlightBits;
|
||||
int *mergedSurfacesPshadowBits;
|
||||
|
||||
int nummarksurfaces;
|
||||
int *marksurfaces;
|
||||
int *viewSurfaces;
|
||||
|
||||
int numfogs;
|
||||
fog_t *fogs;
|
||||
|
@ -1375,8 +1364,6 @@ typedef struct {
|
|||
|
||||
qboolean intelGraphics;
|
||||
|
||||
qboolean drawRangeElements;
|
||||
qboolean multiDrawArrays;
|
||||
qboolean occlusionQuery;
|
||||
|
||||
int glslMajorVersion;
|
||||
|
@ -1415,9 +1402,6 @@ typedef struct {
|
|||
int c_staticVaoDraws;
|
||||
int c_dynamicVaoDraws;
|
||||
|
||||
int c_multidraws;
|
||||
int c_multidrawsMerged;
|
||||
|
||||
int c_dlightVertexes;
|
||||
int c_dlightIndexes;
|
||||
|
||||
|
@ -1689,8 +1673,6 @@ extern cvar_t *r_showcluster;
|
|||
extern cvar_t *r_gamma;
|
||||
extern cvar_t *r_displayRefresh; // optional display refresh option
|
||||
|
||||
extern cvar_t *r_ext_draw_range_elements;
|
||||
extern cvar_t *r_ext_multi_draw_arrays;
|
||||
extern cvar_t *r_ext_framebuffer_object;
|
||||
extern cvar_t *r_ext_texture_float;
|
||||
extern cvar_t *r_ext_framebuffer_multisample;
|
||||
|
@ -1977,8 +1959,6 @@ typedef struct stageVars
|
|||
vec2_t texcoords[NUM_TEXTURE_BUNDLES][SHADER_MAX_VERTEXES];
|
||||
} stageVars_t;
|
||||
|
||||
#define MAX_MULTIDRAW_PRIMITIVES 256
|
||||
|
||||
typedef struct shaderCommands_s
|
||||
{
|
||||
glIndex_t indexes[SHADER_MAX_INDEXES] QALIGN(16);
|
||||
|
@ -1994,6 +1974,7 @@ typedef struct shaderCommands_s
|
|||
void *attribPointers[ATTR_INDEX_COUNT];
|
||||
vao_t *vao;
|
||||
qboolean useInternalVao;
|
||||
qboolean useCacheVao;
|
||||
|
||||
stageVars_t svars QALIGN(16);
|
||||
|
||||
|
@ -2010,14 +1991,6 @@ typedef struct shaderCommands_s
|
|||
int firstIndex;
|
||||
int numIndexes;
|
||||
int numVertexes;
|
||||
glIndex_t minIndex;
|
||||
glIndex_t maxIndex;
|
||||
|
||||
int multiDrawPrimitives;
|
||||
GLsizei multiDrawNumIndexes[MAX_MULTIDRAW_PRIMITIVES];
|
||||
glIndex_t *multiDrawFirstIndex[MAX_MULTIDRAW_PRIMITIVES];
|
||||
glIndex_t multiDrawMinIndex[MAX_MULTIDRAW_PRIMITIVES];
|
||||
glIndex_t multiDrawMaxIndex[MAX_MULTIDRAW_PRIMITIVES];
|
||||
|
||||
// info extracted from current shader
|
||||
int numPasses;
|
||||
|
@ -2032,7 +2005,7 @@ void RB_EndSurface(void);
|
|||
void RB_CheckOverflow( int verts, int indexes );
|
||||
#define RB_CHECKOVERFLOW(v,i) if (tess.numVertexes + (v) >= SHADER_MAX_VERTEXES || tess.numIndexes + (i) >= SHADER_MAX_INDEXES ) {RB_CheckOverflow(v,i);}
|
||||
|
||||
void R_DrawElementsVao( int numIndexes, glIndex_t firstIndex, glIndex_t minIndex, glIndex_t maxIndex );
|
||||
void R_DrawElements( int numIndexes, glIndex_t firstIndex );
|
||||
void RB_StageIteratorGeneric( void );
|
||||
void RB_StageIteratorSky( void );
|
||||
void RB_StageIteratorVertexLitTexture( void );
|
||||
|
@ -2171,6 +2144,14 @@ void R_VaoList_f(void);
|
|||
|
||||
void RB_UpdateTessVao(unsigned int attribBits);
|
||||
|
||||
void VaoCache_Commit(void);
|
||||
void VaoCache_Init(void);
|
||||
void VaoCache_BindVao(void);
|
||||
void VaoCache_CheckAdd(qboolean *endSurface, qboolean *recycleVertexBuffer, qboolean *recycleIndexBuffer, int numVerts, int numIndexes);
|
||||
void VaoCache_RecycleVertexBuffer(void);
|
||||
void VaoCache_RecycleIndexBuffer(void);
|
||||
void VaoCache_InitQueue(void);
|
||||
void VaoCache_AddSurface(srfVert_t *verts, int numVerts, glIndex_t *indexes, int numIndexes);
|
||||
|
||||
/*
|
||||
============================================================
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue