emit quad->outputs.depth[], hack need_z
authorBrian <brian.paul@tungstengraphics.com>
Mon, 25 Jun 2007 15:44:28 +0000 (09:44 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Mon, 25 Jun 2007 15:44:28 +0000 (09:44 -0600)
src/mesa/pipe/softpipe/sp_quad_fs.c

index 02fcc054679b23188bf7eccd2618a0df2eaf9d69..b4470ac94a570d30053aaca9069c0212a9d37c11 100644 (file)
@@ -125,6 +125,7 @@ shade_quad( struct quad_stage *qs, struct quad_header *quad )
    GLfloat fx = quad->x0;
    GLfloat fy = quad->y0;
    GLuint i, j;
+   GLboolean need_z = softpipe->depth_test.enabled; /* XXX hack */
 
    exec.coef = quad->coef;
 
@@ -143,12 +144,12 @@ shade_quad( struct quad_stage *qs, struct quad_header *quad )
    /* Z and W are done by linear interpolation:
     * XXX we'll probably have to use integers for Z
     */
-   if (softpipe->need_z) {
-      linterp(&exec, 0, 2);
+   if (/*softpipe->*/need_z) {
+      linterp(&exec, 0, 2);   /* attr[0].z */
    }
 
    if (softpipe->need_w) {
-      linterp(&exec, 0, 3);
+      linterp(&exec, 0, 3);  /* attr[0].w */
 //      invert(&exec, 0, 3);
    }
 
@@ -189,6 +190,13 @@ shade_quad( struct quad_stage *qs, struct quad_header *quad )
       memcpy(quad->outputs.color, 
             exec.attr[attr], 
             sizeof(quad->outputs.color));
+
+      if (need_z) {
+         quad->outputs.depth[0] = exec.attr[0][2][0];
+         quad->outputs.depth[1] = exec.attr[0][2][1];
+         quad->outputs.depth[2] = exec.attr[0][2][2];
+         quad->outputs.depth[3] = exec.attr[0][2][3];
+      }
    }
 #endif