From c057278c065747c1f53579504bf109cafb7cb390 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Thu, 1 Sep 2016 19:36:23 -0700 Subject: [PATCH] i965/fs: Stop using fs_reg::in_range() in favor of regions_overlap(). Its only use left in the FS back-end should be using regions_overlap() instead to avoid getting a false negative result in cases where source and destination overlap but the former starts before the latter in the VGRF file. v2: Put back lost components factor (Iago). Reviewed-by: Iago Toral Quiroga --- src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp index 42ed131854e..a5679a138ec 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp @@ -4820,7 +4820,9 @@ shuffle_64bit_data_for_32bit_write(const fs_builder &bld, assert(type_sz(src.type) == 8); assert(type_sz(dst.type) == 4); - assert(!src.in_range(dst, 2 * components * bld.dispatch_width() / 8)); + assert(!regions_overlap( + dst, 2 * components * dst.component_size(bld.dispatch_width()), + src, components * src.component_size(bld.dispatch_width()))); for (unsigned i = 0; i < components; i++) { const fs_reg component_i = offset(src, bld, i); -- 2.11.0