From 8df3c02cdc0a81db43f63e5a93fbae1b3435d23d Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 1 Oct 2014 09:22:13 +1000 Subject: [PATCH] mesa: fix GetTexImage for 1D array depth textures While running piglit in virgl, I hit an assert in intel driver. "qemu-system-x86_64: intel_tex.c:219: intel_map_texture_image: Assertion `tex_image->TexObject->Target != 0x8C18 || h == 1' failed." Thanks to Eric and Ken for pointing me in the right direction, Fix the get_tex_depth to do the same fixup as get_tex_rgba does for 1D array textures. Reviewed-by: Brian Paul Reviewed-by: Eric Anholt Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Dave Airlie --- src/mesa/main/texgetimage.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 2c54e4a35f1..cb5f7936c88 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -78,8 +78,8 @@ get_tex_depth(struct gl_context *ctx, GLuint dimensions, struct gl_texture_image *texImage) { const GLint width = texImage->Width; - const GLint height = texImage->Height; - const GLint depth = texImage->Depth; + GLint height = texImage->Height; + GLint depth = texImage->Depth; GLint img, row; GLfloat *depthRow = malloc(width * sizeof(GLfloat)); @@ -88,6 +88,11 @@ get_tex_depth(struct gl_context *ctx, GLuint dimensions, return; } + if (texImage->TexObject->Target == GL_TEXTURE_1D_ARRAY) { + depth = height; + height = 1; + } + for (img = 0; img < depth; img++) { GLubyte *srcMap; GLint srcRowStride; -- 2.30.2