An iOS CAMetalLayer measures its bounds in points while the swapchain is sized in pixels, so a Metal-backed host driver (KosmicKrisp's Mesa WSI compares bounds * contentsScale with the extent) returns VK_SUBOPTIMAL_KHR on every present although the swapchain has exactly the window's client-rect size. DXVK then recreates the swapchain on every frame (1384 times in one short session log) and gets the same answer again.
win32u_vkQueuePresentKHR now reports such a host VK_SUBOPTIMAL_KHR as VK_SUCCESS when the swapchain's extent equals the client rect; Wine's own client-rect check below it still reports real resizes. MADEIRA_VK_HOST_SUBOPTIMAL=1 passes the host result through again (one [winios-vk] ml1390 log line per process says which).
Device result (DXVK 3.1.1 on KosmicKrisp, iPhone, iOS 27): the per-frame "Got VK_SUBOPTIMAL_KHR, recreating swapchain" loop is gone. Madeira side: build/win32u-unix rebuild only; the config catalog picks up the new key from the source comment.
🤖 Generated with Claude Code