GPU rendering

ZShot renders on the GPU by default and falls back to CPU rendering with --software-rendering.

Hardware rendering is negotiated by Chromium/CEF and the available X server. This matters over SSH: with no DISPLAY, ZShot starts its own Xvfb server, whose OpenGL is the software llvmpipe driver. GPU acceleration, including WebGL, still runs on the real hardware as long as the render node is reachable by the user running zshot.

The user running zshot needs read and write access to the device nodes for the GPU (/dev/nvidia* for instance). A graphical desktop session grants this automatically through logind. A user over SSH or a service account typically does not, so make sure that user has the appropriate permissions to access the file.

When no usable GPU is present, render on the CPU with SwiftShader instead using --software-rendering:

zshot --software-rendering ...