mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
swrast: handle additional Z24 formats in read_depth_pixels()
This commit is contained in:
parent
7dfea5c072
commit
0a39620d6d
1 changed files with 18 additions and 5 deletions
|
|
@ -120,8 +120,12 @@ read_depth_pixels( GLcontext *ctx,
|
|||
&& !biasOrScale && !packing->SwapBytes) {
|
||||
/* Special case: directly read 24-bit unsigned depth values. */
|
||||
GLint j;
|
||||
ASSERT(rb->Format == MESA_FORMAT_X8_Z24);
|
||||
ASSERT(rb->DataType == GL_UNSIGNED_INT);
|
||||
ASSERT(rb->Format == MESA_FORMAT_X8_Z24 ||
|
||||
rb->Format == MESA_FORMAT_S8_Z24 ||
|
||||
rb->Format == MESA_FORMAT_Z24_X8 ||
|
||||
rb->Format == MESA_FORMAT_Z24_S8);
|
||||
ASSERT(rb->DataType == GL_UNSIGNED_INT ||
|
||||
rb->DataType == GL_UNSIGNED_INT_24_8);
|
||||
for (j = 0; j < height; j++, y++) {
|
||||
GLuint *dest = (GLuint *)
|
||||
_mesa_image_address2d(packing, pixels, width, height,
|
||||
|
|
@ -129,9 +133,18 @@ read_depth_pixels( GLcontext *ctx,
|
|||
GLint k;
|
||||
rb->GetRow(ctx, rb, width, x, y, dest);
|
||||
/* convert range from 24-bit to 32-bit */
|
||||
for (k = 0; k < width; k++) {
|
||||
/* Note: put MSByte of 24-bit value into LSByte */
|
||||
dest[k] = (dest[k] << 8) | ((dest[k] >> 16) & 0xff);
|
||||
if (rb->Format == MESA_FORMAT_X8_Z24 ||
|
||||
rb->Format == MESA_FORMAT_S8_Z24) {
|
||||
for (k = 0; k < width; k++) {
|
||||
/* Note: put MSByte of 24-bit value into LSByte */
|
||||
dest[k] = (dest[k] << 8) | ((dest[k] >> 16) & 0xff);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (k = 0; k < width; k++) {
|
||||
/* Note: fill in LSByte by replication */
|
||||
dest[k] = dest[k] | ((dest[k] >> 8) & 0xff);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue