However, it does not appear that they'd have to create any new APIs that would be visible to developers (although they might). But none of this is going to look anything like the CPU card in Akitio box stuff people are doing.
Mmmmm this isn't how this works.
There is no "API" because the GPU simply isn't allowed to go offline until the app is done with it. It's soldered into the machine so it's not going anywhere. There's no developer visible API besides the hint that you want your application pinned to the dGPU. It's all or nothing, not dynamic. The app is allowed to decide when the GPU can power down. That's a very very different situation than the GPU being powered down without the app having a choice.
That's still a totally different can of worms than letting the GPU be unplugged. Like I said, in the current setup it makes no sense. If your app is using 2 gigs of VRAM and it gets moved to a 512 gig of VRAM GPU, what is it supposed to do? Or if it's using OpenGL 4 and it gets moved to a OpenGL 3.X GPU?
Those sorts of things require driver and OEM support, which Thunderbolt 3 has. Thunderbolt 2 could as well, but there is absolutely no existing API that deals with this sort of thing. And really it's something you want to tackle at the driver level, not the app level.
On Windows this isn't guaranteed to work either. But DirectX is a little more tolerant of driver interrupts, mostly because the GPU drivers were so unstable they had to come up with workarounds for them crashing. But if you fire up an app that uses the GPU it's not going to respond well if you disconnect the GPU.
There's a lot of stuff that
happens to work, but a lot of stuff that doesn't. Like I said, if you've got a GPU that's got 3 or 4 gigs of VRAM, with data critical to an app, and the GPU disconnects, how does that data get restored?
Also dynamic switching wasn't supported on the MBP until 2010. The 2008s and 2009s had to shut down all GUI processes to do any switch. On the 2010s, an application could launch and ask to be pinned to the faster GPU without having to kill all the applications. It's a step up, but still not what's needed to make Thunderbolt hot plug work.
It's odd to me this is such a discussion point when AMD and Intel have already both said eGPU hot plug does not work properly under the current implementation. At the very least, it doesn't work
because the people who make Thunderbolt and GPUs already said it doesn't. I'm not just making this up. The people who wrote the specs agree. They've already said they had to make new driver changes for it to work properly.