fix(diagnostics): finer beginFrame sub-phase markers for AMD crash

Previous markers showed crash before bf:ubo. Add markers at bf:msaa,
bf:pp, bf:swap, bf:acquire, bf:jitter to isolate which early beginFrame
call does the NULL deref.
This commit is contained in:
Kelsi 2026-04-03 20:32:18 -07:00
parent 5778ba230d
commit cd07e23485

View file

@ -809,14 +809,17 @@ void Renderer::beginFrame() {
if (vkCtx->isDeviceLost()) return;
// Apply deferred MSAA change between frames (before any rendering state is used)
g_crashRenderPhase = "bf:msaa";
if (msaaChangePending_) {
applyMsaaChange();
}
// Post-process resource management (§4.3 — delegates to PostProcessPipeline)
g_crashRenderPhase = "bf:pp";
if (postProcessPipeline_) postProcessPipeline_->manageResources();
// Handle swapchain recreation if needed
g_crashRenderPhase = "bf:swap";
if (vkCtx->isSwapchainDirty()) {
(void)vkCtx->recreateSwapchain(window->getWidth(), window->getHeight());
// Rebuild water resources that reference swapchain extent/views
@ -828,6 +831,7 @@ void Renderer::beginFrame() {
}
// Acquire swapchain image and begin command buffer
g_crashRenderPhase = "bf:acquire";
currentCmd = vkCtx->beginFrame(currentImageIndex);
if (currentCmd == VK_NULL_HANDLE) {
// Swapchain out of date, will retry next frame
@ -835,6 +839,7 @@ void Renderer::beginFrame() {
}
// FSR2 jitter pattern (§4.3 — delegates to PostProcessPipeline)
g_crashRenderPhase = "bf:jitter";
if (postProcessPipeline_ && camera) postProcessPipeline_->applyJitter(camera.get());
// Update per-frame UBO with current camera/lighting state