Во-первых, иногда бывают случаи, когда выпускается патч драйвера, который может повысить производительность или повысить эффективность для определенного процессора. Но, очевидно, вы задаете этот вопрос, потому что это не так часто. Однако то, что делают оптимизации драйверов ЦП, похоже.
Графический процессор - очень сложная часть схемы. Он существует для разгрузки определенных задач, которые занимают очень много времени на процессоре. Они получают наборы данных и инструкции о том, что делать с этими данными. Графический процессор должен иметь возможность упорядочивать данные в удобной для пользователя форме и интерпретировать инструкции, чтобы указывать, что делать. Затем он должен выполнить ряд математических операций с данными. После этого он должен заново упорядочить данные и отправить результаты обратно в операционную систему после завершения. Это очень упрощенное описание конвейера компьютерной графики. Есть несколько шагов, которые необходимо предпринять, прежде чем данные будут готовы для программы.
Теперь, когда графический процессор должен принимать наборы инструкций и реализовывать очень сложные математические операции в аппаратных средствах, будут определенные вещи, которые, как известно, работают быстрее или медленнее по этому конвейеру. Частью написания драйвера для устройства является интерпретация данных и инструкций, отправляемых на устройство, перевод их так, чтобы устройство могло их понять. Когда драйвер делает это, он может принять решение о том, как отправить данные на устройство, чтобы задачи выполнялись в кратчайшие сроки. Тем не менее, драйвер обычно не имеет много информации о том, что программа, которую он обслуживает, делает. Все, что он получает от программы, это вызовы API ("нарисовать линию", "закрасить точку", "заштриховать треугольник" и т.д.). Таким образом, предположения, которые он может сделать, не очень хороши.
Когда AMD или nVidia выпускают обновление драйвера, которое содержит улучшения производительности для определенных игр, это означает, что драйвер будет определять, что игра называет графическим оборудованием, и будет иметь ряд жестко закодированных предположений, которые известны о том, как игра реализованы. Возможно, в игре много текстурных изображений, которые нужно быстро поменять местами в памяти или из памяти, или что на ходу происходит много смешивания цветов для получения определенных световых эффектов. Обычно игра будет реализовывать небольшие программы (так называемые "шейдеры"), которые описывают, как выполнять эти вычисления, и они будут отправлены в GPU для выполнения. Если водитель знает, как игра использует аппаратное обеспечение, он может организовать данные и выбрать наборы инструкций, которые выполняют требуемую задачу таким образом, чтобы повысить пропускную способность и эффективность. Поскольку он знает, чего ожидать, он может по существу "подготовить" графический процессор и данные, чтобы они выполнялись как можно быстрее.
Однако иногда после отгрузки продукта могут быть обнаружены ошибки в некоторой части графического процессора. Это может быть достаточно неясным, чтобы быть пропущенным при проверке, когда проектировался чип, но может оказаться, что это вызывает некоторое ошибочное или нежелательное поведение (или даже сбои) в конкретной игре, которая поражает его. В этом случае драйвер обнаружит это ошибочное состояние и обойдет его, либо выгрузив некоторые вычисления на сторону ЦП, либо изменив способ подачи данных в графический процессор, чтобы он не входил в это состояние. Они, опять же, будут выпущены в виде обновлений драйверов.
Таким образом, в основном, это не изменение производительности самого оборудования, а просто изменение его использования, чтобы оно могло работать более эффективно и быстро с одним и тем же набором данных.