1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Skia を Vulkan, SwiftShader 有効でビルドするメモ

Last updated at Posted at 2020-01-08

準備

  • 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 のドキュメント, サンプルコードがなさすぎてつらい
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?