Сравнение последних версий Detonator: 28.32 против 29.42 | 03.07.2002 |
ВведениеПродолжаем следить за эволюцией референс-драйверов Detonator. Мы пока рассматриваем только релизы драйверов, как некие "контрольные точки", по которым, можно судить, в каком направлении оптимизации работает компания. Кроме того, именно релизные версии, мы рекомендуем к установке. Они обычно лишены явных досадных проблем (например, с локализацией интерфейса), чем иногда грешат беты.
OpenGL-тесты:
Image Quality-тесты:
Система:Драйверы тестировались на следующем стенде:
Direct3D-тесты3DMark 2001 SE Скорость Новинка, сразу проиграла около 100 "попугаев". Правда реально это означает лишь проигрыш около 1 fps в каждом игровом тесте. Ниже мы увидем это. Антиалиасинг Все то же небольшое падение. Никаких оптимизаций антиалиасинга по скорости NVIDIA видимо не проводила. Анизотропная фильтрация Все то же небольшое падение. Никаких оптимизаций анизотропии по скорости, в Direct3D, NVIDIA видимо тоже не проводила. :) Comanche 4 Demo Benchmark 1280x1024x32Демо-версия игры Comanche4, в отличие от самой игры, содержит бенчмарк, на результаты которого, правда, наибольшее влияние оказывает производительность центрального процессора, нежели карты (в разумных пределах конечно). В данном бенчмарке никаких изменений не произошло, оба драйвера показали равную скорость - 22.5fps в 1280х1024х32. Unreal Tournament 2003 Demo v.927Это неофициальное демо демонстрирует нам геймплэй на шести уровнях и имеет встроенный бенчмарк. Мы решили включить его в серию тестов, чтобы читатель мог, во-первых, познакомиться со скоростью работы грядущего хита от Epic, во-вторых, посмотреть на эволюцию скорости драйверов NVIDIA в еще не вышедшей игре. :)
Сам же бенчмарк, представляет собой облет камерой уровня 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 Практически никакой разницы. Выигрыш менее чем 1 fps, считать таковым мы не будем. Здесь можно было бы и закончить, подытожив исследование, фразой типа: - "новый детонатор, чуть медленнее старого в 3DMark". Однако есть еще небольшая "ложка меда", которую нельзя обойти вниманием… Quake3 Arena Вот и обещанная "ложка меда". Неплохой прирост скорости анизотропии, в 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", снимались скриншоты в различных игровых ситуациях и внимательно сравнивались. Предлагаем сделать это и вам:
Никакой очевидной деградации качества у новых драйверов обнаружить не удалось, даже переключаясь между скринами. Фрагменты, в масштабе 1:1, не приводятся, ибо акцентировать внимание просто не на чем. Попробуйте найти разницу сами, открыв полноразмерные скриншоты.
В игре Jedi Outcast же, мы уже заметили разницу. Если на первой паре скринов ее нет, то на второй, очевидна потеря четкости некоторых удаленных текстур. Обратите внимание на "смазывание" вертикальных линий, на текстуре удаленной стены, при форсировании анизотропии через новый драйвер.
Каждый может выбрать тот метод, который считает оптимальным для себя или своей системы. Сравнение методов оптимизации анизотропной фильтрации 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. Очень интересно третье условие. Это проверка флага дефолтной степени анизотропии в контексте каждой текстуры.
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. Если они не сделают этого сами, соответствующие патчи будут включены в RivaTuner. Андрей Дерябин a.k.a. andser (andser@nvworld.ru) Алексей Николайчук a.k.a. Unwinder (AlexUnwinder@mail.ru) |