Prepare to release.

This commit is contained in:
Kirill Kuzminykh
2025-07-12 02:13:21 +03:00
parent 39be94c522
commit 3ded33eefe
9 changed files with 24 additions and 17 deletions
+7
View File
@@ -1,3 +1,10 @@
## [Unreleased] - ReleaseDate
### Added
- Added support of `DynamicImage::ImageRgb32F` and `DynamicImage::ImageRgba32F`
form the `image` crate ([#50](https://github.com/Cykooz/fast_image_resize/pull/50)).
## [5.1.4] - 2025-05-16
### Fixed
+5 -6
View File
@@ -1,5 +1,4 @@
use std::arch::x86_64::*;
use std::intrinsics::transmute;
use crate::convolution::optimisations::Normalizer16;
use crate::pixels::U8x3;
@@ -194,19 +193,19 @@ unsafe fn horiz_convolution_four_rows<const PRECISION: i32>(
sss0 = _mm256_packus_epi16(sss0, zero);
sss1 = _mm256_packus_epi16(sss1, zero);
let pixel: u32 = transmute(_mm_cvtsi128_si32(_mm256_extracti128_si256::<0>(sss0)));
let pixel: u32 = i32::cast_unsigned(_mm_cvtsi128_si32(_mm256_extracti128_si256::<0>(sss0)));
let bytes = pixel.to_le_bytes();
dst_rows[0].get_unchecked_mut(dst_x).0 = [bytes[0], bytes[1], bytes[2]];
let pixel: u32 = transmute(_mm_cvtsi128_si32(_mm256_extracti128_si256::<1>(sss0)));
let pixel: u32 = i32::cast_unsigned(_mm_cvtsi128_si32(_mm256_extracti128_si256::<1>(sss0)));
let bytes = pixel.to_le_bytes();
dst_rows[1].get_unchecked_mut(dst_x).0 = [bytes[0], bytes[1], bytes[2]];
let pixel: u32 = transmute(_mm_cvtsi128_si32(_mm256_extracti128_si256::<0>(sss1)));
let pixel: u32 = i32::cast_unsigned(_mm_cvtsi128_si32(_mm256_extracti128_si256::<0>(sss1)));
let bytes = pixel.to_le_bytes();
dst_rows[2].get_unchecked_mut(dst_x).0 = [bytes[0], bytes[1], bytes[2]];
let pixel: u32 = transmute(_mm_cvtsi128_si32(_mm256_extracti128_si256::<1>(sss1)));
let pixel: u32 = i32::cast_unsigned(_mm_cvtsi128_si32(_mm256_extracti128_si256::<1>(sss1)));
let bytes = pixel.to_le_bytes();
dst_rows[3].get_unchecked_mut(dst_x).0 = [bytes[0], bytes[1], bytes[2]];
}
@@ -366,7 +365,7 @@ unsafe fn horiz_convolution_one_row<const PRECISION: i32>(
sss = _mm_srai_epi32::<PRECISION>(sss);
sss = _mm_packs_epi32(sss, sss);
let pixel: u32 = transmute(_mm_cvtsi128_si32(_mm_packus_epi16(sss, sss)));
let pixel: u32 = i32::cast_unsigned(_mm_cvtsi128_si32(_mm_packus_epi16(sss, sss)));
let bytes = pixel.to_le_bytes();
dst_row.get_unchecked_mut(dst_x).0 = [bytes[0], bytes[1], bytes[2]];
}
+2 -3
View File
@@ -1,5 +1,4 @@
use std::arch::x86_64::*;
use std::intrinsics::transmute;
use crate::convolution::optimisations::Normalizer16;
use crate::pixels::U8x3;
@@ -168,7 +167,7 @@ unsafe fn horiz_convolution_four_rows<const PRECISION: i32>(
for i in 0..4 {
let sss = _mm_packs_epi32(sss_a[i], zero);
let pixel: u32 = transmute(_mm_cvtsi128_si32(_mm_packus_epi16(sss, zero)));
let pixel: u32 = i32::cast_unsigned(_mm_cvtsi128_si32(_mm_packus_epi16(sss, zero)));
let bytes = pixel.to_le_bytes();
let dst_pixel = dst_rows[i].get_unchecked_mut(dst_x);
dst_pixel.0 = [bytes[0], bytes[1], bytes[2]];
@@ -283,7 +282,7 @@ unsafe fn horiz_convolution_one_row<const PRECISION: i32>(
sss = _mm_srai_epi32::<PRECISION>(sss);
sss = _mm_packs_epi32(sss, sss);
let pixel: u32 = transmute(_mm_cvtsi128_si32(_mm_packus_epi16(sss, sss)));
let pixel: u32 = i32::cast_unsigned(_mm_cvtsi128_si32(_mm_packus_epi16(sss, sss)));
let bytes = pixel.to_le_bytes();
let dst_pixel = dst_row.get_unchecked_mut(dst_x);
dst_pixel.0 = [bytes[0], bytes[1], bytes[2]];
+1 -1
View File
@@ -1,5 +1,5 @@
use std::arch::wasm32::*;
use std::intrinsics::transmute;
use std::mem::transmute;
use crate::convolution::optimisations::Normalizer16;
use crate::pixels::U8x3;
+1 -1
View File
@@ -1,5 +1,5 @@
use std::arch::x86_64::*;
use std::intrinsics::transmute;
use std::mem::transmute;
use crate::convolution::optimisations::Normalizer16;
use crate::pixels::U8x4;
+1 -1
View File
@@ -1,5 +1,5 @@
use std::arch::x86_64::*;
use std::intrinsics::transmute;
use std::mem::transmute;
use crate::convolution::optimisations::Normalizer16;
use crate::pixels::U8x4;
+1 -1
View File
@@ -1,5 +1,5 @@
use std::arch::wasm32::*;
use std::intrinsics::transmute;
use std::mem::transmute;
use crate::convolution::optimisations::Normalizer16;
use crate::pixels::U8x4;
+1 -2
View File
@@ -1,5 +1,4 @@
use std::arch::x86_64::*;
use std::intrinsics::transmute;
use crate::pixels::{U8x3, U8x4};
@@ -52,7 +51,7 @@ pub unsafe fn loadu_pd256<T>(buf: &[T], index: usize) -> __m256d {
#[inline(always)]
pub unsafe fn mm_cvtepu8_epi32(buf: &[U8x4], index: usize) -> __m128i {
let v: i32 = transmute(buf.get_unchecked(index).0);
let v: i32 = i32::from_ne_bytes(buf.get_unchecked(index).0);
_mm_cvtepu8_epi32(_mm_cvtsi32_si128(v))
}
+5 -2
View File
@@ -384,11 +384,14 @@ impl PixelTestingExt for U8x4 {
}
pub fn save_result(image: &Image, name: &str) {
if std::env::var("SAVE_RESULT").unwrap_or_else(|_| "".to_owned()) == "" {
if std::env::var("SAVE_RESULT")
.unwrap_or_else(|_| "".to_owned())
.is_empty()
{
return;
}
std::fs::create_dir_all("./data/result").unwrap();
let path = format!("./data/result/{}.png", name);
let path = format!("./data/result/{name}.png");
let color_type: ExtendedColorType = match image.pixel_type() {
PixelType::U8 => ColorType::L8.into(),