GLint img, row;
assert(format == GL_DEPTH_STENCIL);
- assert(type == GL_UNSIGNED_INT_24_8);
- /* XXX type == GL_FLOAT_32_UNSIGNED_INT_24_8_REV is not handled yet */
+ assert(type == GL_UNSIGNED_INT_24_8 ||
+ type == GL_FLOAT_32_UNSIGNED_INT_24_8_REV);
for (img = 0; img < depth; img++) {
GLubyte *srcMap;
void *dest = _mesa_image_address(dimensions, &ctx->Pack, pixels,
width, height, format, type,
img, row, 0);
- /* Unpack from texture's format to GL's z24_s8 layout */
- _mesa_unpack_uint_24_8_depth_stencil_row(texImage->TexFormat,
- width,
- (const GLuint *) src,
- dest);
+ _mesa_unpack_depth_stencil_row(texImage->TexFormat,
+ width,
+ (const GLuint *) src,
+ type, dest);
if (ctx->Pack.SwapBytes) {
_mesa_swap4((GLuint *) dest, width);
}