mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
mesa: check that uniform exists in glUniform* functions
Remap table for uniforms may contain empty entries when using explicit uniform locations. If no active/inactive variable exists with given location, remap table contains NULL. v2: move remap table bounds check before existence check (Ian Romanick) Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Tested-by: Erik Faye-Lund <kusmabite@gmail.com> (v1) Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83574
This commit is contained in:
parent
ce50a61d36
commit
9bd139e451
1 changed files with 8 additions and 8 deletions
|
|
@ -226,6 +226,13 @@ validate_uniform_parameters(struct gl_context *ctx,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* Check that the given location is in bounds of uniform remap table. */
|
||||
if (location >= (GLint) shProg->NumUniformRemapTable) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(location=%d)",
|
||||
caller, location);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Page 82 (page 96 of the PDF) of the OpenGL 2.1 spec says:
|
||||
*
|
||||
* "If any of the following conditions occur, an INVALID_OPERATION
|
||||
|
|
@ -239,19 +246,12 @@ validate_uniform_parameters(struct gl_context *ctx,
|
|||
* - if count is greater than one, and the uniform declared in the
|
||||
* shader is not an array variable,
|
||||
*/
|
||||
if (location < -1) {
|
||||
if (location < -1 || !shProg->UniformRemapTable[location]) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(location=%d)",
|
||||
caller, location);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Check that the given location is in bounds of uniform remap table. */
|
||||
if (location >= (GLint) shProg->NumUniformRemapTable) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(location=%d)",
|
||||
caller, location);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* If the driver storage pointer in remap table is -1, we ignore silently.
|
||||
*
|
||||
* GL_ARB_explicit_uniform_location spec says:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue