mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 20:38:06 +02:00
mesa: add back glGetnUniform*v() overflow error reporting
The error was removed in:
commit 719909698c
Author: Ian Romanick <ian.d.romanick@intel.com>
Date: Tue Oct 18 16:01:49 2011 -0700
mesa: Rewrite the way uniforms are tracked and handled
The GL_ARB_robustness spec doesn't say the implementation
should truncate the output, so just return after setting
the required error like it did before the above commit.
Also fixup an old comment and add an assert.
NOTE: This is a candidate for the 8.0 branch.
This commit is contained in:
parent
cc5b0ffae0
commit
b536ac6b2b
2 changed files with 13 additions and 5 deletions
|
|
@ -203,10 +203,18 @@ _mesa_get_uniform(struct gl_context *ctx, GLuint program, GLint location,
|
|||
const union gl_constant_value *const src =
|
||||
&uni->storage[offset * elements];
|
||||
|
||||
unsigned bytes = sizeof(uni->storage[0]) * elements;
|
||||
if (bytes > (unsigned) bufSize) {
|
||||
elements = bufSize / sizeof(uni->storage[0]);
|
||||
bytes = bufSize;
|
||||
assert(returnType == GLSL_TYPE_FLOAT || returnType == GLSL_TYPE_INT ||
|
||||
returnType == GLSL_TYPE_UINT);
|
||||
/* The three (currently) supported types all have the same size,
|
||||
* which is of course the same as their union. That'll change
|
||||
* with glGetUniformdv()...
|
||||
*/
|
||||
unsigned bytes = sizeof(src[0]) * elements;
|
||||
if (bufSize < 0 || bytes > (unsigned) bufSize) {
|
||||
_mesa_error( ctx, GL_INVALID_OPERATION,
|
||||
"glGetnUniform*vARB(out of bounds: bufSize is %d,"
|
||||
" but %u bytes are required)", bufSize, bytes );
|
||||
return;
|
||||
}
|
||||
|
||||
/* If the return type and the uniform's native type are "compatible,"
|
||||
|
|
|
|||
|
|
@ -479,7 +479,7 @@ _mesa_GetnUniformdvARB(GLhandleARB program, GLint location,
|
|||
(void) params;
|
||||
|
||||
/*
|
||||
_mesa_get_uniform(ctx, program, location, bufSize, GL_DOUBLE, params);
|
||||
_mesa_get_uniform(ctx, program, location, bufSize, GLSL_TYPE_DOUBLE, params);
|
||||
*/
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformdvARB"
|
||||
"(GL_ARB_gpu_shader_fp64 not implemented)");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue