Discover Core Image デバッグ技術

https://developer.apple.com/videos/play/wwdc2020/10089/

Session概要

Xcode環境変数を使用して、Core Imageパイプライン内のレンダリングおよび最適化の問題を検出して修正する方法、Core Imageグラフを可視化するための環境変数の設定方法について
Core Imageグラフの生成方法、及びそれを解釈してメモリ、色、パフォーマンスの問題を発見し、Core Imageパイプラインを改善、最適化する方法について

CI_PRINT_TREEとは何か

  • 柔軟な環境変数で複数のモードと設定があり、Core Imageで最適化及びレンダリングされた画像を見ることが出来る
  • XcodeでのCore Image Quick Look サポート
    • Core Imageグラフをビジュアルに表示

CI_PRINT_TREEを有効にし利用する方法

  • XcodeのTarget schemeから環境変数をセット
  • もしくはterminalからアプリ起動時にセット

How to control CI_PRINT_TREE

CI_PRINT_TREE = “<graph type> <output type> <options>”
  • graph type
    • Core Imageレンダーにおける3段階を表現
  • output type
    • PDF or PNG
    • Console.appにてCI_LOG_FILE=”oslog”を設定することでtextを取得出来る
  • options
    • context == name
      • CI contextでoutputするlogを指定
    • frame-number
      • ログ出力のlimit
    • これらの設定はメモリや処理時間の増加につながるので注意して使用すべき

CI_PRINT_TREEの取得方法

  • macOSの場合は temporaryディレクトリにfileが保管されている(/tmp)
    • Sandboxのアプリはユニークなtmp dirを持っている
  • iOSアプリではアプリでのBuild Settingが必要
    • Application Supports iTunes file sharingを YES にする
  • また、実機のデバイスに接続してFinderアプリからfileを参照可能

CI_PRINT_TREE ファイルの解釈方法

  • 緑のノードはwarpカーネルを示し、赤は色のカーネルを示す
    • Colorspaceも見る事ができる
  • dump-intermediatesの使用
    • bugが起きた際の手助けとなる
  • ピクセル数やCore Imageでの処理時間、メモリ使用量を確認可能
最新情報をチェックしよう!