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

Brian Paul brianp at kemper.freedesktop.org
Thu Aug 20 20:52:07 UTC 2009


Module: Mesa
Branch: master
Commit: f300db379e49c39418c4f05cc377ee7733d90163
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f300db379e49c39418c4f05cc377ee7733d90163

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Aug 20 14:29:26 2009 -0600

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

---

 progs/util/shaderutil.c |   33 +++++++++++++++++++++++++++++++++
 progs/util/shaderutil.h |    6 ++++++
 2 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/progs/util/shaderutil.c b/progs/util/shaderutil.c
index 489e71c..c58c249 100644
--- a/progs/util/shaderutil.c
+++ b/progs/util/shaderutil.c
@@ -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[])
 {
diff --git a/progs/util/shaderutil.h b/progs/util/shaderutil.h
index 0a6be02..91c0d40 100644
--- a/progs/util/shaderutil.h
+++ b/progs/util/shaderutil.h
@@ -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[]);
 




More information about the mesa-commit mailing list