Skip to content

Commit a5698d7

Browse files
committed
docs: update CHANGELOG, REFERENCE, and ROADMAP for 0.1.2
1 parent 8f4ea1d commit a5698d7

4 files changed

Lines changed: 32 additions & 2 deletions

File tree

docs/CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# FastImage Changelog
22

3+
## [0.1.2] - 2026-09-04
4+
- **Zero-Copy Native Buffer Wrapping**:
5+
- Implemented `nativeWrap()` C++ JNI bridge allowing zero-copy instantiation of `FastImage`.
6+
- Added Java factory methods: `FastImage.wrap(long nativeAddress, int w, int h)`, `FastImage.wrap(Pointer, int w, int h)`, and `FastImage.wrap(ByteBuffer directBuffer, int w, int h)`.
7+
- Safe memory ownership model: wrapped instances do not deallocate foreign native pointers on close.
8+
- **AVX2 Area-Average Anti-Aliasing Downsampler**:
9+
- Implemented native `nativeResizeAreaAverage()` box/area-average downscaling kernel in C++ with SIMD integer accumulation.
10+
- Added `FastImage.resizeAreaAverage(int targetWidth, int targetHeight)` to eliminate moiré and jagged aliasing artifacts during high-ratio downsampling.
11+
- **Ecosystem Integration**:
12+
- Formed zero-copy bridge target for `FastScreen 0.1.2`, `FastCamera 0.1.1`, and `FastRobot 0.1.1`.
13+
314
## [0.1.1] - 2026-08-14
415
- Integrated native `FastSIMD` (v0.1.3) AVX2 256-bit vector image processing engine.
516
- Added official JMH benchmark suite measuring 19.5 full 1080p frames/sec resize throughput.

docs/REFERENCE.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ Converts a Java `BufferedImage` into an off-heap `FastImage` instance.
2222

2323
---
2424

25+
### `wrap`
26+
```java
27+
public static FastImage wrap(long nativeAddress, int width, int height)
28+
public static FastImage wrap(Pointer pointer, int width, int height)
29+
public static FastImage wrap(ByteBuffer directBuffer, int width, int height)
30+
```
31+
Zero-copy wraps an existing off-heap native memory address, FastPointer, or Direct `ByteBuffer` without copying bytes. The wrapped instance does not deallocate foreign memory when closed.
32+
33+
---
34+
2535
## 2. Image Operations & Filters
2636

2737
### `resize`
@@ -32,6 +42,14 @@ Resizes the image to target dimensions using native C++ AVX2 SIMD bilinear inter
3242

3343
---
3444

45+
### `resizeAreaAverage`
46+
```java
47+
public FastImage resizeAreaAverage(int targetWidth, int targetHeight)
48+
```
49+
High-quality Anti-Aliasing downsampler using SIMD box area averaging. Eliminates jagged edges and moiré patterns when scaling down desktop or camera feeds.
50+
51+
---
52+
3553
### `blurKawase`
3654
```java
3755
public FastImage blurKawase(float radius, int passes)

docs/ROADMAP.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22

33
- [x] **v0.1.0** — Initial release with off-heap C++ image processing and Kawase blur.
44
- [x] **v0.1.1** — Integrated `FastSIMD` AVX2 256-bit vector acceleration engine.
5+
- [x] **v0.1.2** — Zero-Copy Pointer/ByteBuffer wrapping & AVX2 Area-Average Anti-Aliasing.
56
- [ ] **v0.2.0** — FastGPU Vulkan compute shader acceleration for 4K real-time blur.
67
- [ ] **v0.3.0** — Native PNG/JPEG WebP encoder/decoder integration.

run-benchmark.bat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
setlocal
33
chcp 65001 > nul
44
cd /d "%~dp0"
5-
set "MAVEN_OPTS=--enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow -Dorg.slf4j.simpleLogger.defaultLogLevel=warn"
5+
set "MAVEN_OPTS=--enable-native-access=ALL-UNNAMED -Dorg.slf4j.simpleLogger.defaultLogLevel=warn"
66

77
echo ===================================================
88
echo Building FastImage ^& JMH Benchmarks Uber-Jar
@@ -26,5 +26,5 @@ if %ERRORLEVEL% NEQ 0 (
2626
echo ===================================================
2727
echo Running JMH Benchmarks (Throughput: ops/ms)
2828
echo ===================================================
29-
java --enable-native-access=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow "-Djava.library.path=..\..\build;build;src\main\resources\native" -jar target\benchmarks.jar -f 1 -wi 2 -i 3 -tu ms -bm thrpt
29+
java --enable-native-access=ALL-UNNAMED "-Djava.library.path=..\..\build;build;src\main\resources\native" -jar target\benchmarks.jar -f 1 -wi 2 -i 3 -tu ms -bm thrpt
3030
pause

0 commit comments

Comments
 (0)