Сучасні графічні процесори, як правило, мають єдиний фронтальний розділ, який обробляє повністю лінійний потік команд з процесора. Незалежно від того, чи це натуральна апаратна конструкція, чи вона просто розвинулася з тих часів, коли існувало єдине ядро CPU, що генерує команди для графічного процесора, дискусійне, але наразі це реальність. Отже, якщо ви генеруєте єдиний лінійний потік стаціонарних команд, звичайно, має сенс генерувати цей потік лінійно на одному потоці процесора! Правильно?
Ну, а сучасні графічні процесори, як правило, мають дуже гнучкий уніфікований сервер, який може працювати відразу над багатьма різними речами. Взагалі, GPU працює над вершинами та пікселями з досить тонкою деталізацією. Існує не велика різниця між GPU, що обробляє 1024 вершини в одному малюнку, і 512 + 512 вершин у двох різних малюнках.
Це говорить про досить природний спосіб зробити менше роботи: замість того, щоб кидати величезну кількість вершин у GPU за один виклик розіграшу, розділіть свою модель на секції, зробіть дешеві грубі відсічки на цих секціях і подайте кожен шматок окремо, якщо він пройде випробування на купірування. Якщо ви робите це з правильною деталізацією, ви повинні отримати приємну швидкість!
На жаль, у сучасній графічній графічній реальності API дзвінки дзвінків надзвичайно дорогі на процесорі. Спрощене пояснення того, чому: зміни стану на графічному процесорі можуть не відповідати безпосередньо викликам графічного API, тому багато викликів графічного API просто встановлюють деякий стан всередині драйвера, і виклик виклику, який залежатиме від цього нового стану, йде і дивиться на всі стан, який позначений як змінений з моменту останнього малювання, записує його в командний потік для GPU, а потім фактично ініціює малюнок. Це вся робота, яка робиться в спробі отримати слабкий і середній потік команд для фронтального блоку GPU.
Це зводиться до того, що у вас є бюджет на дзвінки, які повністю накладаються накладні витрати водія . (Я думаю, що я чув, що в ці дні ви можете отримати близько 5000 за кадр за 60 FPS-заголовок.) Ви можете збільшити це на великий відсоток, будуючи цей командний потік паралельно відрізками.
Є й інші причини (наприклад, асинхронний затримка для покращення затримки VR), але це велика графіка для ігор, пов'язаних з графікою та іншого важкого програмного забезпечення, наприклад, для моделювання 3D-моделей.