T10.6: drop RGBA payload from the wire when the hardware path publishes a surface

This commit is contained in:
2026-05-10 23:52:12 -04:00
parent a447d52262
commit 6e2bd20a9b
6 changed files with 111 additions and 30 deletions
+11 -3
View File
@@ -1085,16 +1085,24 @@ fn identical_live_frames_share_render_image_arc() {
)
.expect("second frame builds from identical bytes");
let first_image = first
.image
.as_ref()
.expect("software path always produces an Arc<RenderImage>");
let second_image = second
.image
.as_ref()
.expect("software path always produces an Arc<RenderImage>");
assert!(
Arc::ptr_eq(&first.image, &second.image),
Arc::ptr_eq(first_image, second_image),
"TDD red: two ServoLiveFrames with byte-identical RGBA produced \
distinct Arc<RenderImage> instances (first={:p}, second={:p}). \
WebSurfaceFrame::from_parts must dedup the upload against the \
previous frame's bytes, or the rendering pipeline must switch \
to a GPU-side source of truth (IOSurface) so per-frame host \
allocations stop entirely.",
Arc::as_ptr(&first.image),
Arc::as_ptr(&second.image),
Arc::as_ptr(first_image),
Arc::as_ptr(second_image),
);
}