From a4cc7453742b97df761fb091469792d58e914530 Mon Sep 17 00:00:00 2001 From: Justin Wiese Date: Wed, 21 Oct 2026 10:05:52 +0200 Subject: [PATCH] =?UTF-8?q?fix(=F0=9F=93=B8):=20clear=20Android=20view=20s?= =?UTF-8?q?napshots=20to=20transparent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HardwareRenderer is opaque by default and doesn't clear its buffer, so the transparent pixels of a snapshot kept whatever was in it (garbage blocks on Mali GPUs). setOpaque(false) makes it clear to transparent first. --- .../webgpu/android/src/main/java/com/webgpu/ViewSnapshot.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/webgpu/android/src/main/java/com/webgpu/ViewSnapshot.java b/packages/webgpu/android/src/main/java/com/webgpu/ViewSnapshot.java index 7b045edb4..c33d1f3bb 100644 --- a/packages/webgpu/android/src/main/java/com/webgpu/ViewSnapshot.java +++ b/packages/webgpu/android/src/main/java/com/webgpu/ViewSnapshot.java @@ -116,6 +116,9 @@ static T renderHardware( HardwareRenderer renderer = new HardwareRenderer(); Image image = null; try { + // HardwareRenderer is opaque by default and doesn't clear the buffer, so + // transparent pixels keep whatever was in it (garbage on Mali GPUs). + renderer.setOpaque(false); renderer.setSurface(reader.getSurface()); // Match the framework's default light so elevation shadows come out // like on screen (ThreadedRenderer reads these from the theme; the