AnyPS5/core/libs/prx/libkernel/DirectMemory
alfalfa-star 815d274736 feat(agc): import shared direct memory through udmabuf on Linux
On Linux, direct memory is a memfd mapped MAP_SHARED. amdgpu accepts only
private anonymous memory for a host pointer import (libdrm sets
AMDGPU_GEM_USERPTR_ANONONLY), so every import of direct memory failed with
VK_ERROR_INVALID_EXTERNAL_HANDLE and its ranges were copied.

When a host pointer import fails, the range's memfd slice is turned into a
dma-buf through /dev/udmabuf and imported with VK_EXT_external_memory_dma_buf.
The direct memory backing is sealed against shrinking and growing, as
udmabuf requires. libkernel reports the backing of a guest range through
GuestArenaSharedBacking. Without /dev/udmabuf, or past its size limit, the
range is copied as before. APS5_TRACE_HOST_IMPORT now prints the mappings
behind a failed import on Linux too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:09:16 +02:00
..
DirectMemory.cpp feat(agc): import shared direct memory through udmabuf on Linux 2026-10-07 23:09:16 +02:00
DirectMemory.hpp feat(kernel): apply the memory type in sceKernelMtypeprotect 2026-10-06 14:32:47 +02:00
Export.cpp Merge pull request #880 from adriadam10/feat/kernel-mtypeprotect-type 2026-10-07 15:28:25 +13:00
MemoryPool.cpp feat(kernel): apply the memory type in sceKernelMtypeprotect 2026-10-06 14:32:47 +02:00
MemoryPool.hpp fix(libkernel): correct the MemoryPool.hpp include guard 2026-10-06 14:57:51 +02:00
MemoryPoolExport.cpp fix(libkernel): honour MAP_FIXED in sceKernelReserveVirtualRange and sceKernelMemoryPoolReserve 2026-10-01 00:00:22 +02:00
PosixMemory.cpp feat(kernel): support private anonymous guest memory mappings 2026-09-25 06:06:31 +10:00