La velocità è il motivo più comune per cui ciò non viene fatto. In effetti puoi fare ciò che proponi, se crei il tuo sistema operativo, sarà molto lento per motivi architettonici. Quindi il presupposto che sia più veloce è un po 'imperfetto. Anche se sarebbe più veloce, sarebbe meno efficiente in termini di sviluppo (come aumento dell'1% della velocità per 10 volte il lavoro).
La copia dei dati dalla CPU alla scheda grafica è un'operazione relativamente lenta. Meno copi, maggiore sarà la velocità di aggiornamento. Quindi idealmente avresti la maggior parte dei dati sulla tua GPU e aggiornerai solo piccoli blocchi di dati. Esiste un mondo di differenza tra la copia di oltre 320x200 pixel rispetto a 1920x1200 o più. Vedi il numero di pixel che devi aggiornare cresce quadraticamente quando i lati crescono.
Esempio: è più economico dire alla GPU di spostare l'immagine di 10 pixel a destra piuttosto che copiarli manualmente nella memoria video in diverse posizioni.
Perché devi passare attraverso un'API? Semplicemente perché non è il tuo sistema. Il sistema operativo non può consentirti di fare ciò che desideri per motivi di sicurezza. In secondo luogo, poiché il sistema operativo deve estrarre l'hardware, anche il sistema operativo sta parlando al driver attraverso un sistema astratto, un'API se lo desideri.
In effetti valuterei la probabilità che il tuo sistema sia più veloce, se tu facessi tutto il lavoro da solo, vicino allo zero. È un po 'come confrontare C e assembly. Sicuramente puoi scrivere assembly, ma i compilatori sono piuttosto intelligenti in questi giorni e ottimizzano sempre meglio. È difficile migliorare manualmente, anche se è possibile che la produttività diminuisca.
PS: un'API non rende impossibile eseguire questo aggiornamento proprio come facevano i vecchi giochi. È solo inefficiente, tutto qui. Non a causa della mente dell'API ma perché è un periodo inefficiente.
PPS: ecco perché stanno lanciando Vulkan.