oa::MemoryLocation
MEMORY LOCATION Logical placement for buffers (not a silicon map). Discrete vs SoC: - Discrete GPU (e.g. dGPU in a Strix-class laptop): Device = separate VRAM; Host = system RAM; Shared = CPU-mapped VRAM (ReBAR / Smart access memory / large BAR) — same VRAM bytes, two views. - Unified memory / UMA soCs (Apple Silicon, Snapdragon X Elite, many iGPUs): one DRAM pool for CPU + GPU + NPU. vulkan often exposes heaps with HOST_VISIBLE and DEVICE_LOCAL on the same memory — treat that as shared (one pool, visible to both). Pure pageable CPU malloc with no device mapping stays Host. Device means "allocated as device-local / GPU-primary" even when it is physically the same DRAM as the CPU (allocator hint + visibility flags), not a second chip. NPU-only carve-outs without a separate vulkan heap are not a fourth category here until modeled.