diff --git a/src/mesa/drivers/dri/i965/intel_tex_subimage.c b/src/mesa/drivers/dri/i965/intel_tex_subimage.c index 5cfdbd9..4cfd31c 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/i965/intel_tex_subimage.c @@ -539,6 +539,7 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx, int error = 0; uint32_t cpp; + uint32_t src_pitch; mem_copy_fn mem_copy = NULL; /* This fastpath is restricted to specific texture types: level 0 of @@ -615,11 +616,12 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx, DBG("%s: level=%d offset=(%d,%d) (w,h)=(%d,%d)\n", __FUNCTION__, texImage->Level, xoffset, yoffset, width, height); + src_pitch = ALIGN_UP(width * cpp, packing->Alignment); linear_to_tiled( xoffset * cpp, (xoffset + width) * cpp, yoffset, yoffset + height, - bo->virtual, pixels - (xoffset + yoffset * width) * cpp, - image->mt->region->pitch, width * cpp, + bo->virtual, pixels - (xoffset * cpp + yoffset * src_pitch), + image->mt->region->pitch, src_pitch, brw->has_swizzling, image->mt->region->tiling, mem_copy