Mesa (master): mesa: fix GetTexImage for 1D array depth textures

Dave Airlie airlied at kemper.freedesktop.org
Fri Oct 3 00:38:17 UTC 2014


Module: Mesa
Branch: master
Commit: 8df3c02cdc0a81db43f63e5a93fbae1b3435d23d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8df3c02cdc0a81db43f63e5a93fbae1b3435d23d

Author: Dave Airlie <airlied at redhat.com>
Date:   Wed Oct  1 09:22:13 2014 +1000

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 <brianp at vmware.com>
Reviewed-by: Eric Anholt <eric at anholt.net>
Cc: mesa-stable at lists.freedesktop.org
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 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 2c54e4a..cb5f793 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;




More information about the mesa-commit mailing list