Скорость является наиболее распространенной причиной, почему это не сделано. Фактически, вы можете делать то, что предлагаете, если вы создаете свою собственную операционную систему, она будет очень медленной по архитектурным причинам. Так что предположение, что это быстрее, немного ошибочно. Даже если это будет быстрее, это будет менее эффективно с точки зрения разработки (например, увеличение скорости на 1% в 10 раз).
Копирование данных с ЦП на видеокарту является относительно медленной операцией. Чем меньше вы копируете, тем выше может быть скорость обновления. Поэтому в идеале вы должны располагать большей частью данных на своем графическом процессоре и обновлять только небольшие фрагменты данных. Существует различие между копированием более 320x200 пикселей по сравнению с 1920x1200 или более. Количество пикселей, которые нужно обновить, увеличивается в квадрате по мере увеличения сторон.
Пример: дешевле сказать GPU перемещать изображение на 10 пикселей вправо, чем копировать пиксели вручную в видеопамять в разных местах.
Почему вы должны пройти через API? Просто потому, что это не твоя система. Операционная система не может позволить вам делать все, что вы хотите по соображениям безопасности. Во-вторых, поскольку операционной системе необходимо абстрагировать оборудование, даже ОС взаимодействует с драйвером через какую-то абстрактную систему, API, если хотите.
На самом деле, я бы оценил вероятность того, что ваша система будет быстрее, если вы просто сделаете всю работу самостоятельно, близкой к нулю. Это немного похоже на сравнение C и сборки. Конечно, вы можете писать на ассемблере, но в наши дни компиляторы довольно умны и оптимизируют все лучше и лучше. Трудно быть лучше вручную, даже если вы можете, ваша производительность снизится до предела.
PS: API не делает это обновление невозможным, как это делали старые игры. Это просто неэффективно, вот и все. Не из-за разума API, а потому что это неэффективный период.
PPS: Вот почему они выкатывают Vulkan.