mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 02:51:10 +00:00
32-bit DXVK titles failed every vkMapMemory with VK_ERROR_OUT_OF_HOST_MEMORY: the Qualcomm driver maps above 4 GiB, which WoW64 Wine rejects unless the device offers VK_EXT_map_memory_placed. The bridge's placed-memory layer emulates that extension, but its OPAQUE_FD path made every exportable resource external. This driver reports OPAQUE_FD export as dedicated-only: external buffers and images bind only to dedicated exported memory and cannot use the cached host-visible type, so DXVK's first image bind failed with VK_ERROR_INVALID_EXTERNAL_HANDLE. 0015-placed-memory-dedicated-export.patch adds a mode for such drivers: resources stay native and each host-visible allocation that is not dedicated already is dedicated to a hidden buffer of its size and exported. The driver binds other resources to that memory, and the dma-buf mapped at Wine's placed address is coherent with the GPU (probe on the Pocket FIT: CPU writes through the low mapping, GPU copy, read back). With a locally built layer, AIO's 32-bit DX11 cube ran 15 s at 142.8 FPS average. Qualcomm sessions now load the layer with DROIDDECK_EXPERIMENTAL_PLACED_MEMORY=1; it only acts for devices that request VK_EXT_map_memory_placed.