perf(render): prewarm pipeline variants with a Vulkan cache
Docs Deploy / Build and Deploy MkDocs (push) Successful in 35s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 35s
This commit is contained in:
5 files changed
+135
-61
No files matched your search
+12
-2
@@ -1144,6 +1144,16 @@ lightmap state передаются в `VulkanStaticMaterial`, а shader пос
|
||||
получается ключ Vulkan pipeline. Alpha reference передаётся отдельно через
|
||||
push constant; он не требует нового pipeline.
|
||||
|
||||
Набор pipelines создаётся до первого draw. Для каждого исходного состояния
|
||||
готовятся его авторский вариант, прозрачный вариант с сохранённым alpha-test
|
||||
и пять категорий MAT0 с обеими политиками глубины. Cull и decal bias остаются
|
||||
исходными; одинаковые ключи объединяются. Смена категории материала или
|
||||
прозрачности диапазона выбирает готовый ключ, сохраняя descriptors, buffers и
|
||||
framebuffers. Vulkan `VkPipelineCache` принадлежит renderer, используется всеми
|
||||
созданиями pipelines и переживает пересоздание swapchain. На диск он пока не
|
||||
сохраняется. Счётчик `render_pipeline_cache` показывает число созданных
|
||||
pipelines, включая новые наборы после resize.
|
||||
|
||||
Рабочий путь `fparkan-game` загружает terrain и все выбранные mission roots
|
||||
(по умолчанию весь список объектов), разрешая локальные material slots через
|
||||
WEAR и MAT0 до объединения геометрии. Индексы GPU имеют тип `u32`: вся карта
|
||||
@@ -1171,8 +1181,8 @@ FX и окружение обновляют следующие вершины,
|
||||
|
||||
Перед записью общих ресурсов renderer ждёт fences всех отправленных кадров.
|
||||
Одного fence текущего кадрового слота недостаточно: другой кадр ещё может
|
||||
читать ту же память. Ожидание всего устройства пока остаётся на пересоздании
|
||||
swapchain и набора pipelines, диагностическом readback и завершении работы. Загрузка изменённых
|
||||
читать ту же память. Ожидание всего устройства остаётся на пересоздании
|
||||
swapchain, диагностическом readback и завершении работы. Загрузка изменённых
|
||||
текстур пока использует отдельную синхронную transfer-команду. Строка
|
||||
`render_geometry_upload` показывает записанные vertex/index bytes и объём,
|
||||
который потребовался бы при полной перезаливке, без начальной загрузки.
|
||||
|
||||
Reference in new issue
Block a user