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