Внутреннее исследование драйверов Detonator 22.ХХ

09.11.2001


Итак…

...разобравшись c RivaTuner 2.0 RC8, я решил потратить немного времени на внутреннее исследование новой серии драйверов Detonator 22.ХХ. Я не буду повторять многочисленную информацию, уже публиковавшуюся в Сети, и предоставлю Вам некоторые интересные (на мой взгляд) факты, которые мне удалось раздобыть. Думаю Вам они также будут интересны.

SoftQuadro antiprotection

Я получил огромное количество писем с вопросами о том, каким образом установить SoftQuadro на драйвера серии 22.xx. Очень многие спрашивали почему скрипт SoftQuadro antiprotection не работает на новых драйверах. Для того, чтобы разобраться с причиной его неработоспособности, я заглянул в исходники новых драйверов и был очень удивлён результатом: из OpenGL драйвера просто исчез код, подвешивающий систему при установке SoftQuadro. Так что для того, чтобы установить SoftQuadro на драйвера серии 22.xx, скрипт SoftQuado antipotection не нужен.

Вероятно NVIDIA просто решили прекратить эту бессмысленную гонку и сконцентрировать своё внимание на чём-то более полезном. Ели это действительно так, и о защите просто элементарно не забыли, то я снимаю перед ними шляпу. Люди, умеющие признать свою ошибку, вызывают у меня уважение. Я бы посоветовал им подойти к этой проблеме с другой стороны, и перенести защиту на уровень выше - в специализированное программное обеспечение, за которое владельцы реальных Quadro действительно платят деньги (например, в MAXtreme).

Cтереошутки

Могу обрадовать любителей стерео - похоже, что NVIDIA работает в данный момент над стерео драйвером для Windows2000/XP. В новой серии Detonator'ов появилось множество ключей реестра, предназначенных для настройки и форсирования стерео режимов в Direct3D и OpenGL приложениях. Напомню, что ранее такая возможность присутствовала только в драйверах Detonator 10.xx и старше для Windows 9x. К сожалению, мне пока не удалось активизировать работу стерео ни в одной версии драйверов серии 22.xx. Выяснилось, что помимо стандартного StereoEnable, драйвер запрашивает ещё пять ключей с очень интересными русскими именами, написанными латиницей: CTEPEO1, CTEPEO2, CTEPEO3, CTEPEO4 и CTEPEO5. Сомневающиеся сами могут убедиться в этом, сделав поиск этих стрингов в файле nv4_disp.dll в кодировке unicode. К сожалению, при добавлении в реестр этих ключей, операционная система радостно демонстрирует BSOD при переключении в полноэкранный режим. Этот факт наводит на следующие мысли:

  • Поддержка стерео в 22.xx ещё в очень зачаточном состоянии и возможность её включения просто попытались спрятать подальше.
  • Программисты из NVIDIA решили немного поиздеваться над русскими любителями reverse engeneering'a.
Русские ключи в Detonator 22.XX

Стереоочками я, к сожалению, не пользуюсь, поэтому проводить дальнейшее исследование и разбирать алгоритмы обработки данных ключей я не стал. Желающие могут сделать это сами.

Новое в Панели Управления (nvcpl.dll)

Незначительных изменения (и, к сожалению, ошибки) появились в nvcpl.dll.

Во-первых, панель настроек под Windows9x наконец таки научилась нормально включать анизотропную фильтрацию. Теперь эта опция вынесена из общего списка и помещена в отдельный combo box. К сожалению, как показывает практика, изменение списка OpenGL настроек в NVIDIA'вской панели настроек традиционно приводит к рассинхронизации опций и соответствующих им ключей реестра. Похоже что программисты просто забывают переиндексировать опции в списке, и при удалении какого-либо элемента "съезжают" индексы у всех последующих элементов. Эта ошибка проявилась в Detonator 10.xx: после удаления из панели настроек драйвера так называемой альтернативной Z-буфферизации. После этого опция отключения расширенных инструкций ЦП "съехала" на место своего предшественника, и стала использовать четвёртый бит ключа RenderQualityFlags. В новых драйверах после удаления опции включения анизотропной фильтрации опция отключения расширенных инструкций ЦП опять "съехала", в это раз уже на первый бит RenderQualityFlags (именно этот бит и отвечал раньше за форсирование анизотропной фильтрации).

Во-вторых, немного изменился внешний вид панели настроек. Начиная с версии 22.80 изменился логотип в главной закладке, а в панели настроек под Windows XP появился manifest для новой comctl32.dll. Благодаря этому панель настроек теперь использует стилизованные под XP элементы управления.

В третьих, похоже, полным ходом идут работы над новой панелью управления AGP (особо пытливые пользователи уже могли обнаружить её в ресурсах nvcpl.dll). Если в предыдущих версиях эта панель присутствовала только в виде ресурсов, то в 22.xx появился ключ OverrideAGPMCmd. Насколько я понимаю, именно эток ключ и регулирует глубину очереди команд AGP. К сожалению, этот ключ появился пока только в ядре драйвера. Панель настроек о нём пока ничего не знает, так что, похоже, кода для неё ещё нет. Однако работы в этом направлении ведутся, и это не может не радовать.

Заключение

Думаю, что это не все интересные вещи, что ожидают нас в ближайшее время, ведь впереди новые версии драйверов, их дальнейшая "заточка" под WinXP и выход nForce. Я постараюсь оперативно менять RivaTuner и выдавать Вам, уважаемые читатели, "интересности" из жизни Detonator'ов.

Удачи!



Алексей Николайчук a.k.a. Unwinder (AlexUnwinder@mail.ru)

Линки по теме: