Ich hab nur die interne Grafikkarte, daher kann ich das alles nicht testen.
Bei nicht-proprietären Treibern, also Mesa Treibern, gibt es die DRI_PRIME Environment Variablen: https://docs.mesa3d.org/envvars.html#envvar-DRI_PRIME_DEBUG
Anwendungen können manchmal aber auch selbst entscheiden, welches Device sie nutzen wollen, statt das Mesa zu überlassen. Vermutlich wird das bei Vulkan öfter gemacht werden, weil da alles sehr low level ist.
In der regel gibt es /dev/dri/render* und /dev/dri/card* Device Files für die Karten. Die Render Nodes können auf der GPU rendern. Das beinhaltet auch das anlegen von Buffer Objects per GBM, (sowas ähnliches wie Texturen), die auch in anderen Nodes importiert / verwendet werden können (das ist DRM Prime).
Die card Nodes enthalten KMS (kernel mode setting) Funktionalität. Auflösungen setzen, Sachen anzeigen, das ist da drin. Aus historischen gründen beinhalten die oft zusätzlich auch das render node Zeugs, haben aber wegen dem Modeswitching ein paar Limitationen. Die meisten GPUs haben eine Card und eine Render Node.
(Auf mobilen Geräten (z.B: Smartphones) gibt es es aber oft, das card Nodes nur KMS können, weil sie direkt z.B. Display Pannel repräsentieren, und die GPU davon nichts weiss, und nur eine render Node hat. Mesa importiert dann einen DRM dumb buffer (auch nur ein bo) von der Card node in eine Render node und rendert dort. Das ist auch einfach DRM Prime).
Bei XOrg kann man in der Config angeben, welche Card Node(s) verwendet werden sollen. Bei wayland weiss ich nicht, wie man das macht.
Was man eventuell versuchen könnte, ist einfach zu verhindern, das ein Programm eine card/render node sieht / darauf zugreifen kann. In der theorie sollte das gehen, musst du aber schauen, ob die Programme da mit machen.
Du kannst solche Nodes mit Containern sharen. Render nodes sollten unproblematisch sein. Programme die KMS nutzen und card nodes brauchen, brauchen möglicherweise noch /sys/class/drm/.
Eventuell könnte man auch schauen, was passiert, wenn man den Nodes unterschiedliche Gruppen oder ACLs gibt, und die Berechtigungen mit ACLs einschränkt, vielleicht reicht das ja auch schon.
Wobei da aber logind (genauso wie früher auch console kit, und ich nehme an auch seatd), bei den Card Nodes auch ACLs vergeben, fürs Seat Managemant, was aus sicherheitstechnischer Sicht kompletter Blödsinn ist (sobald man eine Datei geöffnet hat, hat man einen Filedescriptor, danach spielen die Berechtigungen der Datei keine rolle mehr, auch wenn das ACL wieder entfernt wird).