gallium: fix glCopyPixels(GL_DEPTH) when Z format conversion is needed
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 29 Feb 2008 18:09:45 +0000 (11:09 -0700)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 29 Feb 2008 18:10:20 +0000 (11:10 -0700)
src/mesa/state_tracker/st_cb_drawpixels.c

index 6c0d75c..de99882 100644 (file)
@@ -1299,7 +1299,7 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
                         psRead,
                         srcx, srcy, width, height);
    }
-   else {
+   else if (type == GL_COLOR) {
       /* alternate path using get/put_tile() */
       GLfloat *buf = (GLfloat *) malloc(width * height * 4 * sizeof(GLfloat));
 
@@ -1308,6 +1308,13 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
 
       free(buf);
    }
+   else {
+      /* GL_DEPTH */
+      GLuint *buf = (GLuint *) malloc(width * height * sizeof(GLuint));
+      pipe_get_tile_z(pipe, psRead, srcx, srcy, width, height, buf);
+      pipe_put_tile_z(pipe, psTex, 0, 0, width, height, buf);
+      free(buf);
+   }
 
    /* draw textured quad */
    draw_textured_quad(ctx, dstx, dsty, ctx->Current.RasterPos[2],