Optimize eterm Kitty graphics rendering

- bulk-ingest Kitty APC payloads without per-byte UTF-8 processing
  - preserve APC buffer capacity between graphics commands
  - update existing GPU textures when replacing video frames
  - validate Base64 while decoding directly into transfer storage
  - reserve known image sizes and share immutable pixel buffers
  - coalesce superseded anonymous video-frame updates
  - support POSIX shared-memory transmission with stable snapshots
  - fix large unchunked images and anonymous placement replacement
  - add fragmentation, malformed input, video, and shared-memory tests
  - update Kitty graphics protocol documentation
This commit is contained in:
Martín Lucas Golini
2026-09-03 19:39:47 -03:00
parent 57754feb31
commit 0fa1f65d04
8 changed files with 319 additions and 51 deletions

View File

@@ -8,6 +8,7 @@ stream, and exclusively owns the OpenGL texture cache.
## Supported features
- direct RGB and RGBA transmission, including chunking and zlib compression;
- POSIX shared-memory transmission, including byte offsets and explicit sizes;
- PNG transmission;
- image IDs, image numbers, placement IDs, source cropping, cell geometry, and pixel offsets;
- root-image rectangle updates, animation frames, frame composition, and animation control;
@@ -17,9 +18,9 @@ stream, and exclusively owns the OpenGL texture cache.
- relative placements, including parent validation, cycle detection, and descendant movement;
- terminal pixel-size queries and SGR pixel mouse coordinates.
Local file, temporary-file, and shared-memory transfer media are intentionally not enabled. Direct
transmission is the portable path and works through SSH without giving terminal applications access
to the terminal host's filesystem or shared-memory namespace.
Local file and temporary-file transfer media are intentionally not enabled. POSIX shared-memory
objects are opened read-only and immediately unlinked as required by the protocol. Direct
transmission remains the portable path and works through SSH.
## Resource and threading behavior