mesa: Minor clean ups in _mesa_uniform

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
Ian Romanick 2014-10-10 16:35:31 +02:00
parent 9c38d4db52
commit 23dcbf623f

View file

@ -587,7 +587,6 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
unsigned src_components) unsigned src_components)
{ {
unsigned offset; unsigned offset;
unsigned components;
struct gl_uniform_storage *const uni = struct gl_uniform_storage *const uni =
validate_uniform_parameters(ctx, shProg, location, count, validate_uniform_parameters(ctx, shProg, location, count,
@ -597,11 +596,8 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
/* Verify that the types are compatible. /* Verify that the types are compatible.
*/ */
if (uni->type->is_sampler()) { const unsigned components = uni->type->is_sampler()
components = 1; ? 1 : uni->type->vector_elements;
} else {
components = uni->type->vector_elements;
}
bool match; bool match;
switch (uni->type->base_type) { switch (uni->type->base_type) {
@ -645,9 +641,7 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
* GL_INVALID_VALUE error and ignore the command. * GL_INVALID_VALUE error and ignore the command.
*/ */
if (uni->type->is_sampler()) { if (uni->type->is_sampler()) {
int i; for (int i = 0; i < count; i++) {
for (i = 0; i < count; i++) {
const unsigned texUnit = ((unsigned *) values)[i]; const unsigned texUnit = ((unsigned *) values)[i];
/* check that the sampler (tex unit index) is legal */ /* check that the sampler (tex unit index) is legal */
@ -662,9 +656,7 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
} }
if (uni->type->is_image()) { if (uni->type->is_image()) {
int i; for (int i = 0; i < count; i++) {
for (i = 0; i < count; i++) {
const int unit = ((GLint *) values)[i]; const int unit = ((GLint *) values)[i];
/* check that the image unit is legal */ /* check that the image unit is legal */
@ -704,9 +696,8 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
(const union gl_constant_value *) values; (const union gl_constant_value *) values;
union gl_constant_value *dst = &uni->storage[components * offset]; union gl_constant_value *dst = &uni->storage[components * offset];
const unsigned elems = components * count; const unsigned elems = components * count;
unsigned i;
for (i = 0; i < elems; i++) { for (unsigned i = 0; i < elems; i++) {
if (basicType == GLSL_TYPE_FLOAT) { if (basicType == GLSL_TYPE_FLOAT) {
dst[i].i = src[i].f != 0.0f ? ctx->Const.UniformBooleanTrue : 0; dst[i].i = src[i].f != 0.0f ? ctx->Const.UniformBooleanTrue : 0;
} else { } else {
@ -723,19 +714,16 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
* the changes through. * the changes through.
*/ */
if (uni->type->is_sampler()) { if (uni->type->is_sampler()) {
int i;
bool flushed = false; bool flushed = false;
for (i = 0; i < MESA_SHADER_STAGES; i++) { for (int i = 0; i < MESA_SHADER_STAGES; i++) {
struct gl_shader *const sh = shProg->_LinkedShaders[i]; struct gl_shader *const sh = shProg->_LinkedShaders[i];
int j;
/* If the shader stage doesn't use the sampler uniform, skip this. /* If the shader stage doesn't use the sampler uniform, skip this.
*/ */
if (sh == NULL || !uni->sampler[i].active) if (sh == NULL || !uni->sampler[i].active)
continue; continue;
for (j = 0; j < count; j++) { for (int j = 0; j < count; j++) {
sh->SamplerUnits[uni->sampler[i].index + offset + j] = sh->SamplerUnits[uni->sampler[i].index + offset + j] =
((unsigned *) values)[j]; ((unsigned *) values)[j];
} }
@ -777,13 +765,11 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
* uniforms to image units present in the shader data structure. * uniforms to image units present in the shader data structure.
*/ */
if (uni->type->is_image()) { if (uni->type->is_image()) {
int i, j; for (int i = 0; i < MESA_SHADER_STAGES; i++) {
for (i = 0; i < MESA_SHADER_STAGES; i++) {
if (uni->image[i].active) { if (uni->image[i].active) {
struct gl_shader *sh = shProg->_LinkedShaders[i]; struct gl_shader *sh = shProg->_LinkedShaders[i];
for (j = 0; j < count; j++) for (int j = 0; j < count; j++)
sh->ImageUnits[uni->image[i].index + offset + j] = sh->ImageUnits[uni->image[i].index + offset + j] =
((GLint *) values)[j]; ((GLint *) values)[j];
} }