# 埋め込み Linux の任意の機能の有効化

> Enable optional features to improve your application performance.

以下の任意の機能を有効にして、アプリケーションのパフォーマンスを向上させることができます。

## ロード画面##loading-screen

埋め込み Linux プレイヤーを起動すると、別のロード画面が表示されます (通常、リファレンスシステムでは 200 ミリ秒以内)。この画面には、[Player 設定](/engine/6000.0/manual/platform-specific/embedded-systems/embedded-linux/get-started/player-settings.md) ウィンドウで設定された 2D 画像が表示されます。最初のシーンコンテンツもそのまま使用できますが、ロード画面の背後でロードされます。

## GLES3 のシェーダーキャッシュの永続性##shader-cache-persistence-for-gles3

埋め込み Linux は、起動タイミングを速くするために、Unity Player がインストールされているデバイスでのバイナリシェーダーキャッシュをサポートしています。キャッシュは、シェーダーのロード後、ランタイムに作成されます。このキャッシュは一時フォルダー `[TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/UnityShaderCache/` に書き込まれるため、システムの再起動時に消去できます。

システムの再起動時にシェーダーキャッシュを使用するには、以下の手順でキャッシュをプレイヤーデータにコピーします。

1. Unity Player をターゲットシステムに展開します。
2. アプリケーションを実行し、すべてのシェーダーがタッチされていることを確認します。
3. すべてのファイルを `[TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/UnityShaderCache/` から `[PATH_TO_PLAYER]/Data/UnityShaderCache/` にコピーします。

**注：**

* プレイヤーが更新されるたびにキャッシュを更新する必要があります。
* キャッシュはデバイス固有であるため、ハードウェアとソフトウェアの設定がまったく同じデバイス間でのみ共有する必要があります。

## Vulkan のパイプラインキャッシュの永続性##pipeline-cache-persistence-for-vulkan

埋め込み Linux は、起動タイミングを速くするために、Unity Player がインストールされているデバイスでのバイナリ Vulkan パイプラインキャッシュをサポートしています。バイナリ Vulkan パイプラインキャッシュは、Vulkan パイプラインの使用時、ランタイムに作成されます。このキャッシュは一時的な `[TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/vulkan_pso_cache.bin` ファイルに書き込まれるため、システムの再起動時に消去できます。

システムの再起動時にパイプラインキャッシュを使用するには、以下の手順でキャッシュをプレイヤーデータにコピーします。

1. Unity Player をターゲットシステムに展開します。
2. アプリケーションを実行し、すべてのパイプラインが使用されていることを確認します。
3. `[TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/vulkan_pso_cache.bin` ファイルを `[PATH_TO_PLAYER]/Data` にコピーします。

**注：**

* プレイヤーが更新されるたびにキャッシュを更新する必要があります。
* キャッシュはデバイス固有であるため、ハードウェアとソフトウェアの設定がまったく同じデバイス間でのみ共有する必要があります。

## 起動時間ロギング##startup-time-logging

起動時間ロギングは、アプリケーションの起動にかかる時間の長さです。これは、システムの安全性と規制要件の重要な指標としてよく使用されます。

埋め込み Linux の起動時間ロギングには、アプリケーションが起動されてからの継続時間または合計時間 (ミリ秒単位) が含まれます。起動時間ロギングには 2 つのタイプがあります。

* \*\*Real:\*\*実ウォール時間またはクロック時間のことで、時間の計算に使用されるストップウォッチによく似ています。
* \*\*User:\*\*アプリケーションまたはそのスレッドの 1 つが CPU コアで費やした時間です。アプリケーションの起動時に複数のスレッドがビジー状態になる場合は、リアルタイムよりも大きくなる可能性があります。

C# から起動タイミングログを追加するには、以下を使用します。

`HmiPlatform.LogStartupTiming("log tag");`

結果は、以下の `Player.log` 行に表示されます。

`[TIMING::STARTUP] log tag: Real: xxx ms | User: yyy ms`

**ログタグ** と、プレイヤーの開始時刻からの **ウォール時間 (xxx)** および **CPU 時間 (yyy)** がミリ秒単位で表示されます。

`#if UNITY_EMBEDDED_LINUX_API ... #endif` を使用してコードを保護できます。

\*\*注：\*\***Time** コマンドと同じ用語を使用して、ウォール時間とCPU 時間を参照します。詳細については、[Linux](https://man7.org/linux/man-pages/man7/time.7.html) のメインマニュアルを参照してください。

### 出力例:##example-output

```plaintext
[TIMING::STARTUP] Initial probing done: Real: 19 ms | User: 11 ms
[TIMING::STARTUP] SDL Initialized: Real: 64 ms | User: 54 ms
[TIMING::STARTUP] Scripting runtime loaded: Real: 97 ms | User: 86 ms
[TIMING::STARTUP] Plugins loaded: Real: 97 ms | User: 87 ms
[TIMING::STARTUP] Engine initialized (nogfx): Real: 104 ms | User: 94 ms
[TIMING::STARTUP] Player Prefs loaded: Real: 104 ms | User: 94 ms
[TIMING::STARTUP] Screen initialized: Real: 139 ms | User: 112 ms
[TIMING::STARTUP] Engine initialized (gfx): Real: 187 ms | User: 161 ms
[TIMING::STARTUP] Gfx initialized: Real: 190 ms | User: 163 ms
[TIMING::STARTUP] Input initialized: Real: 190 ms | User: 163 ms
[TIMING::STARTUP] SPLASH - Begin: Real: 190 ms | User: 164 ms
[TIMING::STARTUP] SPLASH - Primary scene assets loaded (async): Real: 2197 ms | User: 1670 ms
[TIMING::STARTUP] SPLASH - All engine initial states established: Real: 2197 ms | User: 1670 ms
```

スクリプト API を使用したカスタムイベントからの出力

`[TIMING::STARTUP] HELLO!!: Real: 2198 ms | User: 1671 ms`

`boot.config` 出力で `platform-hmi-quit-after-frame` を指定すると、フレーム番号 `X` まで以下がログに記録されます。ここで、`X` はブート設定値として指定する番号です。

`[TIMING::STARTUP] Frame 1 rendered: Real: 2209 ms | User: 1687 ms`

`[TIMING::STARTUP] Frame 2 rendered: Real: 2210 ms | User: 1692 ms`

## Wayland での EVDEV 入力処理##evdev-input-handling-with-wayland

Wayland での実行中に `EVDEV SDL2` 入力ドライバーを有効にするには、`-platform-embedded-linux-wayland-enable-evdev-input` 引数を指定してプレイヤーを開始します。また、` platform-embedded-linux-wayland-enable-evdev-input=1` として `Data/boot.config` にある設定ファイルに追加することもできます。

## Wayland 使用の強制##force-to-use-wayland

X11 と Wayland の両方のウィンドウシステムが使用可能なシステムでは、環境変数を `SDL_VIDEODRIVER=wayland` に設定することで、Unity Player に Wayland の使用を強制できます。

## コマンドライン引数##command-line-arguments

コマンドラインから埋め込み Linux の Unity Player を起動し、引数を渡すことで、プレイヤーの実行方法を変更することができます。

\*\*注：\*\*すべてのコマンドライン引数は、Unity エディターと `boot.config` の設定よりも優先されます。

| CLI 引数                                                | 説明                                                                                                                                                                                                                                                                                                                                                                                            |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-log-startup-times-and-quit`                         | **(非推奨)** 最初のフレームのレンダリング後にプレイヤーを終了します。                                                                                                                                                                                                                                                                                                                                                        |
| `-platform-hmi-force-srgb-blit`                       | 強制された `srgb-blit` の設定を変更します。詳細については、[**Player Settings**](/engine/6000.0/manual/platform-specific/embedded-systems/embedded-linux/get-started/player-settings.md) > **Rendering** > **Color Space** を参照してください。                                                                                                                                                                                |
| `-platform-hmi-quit-after-frame`                      | ロギングを有効にします。[**Player Settings**](/engine/6000.0/manual/platform-specific/embedded-systems/embedded-linux/get-started/player-settings.md) > **Configuration** > **Logging** を参照してください。                                                                                                                                                                                                        |
| `-platform-hmi-log-startup-times`                     | ロギングを有効にします。[**Player Settings**](/engine/6000.0/manual/platform-specific/embedded-systems/embedded-linux/get-started/player-settings.md) > **Configuration** > **Logging** を参照してください。                                                                                                                                                                                                        |
| `-platform-hmi-single-gl-context`                     | GLES のコンテキスト共有を無効にします。\*\*注：\*\*この引数はマルチディスプレイサポートを無効にします。                                                                                                                                                                                                                                                                                                                                    |
| `-platform-hmi-cpu-configuration <configuration>`     | プレイヤーの CPU 設定を指定します。この引数は、文字列が文字 H (高パフォーマンスコア)、文字 L (低パフォーマンスコア)、文字 D (無効コア) のいずれかまたはすべての組み合わせであると想定しています。例えば、4 コア以上の CPU で、1 つ目のコアの使用を無効にし、2 つ目のコアを高パフォーマンス、3 つ目と 4 つ目を低パフォーマンスとタグ付けする場合は `DHLL` となります。[**Player Settings**](/engine/6000.0/manual/platform-specific/embedded-systems/embedded-linux/get-started/player-settings.md) > **Configuration** > **CPU configuration** を参照してください。 |
| `-platform-hmi-player-data-path`                      | `.config` ファイルとログファイルを保存するシステム上のディレクトリパスを入力します。[**Player Settings**](/engine/6000.0/manual/platform-specific/embedded-systems/embedded-linux/get-started/player-settings.md) > **Configuration** > **Player Data path** を参照してください。                                                                                                                                                            |
| `-platform-hmi-force-vsync-count [C]`                 | 各フレーム間で渡すことができる垂直同期の数です。ここで、0 を設定すると vsync が完全に無効になり、-1 を設定すると `QualitySettings` の値が使用されます。                                                                                                                                                                                                                                                                                                   |
| `-platform-embedded-linux-enable-gamepadinput`        | ゲームコントローラーの設定を変更します。[**Player Settings**](/engine/6000.0/manual/platform-specific/embedded-systems/embedded-linux/get-started/player-settings.md) > **Configuration** > **Enable Game Controllers** を参照してください。                                                                                                                                                                                |
| `-platform-embedded-linux-offscreen-video`            | SDL2 のオフスクリーンレンダリングドライバーを使用するようにプレイヤーを設定します。これはシミュレーションとレンダリングサーバーの作成に役立ちます。すべてのレンダリングはオフスクリーンですが、GPU アクセラレーションは行われます。\*\*注：\*\*この機能を使用する場合、`Application.targetFrameRate` を設定することで CPU/GPU の使用量を制限できます。                                                                                                                                                                                       |
| `-platform-embedded-linux-wayland-enable-evdev-input` | Wayland での実行中に EVDEV SDL2 入力ドライバーを有効にします。詳細については、[Wayland での EVDEV 入力処理](#EVDEV) を参照してください。                                                                                                                                                                                                                                                                                                   |

## 追加リソース##additional-resources

* [埋め込み Linux のプレイヤー設定](/engine/6000.0/manual/platform-specific/embedded-systems/embedded-linux/get-started/player-settings.md)
* [Linux マニュアルページ](https://man7.org/linux/man-pages/man7/time.7.html)
