summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2014-09-01 04:38:28 -0700
committerJason Ekstrand <[email protected]>2014-09-03 12:27:19 -0700
commitfcb6d5b9ef0d3559fa213c673ed996f194f56c2a (patch)
treef8049e4963a15d49f9251826c7e5960d4f643871 /src/mesa
parent58b386dce435d2d82c2dc80b1a8d1373bb3e0ac6 (diff)
i965/copy_image: Use the correct texture level
Previously, we were using the source images level for both source and destination. Also, we weren't taking the MinLevel from a potential texture view into account. This commit fixes both problems. Signed-off-by: Jason Ekstrand <[email protected]> Cc: "10.3" <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82804 Tested-by: Tapani Pälli <[email protected]> Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/intel_copy_image.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c
index 4e177c7505f..935f91cfbd9 100644
--- a/src/mesa/drivers/dri/i965/intel_copy_image.c
+++ b/src/mesa/drivers/dri/i965/intel_copy_image.c
@@ -243,9 +243,11 @@ intel_copy_image_sub_data(struct gl_context *ctx,
intel_miptree_all_slices_resolve_depth(brw, intel_dst_image->mt);
intel_miptree_resolve_color(brw, intel_dst_image->mt);
- if (copy_image_with_blitter(brw, intel_src_image->mt, src_image->Level,
+ unsigned src_level = src_image->Level + src_image->TexObject->MinLevel;
+ unsigned dst_level = dst_image->Level + dst_image->TexObject->MinLevel;
+ if (copy_image_with_blitter(brw, intel_src_image->mt, src_level,
src_x, src_y, src_z,
- intel_dst_image->mt, src_image->Level,
+ intel_dst_image->mt, dst_level,
dst_x, dst_y, dst_z,
src_width, src_height))
return;
@@ -253,9 +255,9 @@ intel_copy_image_sub_data(struct gl_context *ctx,
/* This is a worst-case scenario software fallback that maps the two
* textures and does a memcpy between them.
*/
- copy_image_with_memcpy(brw, intel_src_image->mt, src_image->Level,
+ copy_image_with_memcpy(brw, intel_src_image->mt, src_level,
src_x, src_y, src_z,
- intel_dst_image->mt, src_image->Level,
+ intel_dst_image->mt, dst_level,
dst_x, dst_y, dst_z,
src_width, src_height);
}