diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/state_tracker/st_cb_readpixels.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c index 86baf3ddef..ccf1a0b563 100644 --- a/src/mesa/state_tracker/st_cb_readpixels.c +++ b/src/mesa/state_tracker/st_cb_readpixels.c @@ -445,11 +445,16 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,              }           }           else { -            /* untested, but simple: */ +            /* XXX: unreachable code -- should be before st_read_stencil_pixels */              assert(format == GL_DEPTH_STENCIL_EXT);              for (i = 0; i < height; i++) { +               GLuint *zshort = (GLuint *)dst;                 pipe_get_tile_raw(trans, 0, y, width, 1, dst, 0);                 y += yStep; +               /* Reverse into 24/8 */ +               for (j = 0; j < width; j++) { +                  zshort[j] = (zshort[j] << 8) | (zshort[j] >> 24); +               }                 dst += dstStride;              }           } @@ -472,7 +477,7 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,              }           }           else { -            /* untested, but simple: */ +            /* XXX: unreachable code -- should be before st_read_stencil_pixels */              assert(format == GL_DEPTH_STENCIL_EXT);              for (i = 0; i < height; i++) {                 pipe_get_tile_raw(trans, 0, y, width, 1, dst, 0); | 
