> They pre-allocate a portion of the memory to the iGPU and the CPU can't access that memory
I don't recall the details, yes there's a BIOS setting to assign memory to the GPU, but that doesn't actually limit the memory used by the GPU. With any current OS and driver, the actual amount of memory used is set dynamically at runtime. The rest is as I said an API (OpenGL / DirectX pre 12) limitation.
https://docplayer.net/88302897-Memory-management-in-vulkan-a...
Page 20:
Memory types: AMD APU
● Memory is really unified – all heaps are equally fast.
Meaning the application can allocate a buffer on such a heap, load/generate some data into it, and "hand it over to" (just means promise not to change it concurrently without notifying) the GPU. No copies, the GPU can now use it.
[In contrast, different memory types on non-UMA systems are best for uploads (to GPU), downloads (from GPU), frequent use, one-time use... of buffers]
So, what's left of Apple's UMA advantage is, I don't know? Maybe a unified cache. Not a big deal, graphics working sets are much larger than any L3 cache. Oh, and marketing language.