Опубликовано 23 сентября 2002, 00:33

Решение проблемы с частотой регенерации у видеокарт на базе чипсетов nVidia

Описание способов исключения нежелательных режимов работы видеокарт nVidia из списка доступных режимов.
Решение проблемы с частотой регенерации у видеокарт на базе чипсетов nVidia

Многие счастливые обладатели видеокарт на базе процессоров nVidia GeForce2, GeForce3, GeForce4 и т.п. часто сталкиваются с весьма неприятной неожиданностью: довольно мощная видеокарта, дающая, к примеру, в разрешении 1024х768 частоту вертикальной развертки 85-100 Гц на рабочем столе, при запуске любого 3D-приложения (каковыми, несомненно, являются большинство современных игр) на любом экранном разрешении выдает частоту 60 Гц. И если обладатели 15" мониторов могут не обращать на это внимания, то владельцам мониторов с диагоналями от 17" и выше приходится несладко — на таких мониторах дрожание картинки сводит на нет все радости общения с любимой игрой.

Тут следует сделать оговорку: сказанное выше имеет отношение только к той категории продвинутых пользователей, что установили на свои компьютеры операционные системы Windows 2000 или Windows XP. В силу своих особеностей, в Windows 98 такая проблема отсутствует.

На самом деле так происходит потому, что Windows 98 из всех доступных режимов видеокарты по умолчанию выбирает тот, у которого самая высокая частота развертки (и которую поддерживает ваш монитор). В Windows 2000 и XP наоборот, по умолчанию выбирается наименьшая частота развертки, обычно равная 60 герцам.

Некоторые производители видеокарт (например ASUS) комплектуют драйвера от nVidia своими фирменными утилитами, позволяющими вручную задавать частоту развертки для любых режимов работы видеокарты — в частности Direct3D и OpenGL. Мне же, к примеру, досталась карта от MSI, к которой подобные утилиты не прилагались. Кроме того, если вы решите обновить приложенные в комплекте драйверы Detonator на более свежие (взятые непосредственно с сайта nVidia) — то прикрутить к этому драйверу фирменные утилиты производителя вашей карты (той же ASUS) может быть весьма проблематично.

Можно, конечно же, для решения этой проблемы воспользоваться сторонними утилитами — например nVidia Refresh Fix или PowerStrip, но к моменту написания данной заметки первая из них еще не поддерживала модель моей видеокарты — а поэтому оказалась совершенно бесполезной, а вторая мало того, что оказалась платной, но среди всего многообразия ее менюшек и настроек я так и не смог найти решения своей проблемы.

Как оказалось, решить проблему можно просто подкорректировав файл nv4_disp.inf из набора драйверов Detonator перед тем, как их проинсталлировать, либо подкорректировав один из ключей в реестре после инсталляции.

Если вы еще не установили свежие драйвера Detonator, найдите в инсталляционной директории файл nv4_disp.inf, откройте его в блокноте и найдите секцию NVidia Add registry section. В этой секции содержится перечень видеорежимов, которые Windows должна ИСКЛЮЧИТЬ из списка доступных режимов. Т.е. перечисленные в этом списке режимы в Windows будут недоступны. Все, что нам необходимо — это сделать недоступными все режимы с частотой регенерации, к примеру, менее 85 герц.

В файле nv4_disp.inf, как и в реестре, список режимов выглядит следующим образом:
HKR,, NV**_Modes_Delta, %REG_SZ%, "S 1600,900,-16,120;1600,900,32,100-;1600,1024,-16,120; и т.д., где ** означает номер модели вашей видеокарты.

Так как драйвера Detonator являются универсальными для всего семейства карт nVidia, то таких строчек вы увидите несколько (более 20-ти) — для каждой из моделей. Причем вносить изменения будет необходимо только в одну из них — ту, что описывает модель вашей видеокарты. Если вы не знаете, как обозначается номер модели вашей видеокарты — найдите в файле nv4_disp.inf секцию Localizable Strings (обычно она располагается в самом низу). В этой секции располагается перечень всех поддерживаемых данным драйвером моделей видеокарт, причем слева указывается номер модели, а справа — ее название. Например:
NVidia.Nv15 = «NVIDIA GeForce2 GTS/GeForce2 Pro»
NVidia.Nv17.2 = «NVIDIA GeForce4 MX 440»
NVidia.Nv20.2 = «NVIDIA GeForce3 Ti 500»

Так как мне досталась карточка GeForce4 MX 440, то соответственно, номер ее модели — 17.

Далее, в списке режимов они перечисляются в следующем формате: A, B, C, D; где:
A — разрешение экрана по горизонтали
B — разрешение экрана по вертикали
C — глубина цвета
D — частота регенерации

Т.е. запись вида 1600,900,-16,120 означает, что необходимо исключить из списка доступных режим с разрешением 1600х900, глубиной цвета до 16 бит включительно и частотой регенерации 120 герц.

Теперь, если мы добавим в этот список следующую строку: 640,480,-,-100;800,600,-,-85;1024,768,-,-75; то это будет означать, что при разрешении 640х480 и любой глубине цвета частота регенерации составит не менее 120 герц, при разрешении 800х600 и любой глубине цвета — 100 герц, при разрешении 1024х768 и любой глубине цвета — 85 герц.

Если же вы уже проинсталлировали драйвера видеокарты, запустите REGEDIT и найдите ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video. Внутри этой ветки могут находится несколько подветок, содержащих ключи 0000 и Video. Одна из них в ключе 0000 содержит подключ VolatileSettings — это и есть ваша текущая конфигурация.

Найдите в этой конфигурации ключ с именем NV**_Modes_Delta, и измените его значение так, как было описано выше.

Главное — не забудьте затем перезагрузится. Чтобы проверить, насколько удачно вы все сделали — зайдите в свойства экрана, дополнительные параметры, и просмотрите список всех доступных режимов. Если вы все сделали правильно — то указанные вами режимы в этом списке должны отсутствовать.

Надеюсь, я объяснил все не очень запутанно. Have a nice CS!