blob: 1e49e072a5c196b91e92d71328281ef9a48d71af [file] [log] [blame]
eskia is an experimental graphics library targeting embedded devices,
by the authors of Skia.
eskia is still mostly a nebulous idea right now. The main goal of eskia is to
be able to draw pretty graphics quickly on low-power devices, the Cortex-M4F
being a representative if somewhat aribtrary target. We plan to use some of
the ideas, APIs, and algorithms from our experience working with Skia, but will
likely be cutting or changing many of those ideas, APIs, and algorithms to
better serve embedded devices. Here's a tentative summary of familiar Skia
concepts that are very likely to be in eskia, desirable but up in the air, or
very unlikely to be found in eskia.
Very Likely
-----------
- 16-bit color destinations (565, 5551, etc.)
- the most common few blend modes
- not completely terrible anti-aliasing
- simple primitive and compound shapes (lines, quadratics, rectangles, ovals, round-rects)
- restricted coordinate transforms (translation, scale, rotation)
- rectangular clip tracking
- bitmap shaders with no or bilinear filtering
- simple gradient shaders (linear, radial, sweep)
- some sort of way to work with pre-built font atlases
- hardware acceleration when available
Desirable
---------
- 24- or 32-bit color destinations
- all Porter-Duff blend modes
- complex shapes (cubics, conic sections)
- full affine or perspective coordinate transforms
- round-rect clip tracking
- better than bilinear filtering for bitmaps (bicubic, mipmaps)
- color filters (4x5 transforms, color tables)
- simple shadows / blurs
- image decoders
Very Unlikely
-------------
- full path clip tracking
- advanced anti-aliasing
- complex blend modes
- complex color management
- complex font rendering
- complex gradients (2-point conical)
- full-image filters
- image encoders
- SVG input or output
- PDF output
- logical path operations (path ⊕ path -> path, for ⊕ like union, difference, intersect...)
- anything related to OpenGL, GLES, Vulkan, DirectX, Metal, etc.
From a little higher-level, we'd be pleased if we could draw the animations
described in Lottie files with some reasonable fidelity and good framerate.
(See e.g. https://www.lottiefiles.com/ or https://skia.org/user/modules/canvaskit)
While code size and RAM usage are taken into consideration in Skia,
expect these to be extreme concerns in eskia.