Mesa (master): i965: Fix intel_miptree_copy_teximage for GL_TEXTURE_1D_ARRAY

Iago Toral Quiroga itoral at kemper.freedesktop.org
Mon Feb 2 08:31:06 UTC 2015


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

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Fri Jan 30 09:03:57 2015 +0100

i965: Fix intel_miptree_copy_teximage for GL_TEXTURE_1D_ARRAY

For GL_TEXTURE_1D_ARRAY targets we store the depth of the array
in the Height field and leave Depth=1 in the underlying texture
object. When we call intel_miptree_copy_teximage in the process
of re-creating a miptree (possibily because the number of miplevels
has changed) we didn't account for this, so we where only copying
texture images for the first slice.

Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>

---

 src/mesa/drivers/dri/i965/intel_mipmap_tree.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 26e137d..11f1876 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -1249,7 +1249,12 @@ intel_miptree_copy_teximage(struct brw_context *brw,
       intel_texture_object(intelImage->base.Base.TexObject);
    int level = intelImage->base.Base.Level;
    int face = intelImage->base.Base.Face;
-   GLuint depth = intelImage->base.Base.Depth;
+
+   GLuint depth;
+   if (intel_obj->base.Target == GL_TEXTURE_1D_ARRAY)
+      depth = intelImage->base.Base.Height;
+   else
+      depth = intelImage->base.Base.Depth;
 
    if (!invalidate) {
       for (int slice = 0; slice < depth; slice++) {




More information about the mesa-commit mailing list