diff options
-rw-r--r-- | progs/glsl/Makefile | 4 | ||||
-rw-r--r-- | progs/glsl/samplers.c | 16 | ||||
-rw-r--r-- | src/mesa/shader/shader_api.c | 10 | ||||
-rw-r--r-- | src/mesa/vbo/vbo_exec_draw.c | 1 |
4 files changed, 24 insertions, 7 deletions
diff --git a/progs/glsl/Makefile b/progs/glsl/Makefile index 0875bdd795..8103a5cbca 100644 --- a/progs/glsl/Makefile +++ b/progs/glsl/Makefile @@ -37,6 +37,7 @@ DEMO_SOURCES = \ pointcoord.c \ points.c \ samplers.c \ + samplers_array.c \ shadow_sampler.c \ shtest.c \ skinning.c \ @@ -79,6 +80,9 @@ clean: ##### Extra dependencies +samplers_array.o: samplers.c + $(APP_CC) $(CFLAGS) -DSAMPLERS_ARRAY $< -c -o $@ + extfuncs.h: $(TOP)/progs/util/extfuncs.h cp $< . diff --git a/progs/glsl/samplers.c b/progs/glsl/samplers.c index 113e5bbeff..87dad5d857 100644 --- a/progs/glsl/samplers.c +++ b/progs/glsl/samplers.c @@ -211,10 +211,18 @@ InitTextures(void) for (y = 0; y < stripeSize; y++) { for (x = 0; x < size; x++) { GLint k = 4 * ((ypos + y) * size + x); - texImage[k + 0] = intensity; - texImage[k + 1] = intensity; - texImage[k + 2] = 0; - texImage[k + 3] = 255; + if (x < size / 2) { + texImage[k + 0] = intensity; + texImage[k + 1] = intensity; + texImage[k + 2] = 0; + texImage[k + 3] = 255; + } + else { + texImage[k + 0] = 255 - intensity; + texImage[k + 1] = 0; + texImage[k + 2] = 0; + texImage[k + 3] = 255; + } } } diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index 42b7fa78b6..b52be128c3 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -1632,7 +1632,6 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program, if (param->Type == PROGRAM_SAMPLER) { /* This controls which texture unit which is used by a sampler */ - GLuint texUnit, sampler; GLint i; /* data type for setting samplers must be int */ @@ -1647,8 +1646,9 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program, * common thing... */ for (i = 0; i < count; i++) { - sampler = (GLuint) program->Parameters->ParameterValues[index + i][0]; - texUnit = ((GLuint *) values)[i]; + GLuint sampler = + (GLuint) program->Parameters->ParameterValues[index + offset + i][0]; + GLuint texUnit = ((GLuint *) values)[i]; /* check that the sampler (tex unit index) is legal */ if (texUnit >= ctx->Const.MaxTextureImageUnits) { @@ -1659,6 +1659,10 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program, /* This maps a sampler to a texture unit: */ if (sampler < MAX_SAMPLERS) { +#if 0 + _mesa_printf("Set program %p sampler %d '%s' to unit %u\n", + program, sampler, param->Name, texUnit); +#endif program->SamplerUnits[sampler] = texUnit; } } diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c index 625452ac09..53fa90b8af 100644 --- a/src/mesa/vbo/vbo_exec_draw.c +++ b/src/mesa/vbo/vbo_exec_draw.c @@ -398,6 +398,7 @@ vbo_exec_vtx_flush( struct vbo_exec_context *exec, GLboolean unmap ) vbo_exec_vtx_unmap( exec ); } + if (unmap || exec->vtx.vertex_size == 0) exec->vtx.max_vert = 0; else |