Browse Source

progs/util: added GetShaderCompile/LinkTime() to get compilation/link times

tags/mesa_7_6_rc1
Brian Paul 16 years ago
parent
commit
f300db379e
2 changed files with 39 additions and 0 deletions
  1. 33
    0
      progs/util/shaderutil.c
  2. 6
    0
      progs/util/shaderutil.h

+ 33
- 0
progs/util/shaderutil.c View File

@@ -14,6 +14,12 @@
#include <GL/glut.h>
#include "shaderutil.h"

/** time to compile previous shader */
static GLdouble CompileTime = 0.0;

/** time to linke previous program */
static GLdouble LinkTime = 0.0;


GLboolean
ShadersSupported(void)
@@ -37,10 +43,17 @@ CompileShaderText(GLenum shaderType, const char *text)
{
GLuint shader;
GLint stat;
GLdouble t0, t1;

shader = glCreateShader(shaderType);
glShaderSource(shader, 1, (const GLchar **) &text, NULL);

t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
glCompileShader(shader);
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;

CompileTime = t1 - t0;

glGetShaderiv(shader, GL_COMPILE_STATUS, &stat);
if (!stat) {
GLchar log[1000];
@@ -95,6 +108,7 @@ GLuint
LinkShaders(GLuint vertShader, GLuint fragShader)
{
GLuint program = glCreateProgram();
GLdouble t0, t1;

assert(vertShader || fragShader);

@@ -102,7 +116,12 @@ LinkShaders(GLuint vertShader, GLuint fragShader)
glAttachShader(program, fragShader);
if (vertShader)
glAttachShader(program, vertShader);

t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
glLinkProgram(program);
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;

LinkTime = t1 - t0;

/* check link */
{
@@ -121,6 +140,20 @@ LinkShaders(GLuint vertShader, GLuint fragShader)
}


GLdouble
GetShaderCompileTime(void)
{
return CompileTime;
}


GLdouble
GetShaderLinkTime(void)
{
return LinkTime;
}


void
SetUniformValues(GLuint program, struct uniform_info uniforms[])
{

+ 6
- 0
progs/util/shaderutil.h View File

@@ -36,6 +36,12 @@ CompileShaderFile(GLenum shaderType, const char *filename);
extern GLuint
LinkShaders(GLuint vertShader, GLuint fragShader);

extern GLdouble
GetShaderCompileTime(void);

extern GLdouble
GetShaderLinkTime(void);

extern void
SetUniformValues(GLuint program, struct uniform_info uniforms[]);


Loading…
Cancel
Save