Split vulkan_window.cpp by responsibility and render() into phases

VulkanWindow's 3000-line TU becomes sdl_window.cpp (window, events,
cursor, screenshot BMP), vk_device.cpp (device, swapchain, MSAA,
framebuffers), vk_pipelines.cpp (render passes, pipelines),
vk_resources.cpp (buffers, render targets, geometry), vk_textures.cpp
(textures, samplers, descriptors), vk_frame.cpp (render) and
ui_batches.cpp; vulkan_window.cpp keeps construction and timing stats.
Function bodies move verbatim.

render() now reads fence/acquire -> prepare_draws -> prepare_ui ->
write_draw_states -> record_passes -> record_readbacks -> submit ->
finish_readbacks -> present, with FrameDraws / Readback carrying the
locals that used to live across 500 lines.

Verified: login-screen screenshot byte-identical to HEAD; game-world
draw/vertex/index/UI counts identical; ctest, port_gate macos+android,
Android build pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-29 21:54:36 +09:00
co-authored by Claude Opus 5.5
parent eab5938072
commit 22d534c5eb
13 changed files with 2584 additions and 2429 deletions
+5 -1
View File
@@ -64,7 +64,11 @@ src/platform/ScriptLib/PythonBoot.cpp # 解释器启动、RunMainScript
third_party/cpython-2.7.18/ # 静态库
src/host/main.cpp # SDL3 宿主入口:命令行、合成基准
src/host/live_client.cpp # run_live_client:40250 客户端主循环
src/host/vulkan_window.cpp # SDL 窗口/事件 + Vulkan 渲染器(回放 Render3DDraw / UIRenderCommand)
src/host/vulkan_window.{h,cpp} # VulkanWindow:构造/析构 + 帧计时统计(回放 Render3DDraw / UIRenderCommand)
src/host/sdl_window.cpp # SDL 窗口/事件/光标/屏幕键盘/截图 BMP
src/host/vk_{device,pipelines,resources,textures}.cpp # 交换链 / 渲染通道+管线 / 缓冲+RT+几何 / 纹理+采样器+描述符
src/host/vk_frame.cpp # render():prepare_draws → prepare_ui → write_draw_states → record_passes → readback
src/host/ui_batches.cpp # UIRenderCommand → UiBatch 合批
src/host/frame_policy.cpp # 帧率策略(FrameRatePolicy)
src/host/native_audio.cpp # MilesLib AudioCommand → SDL 音频流
src/host/audio_decode.cpp # .wav(手写 PCM 解析)/.mp3(dr_mp3)→ 44.1 kHz 立体声 float,全平台同一路径