Use the script
experimental/tools/web_to_skp , or do the following:
chrome.gpuBenchmarking.printToSkPicture('/tmp') This returns “undefined” on success.
Open the resulting file in the Skia Debugger, rasterize it with
dm, or use Skia's
viewer to view it:
out/Release/dm --src skp --skps /tmp/layer_0.skp -w /tmp \ --config 8888 gpu pdf --verbose ls -l /tmp/*/skp/layer_0.skp.* out/Release/viewer --skps /tmp --slide layer_0.skp
Multipage Skia Picture files capture the commands sent to produce PDFs and printed documents.
Use the script
experimental/tools/web_to_mskp , or do the following:
chrome.gpuBenchmarking.printPagesToSkPictures('/tmp/filename.mskp') This returns “undefined” on success.
Open the resulting file in the Skia Debugger or process it with
experimental/tools/mskp_parser.py /tmp/filename.mskp /tmp/filename.mskp.skp ls -l /tmp/filename.mskp.skp # open filename.mskp.skp in the debugger. out/Release/dm --src mskp --mskps /tmp/filename.mskp -w /tmp \ --config pdf --verbose ls -l /tmp/pdf/mskp/filename.mskp.pdf
There are two ways Skia takes advantage of specific hardware.
Custom bottleneck routines
There are sets of bottleneck routines inside the blits of Skia that can be replace on a platform in order to take advantage of specific CPU features. One such example is the NEON SIMD instructions on ARM v7 devices. See src/opts/
Skia has a built-in font cache, but it does not know how to actually render font files like TrueType into its cache. For that it relies on the platform to supply an instance of
SkScalerContext. This is Skia's abstract interface for communicating with a font scaler engine. In src/ports you can see support files for FreeType, macOS, and Windows GDI font engines. Other font engines can easily be supported in a like manner.
Shaping is the process that translates a span of Unicode text into a span of positioned glyphs with the appropriate typefaces.
Skia does not shape text. Skia provides interfaces to draw glyphs, but does not implement a text shaper. Skia‘s client’s often use HarfBuzz to generate the glyphs and their positions, including kerning.
Here is an example of how to use Skia and HarfBuzz together. In the example, a
SkTypeface and a
hb_face_t are created using the same
.ttf font file. The HarfBuzz face is used to shape unicode text into a sequence of glyphs and positions, and the
SkTypeface can then be used to draw those glyphs.