softpipe: fix depth sampling for linear vs nearest.
authorDave Airlie <airlied@redhat.com>
Sun, 18 Dec 2011 21:25:15 +0000 (21:25 +0000)
committerDave Airlie <airlied@redhat.com>
Mon, 19 Dec 2011 11:53:07 +0000 (11:53 +0000)
This sample compare was always doing linear, and this makes the
glsl-fs-shadow1DArray test render like the Intel driver.

fix wrong 0->j from initial patch

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/drivers/softpipe/sp_tex_sample.c

index 72629a0bcac49d96abd19d42fe5e46718ba93149..43f201f77847a139e2fa34824ab99de4f330d57e 100644 (file)
@@ -2172,13 +2172,22 @@ sample_compare(struct tgsi_sampler *tgsi_sampler,
       break;
    }
 
-   /* convert four pass/fail values to an intensity in [0,1] */
-   val = 0.25F * (k0 + k1 + k2 + k3);
-
-   /* XXX returning result for default GL_DEPTH_TEXTURE_MODE = GL_LUMINANCE */
-   for (j = 0; j < 4; j++) {
-      rgba[0][j] = rgba[1][j] = rgba[2][j] = val;
-      rgba[3][j] = 1.0F;
+   if (sampler->mag_img_filter == PIPE_TEX_FILTER_LINEAR) {
+      /* convert four pass/fail values to an intensity in [0,1] */
+      val = 0.25F * (k0 + k1 + k2 + k3);
+
+      /* XXX returning result for default GL_DEPTH_TEXTURE_MODE = GL_LUMINANCE */
+      for (j = 0; j < 4; j++) {
+        rgba[0][j] = rgba[1][j] = rgba[2][j] = val;
+        rgba[3][j] = 1.0F;
+      }
+   } else {
+      for (j = 0; j < 4; j++) {
+        rgba[0][j] = k0;
+        rgba[1][j] = k1;
+        rgba[2][j] = k2;
+        rgba[3][j] = 1.0F;
+      }
    }
 }