Unity 6.3
0 онлайн 17 гостей 3 в системе
Вход

Включить дополнительные функции для Embedded Linux

Для повышения производительности приложений можно включить следующие дополнительные функции.

Экран загрузки

Когда вы запускаете встроенный Linux плеер, появляется отдельный экран загрузки (обычно в течение 200 мс на наших референтных системах), содержащий 2D изображение, настроенное в Настройки игрока окно. Начальное содержимое сцены все еще доступно, за исключением того, что оно загружается за экраном загрузки.

Устойчивость кэша для GLES3

Встроенный Linux поддерживает кэширование бинарных шейдеров на устройстве, на котором установлен Unity Player. Повторное использование скомпилированного бинарного файла шейдера из кэша обычно быстрее, чем компиляция шейдера снова. Это приводит к более быстрой настройке для каждой программы шейдера во время последующих перезапусков приложений или перезагрузки сцен. Кэш создается во время выполнения после загрузки шейдера. Поскольку этот кэш записывается во временную папку:[TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/UnityShaderCache/, он может быть очищен при перезапуске системы.

Чтобы использовать кэширование шейдеров при перезапуске системы, скопируйте кэш в данные Player, выполнив следующие действия:

  1. Разверните проигрыватель Unity в целевой системе.
  2. Запустите приложение и убедитесь, что все шейдеры затронуты.
  3. Копировать все файлы из [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/UnityShaderCache/ в [PATH_TO_PLAYER]/Data/UnityShaderCache/.

Устойчивость кэша конвейера для Vulkan

Embedded Linux поддерживает кэширование двоичного конвейера Vulkan на устройстве, где установлен Unity Player. В Vulkan кэш конвейера объединяет скомпилированный шейдер с текущим состоянием графики. Переиспользовать такой шейдер из файла кэша значительно быстрее, чем заново проходить сложный процесс компиляции. Благодаря этому настройка каждого сочетания шейдерной программы и состояния графики выполняется быстрее при последующих перезапусках приложения или перезагрузках сцен. Кэш двоичного конвейера Vulkan создаётся во время выполнения при использовании конвейеров Vulkan. Поскольку он записывается во временный файл [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/vulkan_pso_cache.bin, его можно очистить при перезапуске системы.

Чтобы использовать кэширование конвейера при перезагрузке системы, скопируйте кэш в данные проигрывателя, выполнив следующие действия:

  1. Разверните проигрыватель Unity в целевой системе.
  2. Запустите приложение и убедитесь, что используются все конвейеры.
  3. Копировать файл [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/vulkan_pso_cache.bin в [PATH_TO_PLAYER]/Data.

Примечания:

  • Обновить кэш при каждом обновлении проигрывателя.
  • Поскольку кэш зависит от конкретного устройства, совместно используйте его только между устройствами с точно такой же конфигурацией аппаратного и программного обеспечения.
  • Чтобы указать местоположение кэша чтения-записи, используйте platform-hmi-gfx-cache-path. Дополнительные сведения см. в Аргументы командной строки.
  • При использовании кэширования конвейера вызовы методов для создания графических конвейеров разрешаются значительно быстрее, что сокращает время загрузки последующих сцен. Чтобы измерить увеличение производительности при использовании кэширования конвейера, сравните время, необходимое для загрузки первого кадра при перезагрузке сцены или перезапуске приложения.
  • Использование кэша немного увеличивает время инициализации раннего движка. Вы можете наблюдать это увеличение в данных времени запуска при использовании аргумента командной строки -platform-hmi-log-startup-times. Однако использование кэша сокращает время отображения первого кадра.
  • Используйте ShaderVariantCollection.WarmUp() для компиляции или загрузки шейдеров в память заранее для последующего использования. Вызовите этот метод, когда ресурсы CPU доступны, например, во время запуска приложения, чтобы обеспечить готовность шейдеров при необходимости и предотвратить задержки во время игры. Однако это может увеличить время запуска, поскольку Unity обрабатывает шейдеры.

Регистрация времени запуска

Журнал времени запуска — это время, которое требуется приложению для запуска. Он часто используется в качестве критического показателя для обеспечения безопасности системы и соблюдения нормативных требований.

Журнал времени запуска в Embedded Linux включает продолжительность или общее время (в миллисекундах) с момента запуска приложения. Существует два типа журнала времени запуска:

  • Реальное: Это фактическое время на стене или часы, подобно секундомеру, используемому для вычисления времени.
  • Пользователь: Это время, которое приложение или один из его потоков потратили на ядро CPU. Это может быть больше, чем Реальное время, если несколько потоков заняты при запуске приложения.

Чтобы добавить журнал времени запуска из C#, используйте:

HmiPlatform.LogStartupTiming("log tag");

Результаты отображаются в следующей строке Player.log:

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

Он содержит log tag, wall time (xxx), и cpu time (yyy) в миллисекундах с момента начала игры игрока.

Вы можете охранять код, используя #if UNITY_EMBEDDED_LINUX_API ... #endif.

Примечание: Используйте ту же терминологию, что и в команде Время для указания времени стены и времени CPU. Дополнительную информацию см. в основном руководстве Linux.

Пример выхода

[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

При указании аргумента командной строки 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

EVDEV обработка ввода с Wayland

Чтобы включить драйвер ввода EVDEV SDL2 во время работы в Wayland, запустите проигрыватель с аргументом -platform-embedded-linux-wayland-enable-evdev-input.

Принуждение к использованию Wayland

В системе, в которой доступны окна X11 и Wayland, вы можете заставить проигрыватель Unity использовать Wayland, установив в переменной среды значение SDL_VIDEODRIVER=wayland.

Аргументы командной строки

Вы можете запустить Unity Встроенный Linux Проигрыватель из командной строки и передавать аргументы для изменения способа выполнения Проигрывателя.

Примечание: Все аргументы командной строки имеют приоритет над параметрами, настроенными в Unity Editor.

Аргумент командной строки Описание
-platform-hmi-force-srgb-blit Измените настройку Force SRGB blit, чтобы управлять тем, используется ли гамма цветовое пространство (sRGB) вместо линейного цветового пространства во время рендеринга. Дополнительные сведения см. в Настройки проигрывателя > Рендирование > Принуждение SRGB blit.
-platform-hmi-log-startup-times Запишите данные о времени запуска проигрывателя. Этот аргумент необходим для использования инструмента профилирования запуска -platform-hmi-quit-after-frame N.
-platform-hmi-quit-after-frame N Запишите данные времени запуска проигрывателя для первых N кадров и автоматически выйдите из проигрывателя после рендеринга Nи кадров. N представляет количество кадров, для которых вы хотите записать время запуска проигрывателя. Используйте этот аргумент для профилирования производительности запуска проигрывателя.

Примечание: Этот аргумент действует только при включении -platform-hmi-log-startup-times.
-platform-hmi-single-gl-context Отключить совместное использование контекста для OpenGL ES. По умолчанию Unity использует два контекста OpenGL ES, один для запуска и другой для отображения. Этот аргумент заставляет Unity использовать вместо этого один контекст. Используйте этот аргумент для обнаружения и устранения проблем с графическими драйверами.

Примечание: Этот аргумент отключает поддержку нескольких дисплеев.
-platform-hmi-cpu-configuration <configuration> Укажите конфигурацию CPU для проигрывателя. Этот аргумент ожидает строку, содержащую комбинацию букв: H (ядро высокой производительности), L (ядро низкой производительности) и/или D (ядро отключения). Строчка определяет режим производительности каждого ядра CPU.

Например, DHLL на 4-ядерном CPU отключает первое ядро, назначает второму ядро высокой производительности и настраивает третье и четвертое ядро на низкую производительность. Дополнительные сведения см. в Настройки проигрывателя > Конфигурация > CPU конфигурация.
-platform-hmi-player-data-path Введите путь к каталогу в системе, где вы хотите сохранить .config и файлы журнала. Для получения дополнительной информации, см. Настройки Игрока > Конфигурация > Путь к данным плеера.
-platform-hmi-force-vsync-count [C] Определяет количество вертикальных синхронизаций, разрешенных между каждым кадром. Установите его на 0, чтобы полностью отключить vsync, или на -1, чтобы использовать значение, установленное в QualitySettings.
-platform-hmi-enable-signal-handlers Настройте настройки обработчика сигналов Unity для встраиваемых платформ. Значение по умолчанию 1, которое включает обработчики сигналов Unity. Если обработка сбоев или создание core dump не работает правильно, отключите этот аргумент, установив его на 0.
-platform-hmi-gfx-cache-path <path> Задаёт пользовательский путь, по которому движок хранит кеш шейдеров GLES или кеш конвейера Vulkan в зависимости от графической серверной части и возможностей платформы. Для GLES3 и Vulkan пользовательский путь имеет приоритет над постоянным кешем.

Примечание: указанный путь должен существовать и быть доступен для записи.

Файл журнала проигрывателя (Player.log) содержит сведения о проблемах и успешном использовании.
-platform-embedded-linux-enable-gamepadinput Изменить настройку игрового контроллера. См. Настройки игрока > Конфигурация > Включить Game Контроллеры.
-platform-embedded-linux-offscreen-video Настройте проигрыватель на использование внеэкранного драйвера рендеринга из SDL2. Это полезно для моделирования и настройки сервера рендеринга. Все рендеринг происходит вне экрана, но остается ускоренным GPU.

Примечание: При использовании этой функции вы можете ограничить использование CPU/GPU, настроив Application.targetFrameRate.
-platform-embedded-linux-wayland-enable-evdev-input Включите драйвер ввода EVDEV SDL2 при запуске Проигрывателя в Wayland. Дополнительные сведения см. в EVDEV Обработка ввода с Wayland.

Дополнительные ресурсы