From 3956597962dcf6c8082541199ebac58e0d84f6bc Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Fri, 28 Dec 2007 18:03:39 -0800 Subject: [PATCH] Bug #13839: Fix 3D texture offset miscalculation with pixels versus bytes. --- src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 6 +++--- src/mesa/drivers/dri/intel/intel_mipmap_tree.h | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c index 76375850331..97a82fe9d0f 100644 --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c @@ -358,7 +358,7 @@ intel_miptree_image_data(struct intel_context *intel, height /= 4; intel_region_data(intel, dst->region, - dst_offset + dst_depth_offset[i], /* dst_offset */ + dst_offset + dst_depth_offset[i] * dst->cpp, /* dst_offset */ 0, 0, /* dstx, dsty */ src, src_row_pitch, @@ -395,10 +395,10 @@ intel_miptree_image_copy(struct intel_context *intel, for (i = 0; i < depth; i++) { intel_region_copy(intel, - dst->region, dst_offset + dst_depth_offset[i], + dst->region, dst_offset + dst_depth_offset[i] * dst->cpp, 0, 0, - src->region, src_offset + src_depth_offset[i], + src->region, src_offset + src_depth_offset[i] * src->cpp, 0, 0, width, height); } diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.h b/src/mesa/drivers/dri/intel/intel_mipmap_tree.h index 968eec4fec3..e3b31f9c6e5 100644 --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.h +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.h @@ -73,6 +73,7 @@ struct intel_mipmap_level * are going to be so diverse that there is no unified way to * compute the offsets of depth/cube images within a mipmap level, * so have to store them as a lookup table: + * NOTE level_offset is a byte offset, but the image_offsets are _pixel_ offsets!!! */ GLuint *image_offset; }; -- 2.30.2