Уточнить цену замены vk-bootstrap измеренными числами

Было сказано «около сорока строк вызовов» на глаз. Счёт по одним и тем же
модулям (Context и Swapchain целиком, код без пустых и комментариев) даёт
301 строку в C++ против 606 в порте.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 20:59:32 +03:00
co-authored by Claude Opus 5
parent 1d7f9191ea
commit d6e1fa52b9
+15 -11
View File
@@ -285,13 +285,17 @@ winit забирает его себе и зовёт приложение чер
**Замены vk-bootstrap нет.** В C++ выбор физического устройства по требуемым
возможностям, поиск семейств очередей, проверка наличия слоя валидации и сборка цепочки
показа — это `vkb::InstanceBuilder`, `vkb::PhysicalDeviceSelector`, `vkb::SwapchainBuilder`,
суммарно около сорока строк вызовов. В порте это `context.rs` и `swapchain.rs`, написанные
руками: перебор устройств, чтение `PhysicalDeviceFeatures2` с цепочкой `Vulkan12/13Features`,
разбор флагов семейств очередей, проверка поддержки показа на поверхность, выбор формата
с откатом, зажим размера и числа образов по возможностям поверхности. Это **самая
большая статья расходов порта** и главная причина, по которой `simv-vk` вышел длиннее
своего прообраза.
показа — это `vkb::InstanceBuilder`, `vkb::PhysicalDeviceSelector` и
`vkb::SwapchainBuilder`. В порте всё это написано руками: перебор устройств, чтение
`PhysicalDeviceFeatures2` с цепочкой `Vulkan12/13Features` и сверка девяти возможностей,
разбор флагов семейств очередей с проверкой поддержки показа на поверхность, выбор
формата с откатом на первый доступный, зажим размера и числа образов по возможностям
поверхности, создание представлений.
Счёт по одним и тем же модулям (`Context` и `Swapchain` целиком, строки кода без пустых и
комментариев): **301 строка в C++ против 606 в порте**. Эти 305 строк разницы и есть
главная причина, по которой `simv-vk` вышел длиннее прообраза, — весь остальной перевес
Vulkan-слоя укладывается в четыре десятка строк.
**Ритм выпусков разный.** `ash` 0.38 вышел в апреле 2024 и с тех пор не обновлялся —
это не заброшенность (Vulkan 1.3 он покрывает полностью, а генерируемый API стабилен),
@@ -356,10 +360,10 @@ C++ тоже опасен, не притворяясь, что их нет.
сводится. Что можно утверждать по итогам порта:
**Порт занял примерно на пятую часть больше строк**, и почти весь перевес пришёлся на
`simv-vk`. Причина одна и она названа выше: замены vk-bootstrap нет, и сорок строк
вызовов превратились в двести пятьдесят строк выбора устройства и сборки цепочки показа.
Вне Vulkan-слоя объёмы сопоставимы. Если проект растёт дальше именно в Vulkan-часть,
перевес разовый: инициализация пишется один раз.
`simv-vk`. Причина одна и она названа выше: замены vk-bootstrap нет, и 301 строка
`Context` с `Swapchain` превратилась в 606. Остальной Vulkan-слой — запись кадра, барьеры,
сборка конвейеров — совпадает почти строка в строку. Если проект растёт дальше именно в
Vulkan-часть, перевес разовый: инициализация пишется один раз.
**Сборка: паритет везде, кроме одной клетки.** Полная сборка release у C++ вдвое быстрее
(114 с против 194 с), полная debug — наоборот, медленнее (112 с против 83 с),