準備
-
python2 環境! gn というよくわからない Google ツールが python2 でないと動きません. gn はバイナリなので,
python2 ./bin/gn
みたいなのができません. conda あたりで python2 環境を作っておくとよいでしょう.PYTHON
変数で指定という手もあるかも? - ninja とか(https://skia.org/user/download の dept_tool を使うのも手)
セットアップ
を参考に,
$ python2 tools/git-sync-deps
して依存ライブラリなどを引いておきます.
Shared Linux
is_official_build=true
だと, 一部の依存ライブラリは, skia の third_party フォルダのものではなく, システムの dll を使います.
fontconfig(+ expat), libjpeg, unicode(icu), vulkan, webp を求められます.
$ sudo apt install libfontconfig1-dev libjpeg-dev libicu-dev libvulkan-dev libwebp-dev
で関連ライブラリをインストールしておきます.
libpng, X11 関連も必要かもしれません.
Vulkan
skia_use_vulkan=true
を gn の引数 or args.gn
ファイルに記載して gn 実行します.
例
$ bin/gn gen out/Shared --args='is_official_build=true is_component_build=true skia_use_vulkan=true'
libskia.so を ldd すると以下となりました.
linux-vdso.so.1 (0x00007ffce21b9000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f19583fc000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f19581dd000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f1957f51000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1957d34000)
libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007f195797d000)
libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f1957715000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f19574e3000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f195722f000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f1956fea000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f1956db8000)
libwebp.so.6 => /usr/lib/x86_64-linux-gnu/libwebp.so.6 (0x00007f1956b4f000)
libwebpdemux.so.2 => /usr/lib/x86_64-linux-gnu/libwebpdemux.so.2 (0x00007f195694a000)
libwebpmux.so.3 => /usr/lib/x86_64-linux-gnu/libwebpmux.so.3 (0x00007f1956740000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f19563b7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1956019000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1955e01000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1955a10000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1959095000)
libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f19557df000)
libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f1955529000)
libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007f1953980000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f1953648000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f1953420000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f195321c000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f1953016000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f1952e01000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f1952bf9000)
SwiftShader 有効でビルドする
にあるように,
skia_use_egl = true
あたりを設定し, SwiftShader の include を見るように args.gn
を設定して gn します.
ただ, こちらで Linux 環境で試したところ, viewer は画面が真っ黒になってしまいました.
TODO
-
Skia を Pure CPU rendering(Vulkan backend + SwiftShader Vulkan, Skia EGL + SwiftShader)で動かせるか試す
- CPU レンダリングや, offscreen レンダリング周りの SKia のドキュメント, サンプルコードがなさすぎてつらい