Hi @vix,
Note: Claude (an AI assistant) wrote this answer for me, from our own test notes. All the results come from our tests on a Verdin iMX8M Plus with Torizon OS 7 and torizon/chromium-imx8:4 (Chrome 117, the same version as yours), on a full-HD screen.
--in-process-gpu
In our tests, we needed it for a smooth frame rate. Without it, we got about 20 fps, and the GPU was almost idle. The flag does not move work to the GPU. It runs the GPU process inside the browser process, so each frame does not have to go between two processes.
But use it together with --disable-gpu-rasterization and --disable-gpu-memory-buffer-video-frames. With --in-process-gpu alone, our performance got worse, and SVG drawings had glitches. The GPU flags we run today:
--ozone-platform=wayland --use-gl=egl --no-sandbox --in-process-gpu --disable-gpu-rasterization --disable-gpu-memory-buffer-video-frames --disable-gpu-vsync
--disable-gpu-vsync made our animations smoother: frames are no longer held back to wait for the screen refresh. We also play video with this set, and it is more fluid than before.
The start-chromium.sh you linked uses --in-process-gpu without --disable-gpu-rasterization. That is the combination that was worse for us. Your chrome://gpu matches it: “Rasterization: Hardware accelerated on all pages”. The script passes any extra -- flag to Chromium, so you can add the flags above as container arguments.
On this GPU, GPU rasterization was our main problem. --ignore-gpu-blocklist with --enable-gpu-rasterization froze the GPU, and only a reboot fixed it. --enable-zero-copy gave visual glitches, and --gpu-no-context-lost hung the process in the GPU driver.
The “remove this flag” advice in the other thread came from the AI bot, for a video lock-up.
Partial updates
We saw the same thing. The Vivante EGL driver does not do partial swaps. So for each animation frame, Chromium composes the full screen again, even when only a small area changes. contain: paint and will-change did not change that. With --in-process-gpu, this work runs in the browser process, which can explain your CPU load.
What helped us:
--disable-gpu-vsync (above). Before it, we limited the frame rate of our animations with CSS steps(), to leave the GPU some free time.
- Animate only
transform and opacity. Do not animate SVG geometry (SMIL <animate> on d, cx or r, stroke-dashoffset, <filter>), or box properties like border, border-radius or padding: Chromium then rasterizes again on the CPU for each frame.
It would be good to have Toradex confirm the partial-swap part.
Best regards,
M