diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2008-02-29 11:09:45 -0700 |
---|---|---|
committer | Brian Paul <brian.paul@tungstengraphics.com> | 2008-02-29 11:10:20 -0700 |
commit | 0b47eb4808aa47e2ab276ab60493e28774cef21a (patch) | |
tree | cfce6680802ae682afa812aa67d5546a47dbda3e | |
parent | a41b77f4fedc7d956d8cb44547d812b5449f8641 (diff) |
gallium: fix glCopyPixels(GL_DEPTH) when Z format conversion is needed
-rw-r--r-- | src/mesa/state_tracker/st_cb_drawpixels.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 6c0d75cc55..de99882ab7 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -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], |