Parcourir la source

progs/perf: add another VBO test for Create/Draw/Destroy pattern

Report both MB/sec and draw/sec.
tags/mesa_7_7_rc1
Brian Paul il y a 16 ans
Parent
révision
bae2d58827
1 fichiers modifiés avec 37 ajouts et 2 suppressions
  1. 37
    2
      progs/perf/vbo.c

+ 37
- 2
progs/perf/vbo.c Voir le fichier

@@ -41,7 +41,7 @@ static GLuint VBO;

static GLsizei VBOSize = 0;
static GLsizei SubSize = 0;
static GLubyte *VBOData = NULL;
static GLubyte *VBOData = NULL; /* array[DATA_SIZE] */

static const GLboolean DrawPoint = GL_TRUE;
static const GLboolean BufferSubDataInHalves = GL_TRUE;
@@ -107,6 +107,7 @@ UploadSubVBO(unsigned count)
glFinish();
}


/* Do multiple small SubData uploads, then call DrawArrays. This may be a
* fairer comparison to back-to-back BufferData calls:
*/
@@ -132,6 +133,31 @@ BatchUploadSubVBO(unsigned count)
}


/**
* Test the sequence:
* create/load VBO
* draw
* destroy VBO
*/
static void
CreateDrawDestroyVBO(unsigned count)
{
unsigned i;
for (i = 0; i < count; i++) {
GLuint vbo;
/* create/load */
glGenBuffersARB(1, &vbo);
glBufferDataARB(GL_ARRAY_BUFFER, VBOSize, VBOData, GL_STREAM_DRAW_ARB);
/* draw */
glVertexPointer(2, GL_FLOAT, sizeof(Vertex0), (void *) 0);
glDrawArrays(GL_POINTS, 0, 1);
/* destroy */
glDeleteBuffersARB(1, &vbo);
}
glFinish();
}


static const GLsizei Sizes[] = {
64,
1024,
@@ -164,7 +190,6 @@ PerfDraw(void)
sizeof(Vertex0));
}


/* glBufferDataARB()
*/
for (sz = 0; Sizes[sz]; sz++) {
@@ -206,5 +231,15 @@ PerfDraw(void)
SubSize, VBOSize, mbPerSec);
}

/* Create/Draw/Destroy
*/
for (sz = 0; Sizes[sz]; sz++) {
SubSize = VBOSize = Sizes[sz];
rate = PerfMeasureRate(CreateDrawDestroyVBO);
mbPerSec = rate * VBOSize / (1024.0 * 1024.0);
perf_printf(" VBO Create/Draw/Destroy(size = %d): %.1f MB/sec, %.1f draws/sec\n",
VBOSize, mbPerSec, rate);
}

exit(0);
}

Chargement…
Annuler
Enregistrer