Bug #13839: Fix 3D texture offset miscalculation with pixels versus bytes.

This commit is contained in:
Roland Scheidegger 2007-12-28 18:03:39 -08:00 committed by Eric Anholt
parent aecec3aced
commit 3956597962
2 changed files with 4 additions and 3 deletions

View file

@ -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);
}

View file

@ -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;
};