Browse Source

gallium: if VERBOSE_GLSL flag is set, check for non-initialized uniforms at draw time

This will warn the user that the shader being run may be using uninitialized
uniform variables.
tags/mesa_20090313
Brian Paul 17 years ago
parent
commit
6282c38283
1 changed files with 27 additions and 0 deletions
  1. 27
    0
      src/mesa/state_tracker/st_draw.c

+ 27
- 0
src/mesa/state_tracker/st_draw.c View File

@@ -33,6 +33,7 @@
#include "main/imports.h"
#include "main/image.h"
#include "main/macros.h"
#include "shader/prog_uniform.h"

#include "vbo/vbo.h"

@@ -483,6 +484,28 @@ setup_non_interleaved_attribs(GLcontext *ctx,



/**
* Prior to drawing, check that any uniforms referenced by the
* current shader have been set. If a uniform has not been set,
* issue a warning.
*/
static void
check_uniforms(GLcontext *ctx)
{
const struct gl_shader_program *shProg = ctx->Shader.CurrentProgram;
if (shProg && shProg->LinkStatus) {
GLuint i;
for (i = 0; i < shProg->Uniforms->NumUniforms; i++) {
const struct gl_uniform *u = &shProg->Uniforms->Uniforms[i];
if (!u->Initialized) {
_mesa_warning(ctx,
"Using shader with uninitialized uniform: %s",
u->Name);
}
}
}
}


/**
* This function gets plugged into the VBO module and is called when
@@ -516,6 +539,10 @@ st_draw_vbo(GLcontext *ctx,
vp = ctx->st->vp;
vs = &ctx->st->vp->state;

if (MESA_VERBOSE & VERBOSE_GLSL) {
check_uniforms(ctx);
}

/*
* Setup the vbuffer[] and velements[] arrays.
*/

Loading…
Cancel
Save