From 15aadf7f47b608d4990d2c981e451a7af3ae2cee Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sun, 1 Nov 2026 01:31:26 +0400 Subject: perf(render): prewarm pipeline variants with a Vulkan cache --- docs/tomes/05-render.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'docs/tomes/05-render.md') diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md index c1563fc..cfd352a 100644 --- a/docs/tomes/05-render.md +++ b/docs/tomes/05-render.md @@ -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 и объём, который потребовался бы при полной перезаливке, без начальной загрузки. -- cgit v1.2.3