Сравнение последних версий Detonator: 28.32 против 29.42

03.07.2002


Введение

Продолжаем следить за эволюцией референс-драйверов Detonator. Мы пока рассматриваем только релизы драйверов, как некие "контрольные точки", по которым, можно судить, в каком направлении оптимизации работает компания. Кроме того, именно релизные версии, мы рекомендуем к установке. Они обычно лишены явных досадных проблем (например, с локализацией интерфейса), чем иногда грешат беты.

Сегодня объектом нашего внимания станет последний релиз 29.42 и его сравнение с предыдущим 28.32.

Direct3D-тесты:

  • 3DMark 2001 SE b.330 1280x1024x32, Overall Score
  • 3DMark 2001 SE b.330 1024x768x32 Game3 Low Detail, Antialiasing modes
  • 3DMark 2001 SE b.330 1280x1024x32, Game3 Low Detail, Anisotropy modes
  • Comanche 4 Demo Benchmark v.1.0.1.18 1280x1024x32
  • Unreal Tournament 2003 Unofficial Demo v.927, all resolutions

OpenGL-тесты:

  • Serious Sam: The Second Encounter Demo v.1.05 1280x1024x32, Anisotropy modes
  • Quake3 Arena v.1.31 1280x1024x32, Anisotropy modes


Image Quality-тесты:
  • Return to Castle Wolfenstein v.1.3
  • Star Wars JK II Jedi Outcast Demo v.1.02a


Система:

Драйверы тестировались на следующем стенде:

Процессор

AMD Duron Spitfire 1000MHz (133FSB)

Материнская плата

Abit KT7A

Оперативная память

256Mb PC133 SDRAM

Жесткий диск

IBM DTLA 305020

Звуковая карта

SB Live! 1024 Value

Видеокарта

Gigabyte GF3200TF (GF3 Ti200 - 200core/460mem)

Операционная система

Windows XP Pro

Direct3D-тесты

3DMark 2001 SE

Скорость

Начнем с результата 3DMark 2001 SE, обобщенного по всем игровым тестам. Разрешение выберем отличное от дефолтного, а именно установим 1280х1024 дабы уменьшить влияние центрального процессора на результат.

Новинка, сразу проиграла около 100 "попугаев". Правда реально это означает лишь проигрыш около 1 fps в каждом игровом тесте. Ниже мы увидем это.

Антиалиасинг

Тестирование режимов антиалиасинга, мы проведем в разрешении 1024х768. Это наиболее тяжелый режим из всех играбельных. От центрального процессора здесь уже мало что зависит, все решает скорость карты (точнее пропускная способность видеопамяти) и оптимизация драйверов.

Все то же небольшое падение. Никаких оптимизаций антиалиасинга по скорости NVIDIA видимо не проводила.

Анизотропная фильтрация

Все то же небольшое падение. Никаких оптимизаций анизотропии по скорости, в Direct3D, NVIDIA видимо тоже не проводила. :)

Comanche 4 Demo Benchmark 1280x1024x32

Демо-версия игры Comanche4, в отличие от самой игры, содержит бенчмарк, на результаты которого, правда, наибольшее влияние оказывает производительность центрального процессора, нежели карты (в разумных пределах конечно). В данном бенчмарке никаких изменений не произошло, оба драйвера показали равную скорость - 22.5fps в 1280х1024х32.

Правда, необходимо отметить, что результаты данного теста, совершенно не отражают скорость самой игры Comanche 4. Игра, при одних и тех же условиях, работает раза в два быстрее, чем данная демо-версия. В этом можно убедиться, сравнив (хотя и грубо, с помощью Fraps) скорость по демo присутствующей в обоих продуктах. Например, предшествующей миссии "Eagles Talon" ("Коготь орла" в версии от 1C/Snowball). Иными словами, к данным результатам тестирования Comanche 4 Demo Benchmark, стоит относиться как к результатам, полученным в неком бенчмарке на движке Comanche 4, а не как к результатам тестирования игры Comanche 4

Unreal Tournament 2003 Demo v.927

Это неофициальное демо демонстрирует нам геймплэй на шести уровнях и имеет встроенный бенчмарк. Мы решили включить его в серию тестов, чтобы читатель мог, во-первых, познакомиться со скоростью работы грядущего хита от Epic, во-вторых, посмотреть на эволюцию скорости драйверов NVIDIA в еще не вышедшей игре. :)

Для начала предлагаем вам познакомиться с парой UT2003-уровней, присутствующими в данной демоверсии. Уровни полностью играбельны, если не считать, очень корявых моделей игроков и их анимации.

Сам же бенчмарк, представляет собой облет камерой уровня DM-Antulas:

Как видно, тест не демонстрирует геймплэй (никакого экшена нет вообще), кроме того он идет не на полный экран, что делает корреляцию полученных результатов с игрой очень натянутой. Тем не менее, за не имением лучшего, сравним поведение Unreal Tournament 2003 Demo v.927 на двух рассматриваемых драйверах. Тестирование мы провели в 32-бит цвете, во всех разрешениях, чтобы изучить зависимость от скорости CPU этого нового теста.

Скорость в тесте лимитировалась исключительно центральным процессором, вплоть до разрешения 1024х768 включительно. Detonator 29.42 продемонстрировал небольшой, но устойчивый прирост во всех разрешениях. Несколько нелепо, в данном тесте, выглядит скорость в 800х600. Она превышает скорость в 640х480 :). И это не погрешность измерения, а устойчиво повторявшийся результат.



OpenGL-тесты

Скорость анизотропной фильтрации

Serious Sam - The Second Encounter

Тестировалась демка "Little Trouble", входящая в демо-версию игры v.1.05. Демка не очень зависит от скорости центрального процессора, тем не менее, будем последовательны и протестируем ее в 1280х1024 (Quality Setting).

Практически никакой разницы. Выигрыш менее чем 1 fps, считать таковым мы не будем. Здесь можно было бы и закончить, подытожив исследование, фразой типа: - "новый детонатор, чуть медленнее старого в 3DMark". Однако есть еще небольшая "ложка меда", которую нельзя обойти вниманием…

Quake3 Arena

Старая версия 1.17 не совсем корректно работает под Windows XP (не работает регулировка гаммы). Мы использовали версию 1.31, с которой … не работает демка "Quaver". :) Способа конвертировать "Quaver 1.17" в "Quaver 1.31" найдено не было, (если кто знает такой способ - пишите!). Пока, для проведения теста, была записана собственная демка "aля-Quaver" (сражение ботов на DM9).

Вот и обещанная "ложка меда". Неплохой прирост скорости анизотропии, в Detonator 29.42 перед 28.32. Видимо, повсеместные упреки NVIDIA в низкой скорости анизотропии их последних чипов возымели свое действие, и компания принялась за оптимизацию этой "фичи" по скорости. Однако, на данном этапе, оптимизация эта, судя по всему, работает только в OpenGL, и только при форсировании анизотропии непосредственно через драйвер. Для OpenGL-приложений, умеющих самостоятельно активировать анизотропию (например, протестированный выше Serious Sam SE), драйвер использует прежний, "неоптимизированный" алгоритм анизотропной фильтрации.



Image Quality тесты

Качество анизотропной фильтрации

Переходим к качеству анизотропии, ибо интересно узнать, бесплатен ли рассмотренный выше "мед", или нет. Мы внимательно изучили две игры, откликающиеся на форсирование анизотропии: - "Return to Castle Wolfenstein" и "Star Wars JK II Jedi Outcast Demo". Устанавливалась анизотропия "Level 8", снимались скриншоты в различных игровых ситуациях и внимательно сравнивались. Предлагаем сделать это и вам:

Return to Castle Wolfenstein

Detonator 28.32

Detonator 29.42

Никакой очевидной деградации качества у новых драйверов обнаружить не удалось, даже переключаясь между скринами. Фрагменты, в масштабе 1:1, не приводятся, ибо акцентировать внимание просто не на чем. Попробуйте найти разницу сами, открыв полноразмерные скриншоты.

Star Wars JK II Jedi Outcast Demo

Detonator 28.32

Detonator 29.42

 

В игре Jedi Outcast же, мы уже заметили разницу. Если на первой паре скринов ее нет, то на второй, очевидна потеря четкости некоторых удаленных текстур. Обратите внимание на "смазывание" вертикальных линий, на текстуре удаленной стены, при форсировании анизотропии через новый драйвер.

В итоге мы имеем значительное преимущество в скорости анизотропии, у Detonator 29.42 против бескомпромиссного ее качества у Detonator 28.32. Каждый из этих подходов мог бы породить своих сторонников и противников и вызвать массу споров, о преимуществах того или иного метода оптимизации анизотропной фильтрации. Следовательно, и споров о преимуществах одного драйвера над другим. Однако последняя версия утилиты RivaTuner RC11, всех примиряет, предлагая удобное управление методами оптимизации анизотропной фильтрации, условно названными как "Performance" и "Quality".

Каждый может выбрать тот метод, который считает оптимальным для себя или своей системы.

Сравнение методов оптимизации анизотропной фильтрации Detonator 29.42, показало, что преимущество в скорости анизотропии, этой версии драйвера, над драйвером 28.32, лежит полностью "на совести" этой самой оптимизации. После переключения анизотропии Detonator 29.42, с дефолтного режима "Performance Optimization", в режим "Quality Optimization", скорость (и качество графики), этого драйвера, стала полностью соответствовать Detonator 28.32, использующего "Quality-режим" по умолчанию (другого у него просто нет).


Ну а как же Serious Sam?...

Теперь постараемся ответить на вопрос, почему же мы не видим оптимизации анизотропии по скорости в приложениях, управляющих ей самостоятельно. Для этого проанализируем обработчик ключа AnisoQuality (именно он и позволяет управлять быстрой анизотропией) драйвера 29.42 и попытаемся понять как и в каких случаях работает алгоритм оптимизации. По первонанальным результатам бенчмарков мы сделали предположение, что при использовании быстрой анизотропии драйвер несколько упрощает алгоритм фильтрации в режиме мультитекстурирования, причём упрощения делаются только на некоторых текстурах, фильтруемых вторым TMU (собственно, это Вы можете прочитать в контекстной помощи к настройке, управляющей алгоритмом оптимизации анизотропной фильтрации в RivaTuner). Более глубокий анализ кода драйвера подтвердил эту гипотезу.

Обработчик ключа AnisoQuality, драйвера 29.42, выглядит следующим образом:

     mov ecx, [edx+1Ch]
     mov ebp, [esi+ebx*8+7D4Ch]
     xor ebp, ecx
     and ebp, 1FFFh
     xor ebp, ecx
     test ebx, ebx
     mov [edx+1Ch], ebp
     mov ebp, [edx+28h]
     jz short SkipAnistropyOptimization
     cmp dword ptr [esi+0E128h], 0
     jz short SkipAnistropyOptimization
     cmp byte ptr [edx+78h], 1
     jnz short SkipAnistropyOptimization
     cmp byte ptr [edi+0FEh], 0
     jz short SkipAnistropyOptimization
     cmp dword ptr [eax+g_dwAnisoQuality], 0
     jnz short SkipAnistropyOptimization
     test byte ptr [eax+g_dwQuadroCapabilities], 40h
     jnz short SkipAnistropyOptimization
     and ebp, 0FFFFFFCFh
     SkipAnisotropyOptimization:

Как видно из кода, помимо самого значения AnisoQuality, драйвер проверяет ещё 4 дополнительных условия и маскирует два бита какого-то внутреннего управляющего регистра, если все условия выполняются.

Анализ данного кода позволил сделать следующие выводы:

1. Финальная маскировка двух бит в управляющем регистре - это полное отключение анизотропии, т.е. алгоритм оптимизации не снижает степень анизотропии/LOD для некоторых текстур, а игнорирует анизотропию вообще. Проверялось это блокированием всех проверок кроме предпоследней (значение AnisoQuality). В этом случае, AF полностью отключается при AnisoQuality равном нулю.

2. Первое условие (test ebx, ebx), проверяет индекс текущего текстурника. Т.е. эффект от быстрой анизотропии виден только при мультитекстурировании и только на текстурах, фильтруемых вторым (третьим, четвёртым) текстурниками. Это значит, что есть потенциал и для дальнейшего увеличения скорости анизотропии, путем задействования оптимизации на текстурах, фильтруемых первым текстурником.

3. Очень интересно третье условие. Это проверка флага дефолтной степени анизотропии в контексте каждой текстуры.
Поясним: при создании текстуры OpenGL-драйвер инициализирует её дефолтную степень анизотропии значением из реестра (управляемым RivaTuner или панелью настроек драйвера) и устанавливает этот флаг в 1. При установке степени анизотропии текстуры через GL_TEXTURE_MAX_ANISOTROPY_EXT этот флаг сбрасывается.
Проверка эта введена для того, чтобы помешать использованию быстрой анизотропии в тех приложениях, которые устанавливают степень анизотропии самостоятельно.

4. Последняя проверка запрещает использование быстрой анизотропии на Quadro-картах.

Итак, мы видим, что сама NVIDIA поставила использование драйвером оптимизации анизотропной фильтрации в жесткую зависимость от выполнения этих условий и есть перспектива не только задействования "быстрой" анизотропии в приложениях управляющих ею самостоятельно, но и дальнейшее увеличение производительности во всех OpenGL-приложениях (см. условие 2).

Вывод

Detonator 29.42 по проведенным Direct3D-тестам, показал в среднем скорость аналогичную предшественнику. У первого наблюдался небольшой прирост в Unreal Tournament 2003 Demo v.927, равенство в Comanche 4 Demo Benchmark и небольшое отставание, в игровых тестах 3DMark 2001. Ничего особенного, но охотникам за каждым попугаем, в 3DMark 2001, Detonator 29.42 может не понравиться. :)

Скорость и качество антиалиасинга не претерпели никаких изменений.

В проведенных же тестах OpenGL никакой значительной разницы между драйверами замечено не было. Преимуществом последнего творения NVIDIA является оптимизация скорости анизотропии, в OpenGL при ее форсировании. Важно, что возможность эта отключаемая, что и позволяет назвать ее наличие преимуществом, а не просто сомнительным увеличением стаи "анизотропных попугаев" в ущерб их качеству.

Будем, надеется, что NVIDIA продолжит свои поиски в направлении оптимизации анизотропии по скорости, и впереди нас ждет быстрая анизотропия и в приложениях управляющих ее режимами самостоятельно (например Serious Sam) и, наконец, в Direct3D-приложениях.

Впрочем, стоит заметить, что вопрос: - "давать или не давать пользователям быструю анизотропию в OpenGL-приложениях, управляющих ее активацией самостоятельно", уже не находится в компетенции NVIDIA. Если они не сделают этого сами, соответствующие патчи будут включены в RivaTuner.



Андрей Дерябин a.k.a. andser (andser@nvworld.ru)

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


Обсудить/дополнить в конференции