[Mesa-dev] [PATCH] i965: Fix intel_miptree_copy_teximage for GL_TEXTURE_1D_ARRAY
Iago Toral Quiroga
itoral at igalia.com
Fri Jan 30 00:03:57 PST 2015
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.
---
src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
Fixes the problems for GL_TEXTURE_1D_ARRAYS described here:
http://lists.freedesktop.org/archives/mesa-dev/2015-January/075264.html
The GPU hang mentioned there was a different problem and seems to
be fixed since:
b52959c60 i965/tiled_memcpy: Add tiled-to-linear paths
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++) {
--
2.1.0
More information about the mesa-dev
mailing list