It is a complete mess due to their inability to properly support kernel interfaces. Their driver is a blob and it's the source of all their problems with integration. Nothing stopped them from upstreaming it a long time ago but they prefer keeping the mess to doing things right.
PRIME doesn't work because they only implemented it half way. After decades of not implementing anything that is. I call such level of support complete garbage.