mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
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.
This commit is contained in:
parent
0331c1c169
commit
6282c38283
1 changed files with 27 additions and 0 deletions
|
|
@ -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…
Add table
Reference in a new issue