diff options
author | marha <marha@users.sourceforge.net> | 2013-01-22 14:07:34 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-01-22 14:07:34 +0100 |
commit | 470f7ca9f0be348faf2f03fc16811844c5eeffce (patch) | |
tree | 3071ab9b9fbabc772ee68c86fe587f260bde26c6 /mesalib/src/mesa/main/uniforms.c | |
parent | 4fc6b34d1c14cc61f553ca59264d0909656933f3 (diff) | |
download | vcxsrv-470f7ca9f0be348faf2f03fc16811844c5eeffce.tar.gz vcxsrv-470f7ca9f0be348faf2f03fc16811844c5eeffce.tar.bz2 vcxsrv-470f7ca9f0be348faf2f03fc16811844c5eeffce.zip |
fontconfig libfontenc mesa mkfontscale pixman xserver xkeyboard-config
fontconfig: 000ca9ccb03013a5b151f0d21148ab0ca4c2f2de
libfontenc: f5d1208172e965fdd7fae8927bd3e29b3cc3a975
mesa: 148fc6d53716f39971a453792570c2b8c207efb6
mkfontscale: 547517571e695728278a264eedbac47b6e1f43bc
pixman: 2c6577476e5b18e17904ae8af244a39c352e2e33
xserver: 70b127c9f1c53bdb42f078265e67f76b464deae2
xkeyboard-config: 6b35b1b43d2fdff30f530d7cf65fffd6c3504690
Diffstat (limited to 'mesalib/src/mesa/main/uniforms.c')
-rw-r--r-- | mesalib/src/mesa/main/uniforms.c | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/mesalib/src/mesa/main/uniforms.c b/mesalib/src/mesa/main/uniforms.c index 77b195edb..62c85b3c0 100644 --- a/mesalib/src/mesa/main/uniforms.c +++ b/mesalib/src/mesa/main/uniforms.c @@ -782,8 +782,6 @@ _mesa_GetActiveUniformName(GLuint program, GLuint uniformIndex, return; } - ASSERT_OUTSIDE_BEGIN_END(ctx); - shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveUniformName"); if (!shProg) @@ -795,7 +793,46 @@ _mesa_GetActiveUniformName(GLuint program, GLuint uniformIndex, } if (uniformName) { - _mesa_copy_string(uniformName, bufSize, length, - shProg->UniformStorage[uniformIndex].name); + _mesa_get_uniform_name(& shProg->UniformStorage[uniformIndex], + bufSize, length, uniformName); + } +} + +void +_mesa_get_uniform_name(const struct gl_uniform_storage *uni, + GLsizei maxLength, GLsizei *length, + GLchar *nameOut) +{ + GLsizei localLength; + + if (length == NULL) + length = &localLength; + + _mesa_copy_string(nameOut, maxLength, length, uni->name); + + /* Page 61 (page 73 of the PDF) in section 2.11 of the OpenGL ES 3.0 + * spec says: + * + * "If the active uniform is an array, the uniform name returned in + * name will always be the name of the uniform array appended with + * "[0]"." + * + * The same text also appears in the OpenGL 4.2 spec. It does not, + * however, appear in any previous spec. Previous specifications are + * ambiguous in this regard. However, either name can later be passed + * to glGetUniformLocation (and related APIs), so there shouldn't be any + * harm in always appending "[0]" to uniform array names. + */ + if (uni->array_elements != 0) { + unsigned i; + + /* The comparison is strange because *length does *NOT* include the + * terminating NUL, but maxLength does. + */ + for (i = 0; i < 3 && (*length + i + 1) < maxLength; i++) + nameOut[*length + i] = "[0]"[i]; + + nameOut[*length + i] = '\0'; + *length += i; } } |