По-перше, іноді трапляються випадки, коли випускається патч драйвера, який може підвищити продуктивність або підвищити ефективність для певного процесора. Але, очевидно, ви задаєте це питання, тому що це просто не так часто. Однак оптимізація драйверів процесора схожа за концепцією.
Графічний процесор є дуже складною схемою. Існує для завантаження певних завдань, які потребують дуже багато часу для виконання процесора. Вони отримують набори даних та інструкції, що робити з цими даними. Графічний процесор повинен мати можливість замовляти дані керованим способом та інтерпретувати інструкції, щоб сказати, що робити. Потім він повинен виконати ряд математичних операцій над даними. Після цього він повинен переупорядкувати дані ще раз і повернути результати назад в операційну систему після її завершення. Це дуже спрощений опис конвеєра комп'ютерної графіки . Існує кілька кроків, які необхідно зробити, перш ніж дані будуть готові до програми.
Тепер, оскільки GPU повинен приймати набори інструкцій та реалізовувати дуже складні математичні операції в апаратному забезпеченні, з'являться певні речі, які, як відомо, працюють швидше або повільніше через цей конвеєр. Частина запису драйвера для пристрою - це інтерпретація даних та інструкцій, що надсилаються на пристрій, переклавши їх, щоб пристрій міг їх зрозуміти. Коли це робить драйвер, він може приймати рішення про те, як надсилати дані на пристрій, щоб завдання займали найкоротший проміжок часу. Однак водій, як правило, не має великої кількості інформації про те, яку програму він обслуговує. Все, що він отримує від програми, - це виклики API ("намалюй лінію", "пофарбуй точку", "зафарбуй трикутник" тощо). Отже, припущення, які вона може зробити, не дуже хороші.
Коли AMD або nVidia випускає оновлення драйверів, що містить поліпшення продуктивності для конкретних ігор, це означає, що драйвер виявить, яка гра викликає графічне обладнання, і створить ряд твердо кодованих припущень, які відомі про те, як гра здійснено. Можливо, в грі є багато текстурних зображень, які потрібно швидко поміняти в пам'ять і вийти з неї, або ж це багато змішування кольорів на льоту, щоб отримати певні світлові ефекти. Зазвичай те, що буде робити гра, - це реалізація невеликих програм (званих "шейдери"), які описують, як виконувати ці обчислення, і вона буде відправлена в GPU для виконання. Якщо драйвер знає, як гра використовує обладнання, він може впорядковувати дані та вибирати набори інструкцій, які виконують бажане завдання таким чином, щоб збільшити пропускну здатність та ефективність.
Однак іноді після того, як продукт буде відвантажений, в певній частині GPU можуть виявитись помилки. Це може бути досить малозрозумілим, щоб його пропустили під час перевірки, коли чіп розроблявся, але можна виявити, що він спричиняє певну помилку чи не бажану поведінку (або навіть збої) у певній грі, яка потрапляє на неї. У цьому випадку драйвер виявить цей стан баггі і обійде його, або вивантаживши якийсь обчислення на сторону процесора, або змінивши, як він подає дані в GPU, щоб він не входив у цей стан. Вони, знову ж таки, будуть випущені у вигляді оновлень драйверів.
Таким чином, це не змінює продуктивність самого обладнання, це просто змінює те, як воно використовує обладнання, щоб воно могло працювати ефективніше і швидше на одному наборі даних.