acdream/src/AcDream.App/Composition
Erik a7ae756b44 fix #387: window resize never recreated the Vulkan swapchain (stretch)
User report: resolution picks (and window drags) stretched the image
instead of changing the pixel count. Root cause: Campaign V slice V11
deleted the GL viewport target and left a null target, assuming the
driver's OUT_OF_DATE/SUBOPTIMAL acquire/present results would drive
swapchain recreation on resize. That is driver-dependent and
spec-insufficient — this machine's Windows AMD driver keeps presenting
the stale-extent swapchain scaled to the new window indefinitely, so
OnFramebufferResize only ever updated the camera aspect while every
pass (UI included) kept rendering at the old extent.

Fix: SwapchainRecreateViewportTarget implements the existing
IFramebufferViewportTarget seam for Vulkan and arms
VulkanGraphicsContext.RequestRecreate() on every resize event; the next
PrepareFrame rebuilds the swapchain at the live FramebufferSize (bursts
collapse to one recreation, stale events cannot install a stale extent,
minimised sizes stay gated by FramebufferResizeController).

Tests: SwapchainRecreateViewportTargetTests (target contract, size-
agnostic arming, null hook, controller-to-target end-to-end with the
minimised gate). Full Debug App suite 4,941/3 skips.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 09:05:13 +02:00
..
AnimationHookRegistrationSet.cs refactor(app): compose live presentation startup 2026-07-22 17:55:15 +02:00
CompositionAcquisitionScope.cs feat(render): Campaign V slice V6h — the Vulkan composition host 2026-07-28 11:47:37 +02:00
ContentEffectsAudioComposition.cs feat(audio): Campaign A slice A5 — retail's region ambient soundscape 2026-08-08 22:53:41 +02:00
FrameRootComposition.cs feat(ui): Campaign OP slice OP4 — the Character tab 2026-08-11 04:31:34 +02:00
GameWindowCompositionPipeline.cs refactor(app): close ordered startup composition 2026-07-22 19:20:20 +02:00
GameWindowGraphics.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
GameWindowPlatformAcquisition.cs refactor(app): define ordered composition contract 2026-07-22 15:03:40 +02:00
HostInputCameraComposition.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
InteractionRetainedUiComposition.cs feat(ui): FA5 -- allegiance page fully live: CF-1 subscription, blocks, roster, swear/break/kick 2026-08-12 08:40:07 +02:00
InteractionUiRuntimeSources.cs feat(ui): FA5 -- allegiance page fully live: CF-1 subscription, blocks, roster, swear/break/kick 2026-08-12 08:40:07 +02:00
LivePresentationComposition.cs feat(ui): Campaign OP slice OP4 — the Character tab 2026-08-11 04:31:34 +02:00
LivePresentationRuntimeBindings.cs refactor(app): key live projections by runtime identity 2026-07-25 21:50:58 +02:00
PreparedSetupResolver.cs perf(content): remove exception-driven setup probes 2026-07-24 15:12:21 +02:00
SessionPlayerComposition.cs refactor(settings): OP9 — retire the dead F11 settings surface + fully-superseded GameplaySettings 2026-08-11 13:18:53 +02:00
SessionPlayerRuntimeBindings.cs refactor(app): compose session and player startup 2026-07-22 18:28:32 +02:00
SessionStartComposition.cs feat(runtime): define borrowed views commands and ordered events 2026-07-25 19:08:42 +02:00
SettingsDevToolsComposition.cs refactor(settings): OP9 — retire the dead F11 settings surface + fully-superseded GameplaySettings 2026-08-11 13:18:53 +02:00
VulkanHostInputCameraCompositionFactory.cs fix #387: window resize never recreated the Vulkan swapchain (stretch) 2026-08-13 09:05:13 +02:00
WorldRenderComposition.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00