完美像素产物会缩放到与原图相近的尺寸;提高识别小网格的倾向 #172
Reference in New Issue
Block a user
Delete Branch "feat/pixel_art"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
[P2] 整数倍放大阶段的 deadline 检查粒度不足
pixel_art_snapper.rs (line 446) 只按逻辑图像素检查 deadline,实际写入放大后的物理像素位于后面的双重循环中。
例如逻辑图为 3×3、放大倍数接近 960 时,会写入约 830 万个像素,但只检查 9 次。若 deadline 在放大过程中到期,任务会先完成整段复制,最后才在 346 行发现超时;外层 spawn_blocking + timeout_at 可能已经放弃等待,而 CPU permit 仍被后台任务占用。建议按输出像素或按固定行/块粒度检查 deadline。
注意这是假缺陷。
对比后,该问题不是
c2cfe4ff0首次引入的回归,而是aa5c857060已存在的 deadline 语义风险。aa5c857060当时的实现是:也就是说,整个
imageops::resize本身不可中断,只在前后检查 deadline。该版本甚至没有放大过程中的任何检查。当前分支改成了自有整数倍循环:
pixel_art_snapper.rs:446
它至少会按逻辑像素检查,但当逻辑图很小、整数倍很大时,内层
scale × scale写入仍可能长时间没有检查。因此:aa5c857060的新回归,不成立;应该分为两种情况处理
完美像素产物会缩放到与原图相近的尺寸to 完美像素产物会缩放到与原图相近的尺寸;提高识别小网格的倾向