summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--progs/glsl/Makefile4
-rw-r--r--progs/glsl/samplers.c16
-rw-r--r--src/mesa/shader/shader_api.c10
-rw-r--r--src/mesa/vbo/vbo_exec_draw.c1
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