st: init the default texture to (0,0,0,1)
authorBrian Paul <brianp@vmware.com>
Thu, 26 Mar 2009 14:52:56 +0000 (08:52 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 26 Mar 2009 14:52:56 +0000 (08:52 -0600)
The default texture is used when a sampler uses an incomplete texture.
This change fixes the piglit fp-incomplete test.

src/mesa/state_tracker/st_cb_texture.c

index 311d812ccfb8f16d8e5736187118a2d01871083f..d353241a7ebb324a626ffb2848d6474cf694c5dd 100644 (file)
@@ -1471,9 +1471,19 @@ st_get_default_texture(struct st_context *st)
       GLubyte pixels[16][16][4];
       struct gl_texture_object *texObj;
       struct gl_texture_image *texImg;
+      GLuint i, j;
 
-      /* init image to gray */
-      memset(pixels, 127, sizeof(pixels));
+      /* The ARB_fragment_program spec says (0,0,0,1) should be returned
+       * when attempting to sample incomplete textures.
+       */
+      for (i = 0; i < 16; i++) {
+         for (j = 0; j < 16; j++) {
+            pixels[i][j][0] = 0;
+            pixels[i][j][1] = 0;
+            pixels[i][j][2] = 0;
+            pixels[i][j][3] = 255;
+         }
+      }
 
       texObj = st->ctx->Driver.NewTextureObject(st->ctx, 0, target);