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

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

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

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

QNX поддерживает кэширование бинарных шейдеров на устройстве, на котором установлен 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

QNX поддерживает кэширование двоичного конвейера 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 обрабатывает шейдеры.

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

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

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

Аргумент командной строки Описание
-platform-qnx-graphics-conf Настройка пути к файлу graphics.conf чтобы переопределить автоматическое обнаружение.
-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 представляет количество кадров, для которых вы хотите записать время запуска проигрывателя. Используйте этот аргумент для профилирования производительности запуска проигрывателя.

Примечание: Этот аргумент действует только при включении -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) содержит сведения о проблемах и успешном использовании.

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

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

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

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

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

[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

Веб-камера

Примечание: UnityПоддержка веб-камеры в QNX в настоящее время находится на экспериментальной стадии.

Предварительные условия

  • QNX 7.1
  • libcamapi и его зависимости установлены в системе (будут загружаться динамически)
  • Camera поддерживает формат NV12

Использование Webcam является необязательным в QNX и поддерживается только в QNX 7.1. Для получения дополнительной информации, обратитесь к документации Webcam.

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