rusticl/memory: optimize sw_copy when the row_pitch matches the height

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30082>
This commit is contained in:
Karol Herbst
2024-07-09 15:12:42 +02:00
committed by Marge Bot
parent e4456b2399
commit a382fb08a4
+22 -7
View File
@@ -347,21 +347,36 @@ fn sw_copy(
dst_slice_pitch: usize,
pixel_size: u8,
) {
let pixel_size = pixel_size as usize;
for z in 0..region[2] {
for y in 0..region[1] {
if src_row_pitch == dst_row_pitch && region[1] * pixel_size == src_row_pitch {
unsafe {
ptr::copy(
src.add(
(*src_origin + [0, y, z])
* [pixel_size as usize, src_row_pitch, src_slice_pitch],
(*src_origin + [0, 0, z]) * [pixel_size, src_row_pitch, src_slice_pitch],
),
dst.add(
(*dst_origin + [0, y, z])
* [pixel_size as usize, dst_row_pitch, dst_slice_pitch],
(*dst_origin + [0, 0, z]) * [pixel_size, dst_row_pitch, dst_slice_pitch],
),
region[0] * pixel_size as usize,
region[0] * region[1] * pixel_size,
)
};
}
} else {
for y in 0..region[1] {
unsafe {
ptr::copy(
src.add(
(*src_origin + [0, y, z])
* [pixel_size, src_row_pitch, src_slice_pitch],
),
dst.add(
(*dst_origin + [0, y, z])
* [pixel_size, dst_row_pitch, dst_slice_pitch],
),
region[0] * pixel_size,
)
};
}
}
}
}