|
|
Мы предупреждаем: Данная статья является результатом эксперимента и не призывает к
изменению кода драйверов.
|
|
Предисловие.
|
|
В последнее время компании ATi и Nvidia стали производить
видеокарты, нацеленные на рынок профессиональных 3D приложений, таких как 3D-аниматоры (3D Studio MAX,
MAYA, Softimage, LightWave и т.д.), CAD-ы (SolidWorks, SolidEdge, AutoCAD, Pro Engineer и т.д.),
для которых очень важна серьезная реализация API OpenGL. В отличие от 3D Labs эти компании пошли
самым простым путём (а может и самым лучшим) - они используют в своих картах так называемые
игровые чипы. А чтобы простой пользователь не смог легко превратить свою игровую карту в
настоящую профессиональную, эти производители позаботились о защите - смене DeviceID на уровне "железа" (в
чипе или перемычками на плате), и проверкой этого самого DeviceID на уровне драйверов. Ну а раз карты профессиональные, то
цены на них в разы выше по сравнению с их игровыми аналогами. К тому же покупка такой дорогущей
профессиональной карты еще не дает нам гарантию, что наше любимое профессиональное 3D-приложение
будет работать с такой скоростью, какую мы вправе ожидать, вспоминая потраченные на нее деньги.
|
|
Краткая техническая характеристика.
|
|
|
|
ATI Radeon 8500 |
ATI FireGL 8800 |
Чип |
ATI Radeon 8500 (R200) |
ATI Radeon 8800 (R200W) |
Кол-во транзисторов |
60 млн. |
60 млн. |
Тех. процесс |
0.15 микрон |
0.15 микрон |
Частота ядра |
275 |
300 |
Частота памяти |
275 |
300 |
Объем памяти |
64 или 128 Mb |
64 или 128 Mb |
Пропускная способность |
8800 Mb/sec |
9300 Mb/sec |
Макс. филлрейт |
1,000 MПикс/с |
1,100 MПикс/с |
Обрабатыв. треугольников |
70 MTriangles/s |
75 MTriangles/s |
DeviceID |
0x514C |
0x5148 |
Средняя цена |
150 $ |
350 $ |
|
|
|
Как мы можем видить, принципиальной разницы между FireGL и обычным Radeon-ом нет.
Для FireGL используется слегка модифицированный чип R200W, вся модификация которого, похоже, заключается
в присвоении ему ID номера равного 0x5148. Благодаря чему операционная система определяет, подходят ли
профессиональные драйверы FireGL для данной карты, если DeviceID совпадает с указанным или нет, если номер
устройства отличен от 0x5148.
Внимание: не перепрошивайте БИОС от FireGL на свою карту Radeon8500, т.к. нужного
эффекта вы всё равно не получите, потому как DeviceID "зашит" в самом чипе, и драйверы при установке проверяют
именно этот идентификатор, а не зашитый в БИОСе. Правильнее сказать, при инициализации
системы вначале проверяется соответствие DeviceID в ReadOnly регистрах чипа этому же идентификатору,
содержащемуся в PCIR структуре биоса. Т.е. даже если у вас получится зашить чужой биос, карта просто не
проинициализируется и до установки драйверов дело даже не дойдет, да и карту испортить можно (прим.редактора).
|
|
Методика переделки Radeon8500.
|
|
Внимание: Стоит сразу отметить, что в результате переделки вам не придется ни паять, ни как-то физически
воздействовать на видеокарту. По сути дела переделывается не сама видекарта, а драйвера (просто так звучит круче :) ).
Оригинальная методика была предложена нашими зарубежными товарищами под никами KlaasBaas и Albedo с
форума Rage3D и далее развита автором этой статьи.
Для хирургического вмешательства во внутренности драйверов вам понадобятся такие инструменты, как Hiew или
HexWorkShop, UltraEdit Pro. Вы можете вполне обойтись одной программой. Далее будет рассказано как сделать нужные изменения на
примере программы Hiew (можно воспользоваться даже демо-версией). Также вам необходим "пациент" - драйверы для видеокарты FireGL 8800,
которые вы можете найти на сайте ATi. Советую скачивать драйверы версии 3036, как самые последние на данный момент и к тому же
сертифицированные (WHQL). Думаю не надо напоминать, что тем, у кого стоит операционная система Windows XP, необходимы драйверы для
WindowsXP, у кого Windows 2000 - для Windows 2000. Далее я привожу значения для модификации карты как под Windows XP, так и под
Windows 2000, и для разных версий драйверов.
Тот из вас, кто хочет убедиться, что Radeon 8500 может работать как FireGL, советую скачать драйверы
версии 3008. В них нет защиты, поэтому они спокойно инсталлируются на обе карты. Для того чтобы понять почему, достаточно заглянуть
в inf-файла fglrx.inf:
; will be later removed
ATI Fire GL 8800 Video Accelerator=FGLRX,PCI\VEN_1002&DEV_514C&SUBSYS_000A1002
ATI Fire GL 8800 Video Accelerator=FGLRX,PCI\VEN_1002&DEV_514C&SUBSYS_013A1002
ATI Fire GL 8800 Video Accelerator=FGLRX,PCI\VEN_1002&DEV_514C&SUBSYS_010A1002
Особенно интересна фраза "will be later removed", которая значит, что эти строки будут позже удалены.
DEV_514C - обозначает, что эти драйверы также подходят к устройству 0x514C, т.е. Radeon 8500. Впоследствии, программисты ATi выполнили
обещание и убрали эти строки, а заодно сделали защиту в драйверах. Хотя, защита - это слишком громко сказано, просто убрали строки на
проверку присутствия номера 0x514C, оставив номер 0x5148 (FireGL 8800).
Итак, приступим...
Модифицироваться будут только три файла:
• fglrx.inf - информационный файл, управляющий инсталляцией;
• fglrxgl.dll - драйвер OpenGL;
• fglrxm.sys - минипорт драйвер.
Для модификации файла fglrx.inf (любой версии) достаточно внести только одну строку в секцию [ATI.Mfg]
(сделать это вы можете даже с помощью обычного Блокнота):
ATI Fire GL 8800 Video Accelerator=FGLRX,PCI\VEN_1002&DEV_514C
Затем необходимо сделать изменения в следующих двух файлах - fglrxgl.dll и fglrxm.sys.
Таблица модификации для различных версий приведена ниже:
|
|
|
Версия драйвера 3035 (FireGL8800) для Windows 2000 |
fglrxgl.dll |
Адрес |
Старое значение |
Новое значение |
|
000CA448 |
48 |
4C |
fglrxm.sys |
|
|
|
|
00000130 |
F3 |
77 |
|
00041EB0 |
48 |
4C |
|
00041EB2 |
80 |
00 |
|
Версия драйвера 3036 (FireGL8800) для Windows 2000 |
fglrxgl.dll |
Адрес |
Старое значение |
Новое значение |
|
000CA4D8 |
48 |
4C |
fglrxm.sys |
|
|
|
|
00000130 |
5D |
E1 |
|
00000131 |
C0 |
BF |
|
00041FA8 |
48 |
4C |
|
00041FAA |
80 |
00 |
|
Версия драйвера 3036 (FireGL8800) для Windows XP |
fglrxgl.dll |
Адрес |
Старое значение |
Новое значение |
|
000CA7E8 |
48 |
4C |
fglrxm.sys |
|
|
|
|
00000148 |
E6 |
6A |
|
00041020 |
48 |
4C |
|
00041022 |
80 |
00 |
|
|
|
Все значения и адреса приведены в шестнадцатиричной системе счисления.
Прежде всего необходимо распаковать скаченные драйверы, но не устанавливать их.
Затем внести изменения в fglrx.inf в любом текстовом редакторе.
После этого открыть программу Hiew, найти нужный файл для модификации (fglrxgl.dll или fglrxm.sys),
выбрать этот файл (клавиша Enter), перейти в режим HEX (клавиша F4 и выбрать в окне Select Mode - HEX), затем перейти на
определенный адрес (нажимаете клавишу F5 и вводите адрес, затем клавиша Enter), далее отредактировать значение ячейки
(нажимаете клавишу F3 и меняете значение ячейки со старого на новое, т.е. просто вводите то значение, которое указано в
таблице). После этого необходимо сохранить изменения (клавиша F9) и выйти из программы (клавиша ESC).
|
|
Тестирование модифицированного Radeon8500 в SPECviewperf 6.1.2.
|
|
Наконец то мы добрались до самого интересного пункта - тестирования, ради чего, собственно, и было всё затеяно.
В качестве объективного теста был выбран специально разработанный компанией IBM для этих целей тест SPECviewperf, версии 6.1.2
(http://www.spec.org).
Тестовая конфигурация компьютера P3:
|
|
|
CPU : |
Intel Pentium III 1000 EB (133 МГц FSB) |
|
Mainboard : |
Acorp 6A815EPD, чипсет i815 |
|
Memory : |
512Mb PC-133 SEC |
|
HDD : |
Seagate Barracuda IV 40Gb 7200 rpm |
|
Video : |
ATI Radeon 8500 LE 64M DDR (250/275) |
|
OS/soft : |
Win XP, рус, билд 2600; Win2000 Pro, рус, SP2 |
|
|
|
Результаты тестирования приведены в таблице:
|
|
|
Название подтеста из состава SPECviewperf 6.1.2 |
FireGL8800*(3035, Win2000) |
FireGL8800*(3036, Win2000) |
FireGL8800*(3036, WinXP) |
Radeon8500**(6094, Win2000) |
Awadvs-04 (Advanced Visualizer) |
46.26 |
45.56 |
43.56 |
50.23 |
DRV-07 (Design Review) |
14.62 |
14.44 |
12.77 |
-*** |
DX-06 (Data Explorer) |
16.06 |
16.25 |
14.57 |
15.96 |
Light-04 (Lightscape) |
3.496 |
3.786 |
3.496 |
4.278 |
MedMCAD-01 (MCAD composite) |
23.47 |
23.23 |
20.83 |
17.91 |
ProCDRS-03 |
55.00 |
54.83 |
50.77 |
33.80 |
|
|
|
* Здесь под FireGL 8800 подразумевается модифицированный Radeon 8500
** Здесь тест проводился на родных ("игровых") драйверах для Radeon 8500
*** Подтест не был пройден - компьютер завис
Примечание: следует отметить, что результаты подтестов в составе SPECviewperf являются количеством кадров в секунду
(FPS - frames per second).
Интересным является то, что скорость работы тестов под операционной системой Windows2000 выше, чем под WindowsXP, что мы
и видим в таблице. Факт достаточно интересный, но он по крайней мере объясняет, почему производители графических станций, такие как DELL, HP,
IBM, Fujitsu Siemens, ставят исключительно операционную систему Windows2000 на эти машины.
(http://www.spec.org/gpc/opc.data/vp7/summary.html).
При сравнении модифицированного Radeon8500 (FireGL8800) с "игровым" Radeon 8500 следует отметить
значительный рост производительности в таких подтестах как DRV-07, MedMCAD-01, ProCDRS-03.
Следующие ссылки позволяют увидеть результаты тестирования в SPECvoewperf 6.1.2 настоящего FireGL8800:
http://tech.stolica.ru/video/8800vsquadro/index01.htm
http://www.extremetech.com/article2/0,3973,55970,00.asp
http://www.ixbt.com/video/profcard/04-2002/profcards-04-2002-part6.shtml
В качестве сравнения приведу некоторые выдержки из статьи Александра Кондакова:
Тестовая конфигурация компьютера Р4:
|
|
|
CPU : |
Pentium 4 2200 (400 МГц QDR FSB) |
|
Mainboard : |
Abit TH7II, чипсет Intel 850 |
|
Memory : |
512 MБ, PC800 RDRAM |
|
HDD : |
40Gb, ATA100, 7200 rpm |
|
Video : |
ATI FireGL 8800 |
|
OS/soft : |
Win XP, версия драйвера 3026 |
|
|
|
Тестовая конфигурация компьютера AXP:
|
|
|
CPU : |
Athlon XP 2000+ |
|
Mainboard : |
Soltek 75DRV5 (VIA KT333) |
|
Memory : |
512 MB DDR SDRAM PC2700 |
|
HDD : |
40Gb, ATA100, 7200 rpm |
|
Video : |
ATI FireGL 8800 |
|
OS/soft : |
Win XP, версия драйвера 3026 |
|
|
|
Результаты тестирования приведены в таблице:
|
|
|
Название подтеста из состава SPECviewperf 6.1.2 |
P4 |
AXP |
Модифиц. Radeon8500 (3036, Win2000) |
Awadvs-04 (Advanced Visualizer) |
102.8 |
44.47 |
45.56 |
DRV-07 (Design Review) |
32.25 |
22.76 |
14.44 |
DX-06 (Data Explorer) |
47.16 |
38.17 |
16.25 |
Light-04 (Lightscape) |
11.67 |
9.381 |
3.786 |
MedMCAD-01 (MCAD composite) |
41.61 |
38.01 |
23.23 |
ProCDRS-03 |
68.03 |
68.06 |
54.83 |
|
|
|
В глаза сразу же бросается тот факт, что тесты SPECviewperf хорошо "заточены" под процессор Pentium 4,
использующий набор инструкций SSE2, а также очень любят быструю память. Поэтому уместней всего сравнивать тестовую конфигурацию
P3 с компьютером на базе процессора AMD Athlon XP с поправкой на вдвое большую производительность последнего и более быструю память,
скорость которой играет немалую роль в ряде тестов.
Подводя итог тестированию в профессиональных тестах SPECviewperf, можно сделать вывод, что в результате
модификации Radeon 8500 мы получили действительно почти настоящий FireGL 8800, точнее получили Radeon 8500 с такой же
производительностью в профессиональных приложениях, как у FireGL 8800.
Для пользователей пакета 3D Studio MAX в комплект поставки драйверов FireGL 8800 входит специализированный
драйвер (аналогичный MAXtreme для карты NVIDIA Quadro4). Про тестирование видеокарты ATI FireGL 8800 (а также QuadroDCC, Quadro 4)
в 3D Studio MAX вы можете почитать здесь.
|
|
Тестирование модифицированного Radeon8500 в LightWave 7.5
|
|
Почему я вдруг решил подробней остановиться на пакете LightWave? На это существует несколько причин:
• в последнее время данный пакет набирает популярность среди своих аналогов, таких как 3D Studio MAX, MAYA, Softimage и т.д.
• в "прессе" довольно слабо освещено тестирование видеокарт с использованием этого пакета (единственная
статья существует на
iXBT.com, автором которой является Александр Кондаков).
• сам являюсь поклонником этого 3D-пакета и давно ищу оптимальную видеокарту для него.
Использовались тестовые платформы P3 с модифицированным Radeon 8500, драйвер 3036, P3-game, в которой
видеокарта использовалась с обычными драйверами от Radeon 8500 (6094) и для сравнения P4 с оригинальным FireGL 8800
(выдержки взяты из вышеназванной статьи Александра Кондакова).
Измерения проводились под Windows XP.
Все результаты измеряются количеством кадров в секунду (FPS - frames per second). Замер количества
кадров в секунду осуществляется с помощью плагина Frame Rate Meter, входящего в состав дистрибутива LightWave 7.0 / 7.5.
|
|
|
Название сцены |
P3 |
P4 |
P3-game |
Hummer, textures |
3.74 |
6.5 |
3.96 |
Hummer, wireframe |
10.6 |
17.4 |
10.65 |
MystiTrain, textures |
6.87 |
13.2 |
7.0 |
MystiTrain, wireframe |
14.69 |
29.7 |
14.92 |
B17, textures |
1.25 |
2.6 |
1.35 |
B17, wireframe |
4.26 |
9 |
4.27 |
GoldenGate_Night, textures |
12.82 |
19.6 |
15.58 |
GoldenGate_Night, wireframe |
21.34 |
29.5 |
21.49 |
SpaceColony, textures |
7.71 |
9.6 |
7.87 |
SpaceColony, wireframe |
10.69 |
12.1 |
10.69 |
Blade, textures |
5.26 |
6.3 |
5.27 |
Blade, wireframe |
15.79 |
12.2 |
15.83 |
|
|
|
Интересные результаты получились у "игрового" стенда (использовался Radeon 8500 с драйверами 6094 для WinXP),
они оказались даже немного выше чем у псевдо-FireGL 8800. Думаю, причина в том, что драйвера для FireGL 8800 не оптимизированны
для работы в LightWave. Хотя в конфигурации профайлов (закладка "Configuration") и есть специальный профайл для LightWave, но
если внимательно покопaться в реестре Windows, то никакой оптимизации на самом деле нет.
Довольно неплохие результаты тестового стенда на базе РIII-1000EB по сравнению с P4-2200 вызваны тем, что при
тестировании применялась последняя версия пакета LightWave на момент написания статьи - 7.5. А в статье Александра Кондакова
использовался LightWave только 7-ой версии. По данным от компании NewTek в последней версии LightWave'а (7.5) была существенно
оптимизирована OpenGL прорисовка. Но даже эта оптимизация не смогла опровергнуть утверждение А. Кондакова о том, что в данном
3D-пакете основная нагрузка приходится на центральный процессор, что мы можем наблюдать по таблице. Превосходство P4-2200 над
PIII-1000 в среднем составляет примерно на 70-90%.
|
|
Тестирование модифицированного Radeon8500 в играх.
|
|
Первый вопрос, который был мне задан после того, как я показал результаты тестирования модифицированного Radeon8500,
был: "А как же он ведет себя в простых играх?" Поэтому на данном вопросе остановимся поподробней.
В тестировании использовались приложения (игры и тестовые программы) для API D3D и API OpenGL:
• разработанные на базе OpenGL (Quake 3 1.11, Jedi Knight II: Jedi Outcast 1.02a);
• разработанные на основе DirectX 8.1 (3D Mark 2001 SE 330).
Для тестирования использовалась конфигурации P3 и P3-game.
Тестирование в 3D Mark 2001 SE 330
Следует отметить, что на профессиональной платформе 3D Mark 2001 работал нестабильно и несколько раз завис (пришлось перезагружать
компьютер). Для решения этой проблемы из состава драйверов 6094 (для WindowsXP) был взят файл ati3d2ag.dll (который является универсальным
драйвером DirectX), переименован в файл fglrx3d2.dll и помещен в папку Windows\system32 (для этого необходимо загрузится в режиме SafeMode и заменить
старый файл новым). После этого 3D Mark 2001 проработал 38 минут (6 повторений), ни разу не зависнув. Итоговый результат составил 6023 марок.
На полных драйверах для Radeon8500 версии 6094 итоговый балл составлял 6525 "попугаев". Тест запускался в настройках по умолчанию.
|
|
|
|
В принципе неплохо, если учесть, что эта видеокарта уже не предназначена для игрушек :)
Тестирование в Jedi Knight II: Jedi Outcast и Quake 3 1.11
В Jedi Knight II: Jedi Outcast тестирование осуществлялось в разрешении 1024х768х32 при максимальных настройках качества. На модифицированном
Radeon 8500 (псевдо-FireGL 8800) было получено среднее значение равное 50 FPS, на нормальном Radeon 8500 результат теже 50 FPS.
(FPS замерялся через включение cg_drawFPS 1 и проигрыванием демо-файла JK2FFA в мультиплейере).
В течении 30 минутной игры (мультиплейер, 10 ботов, карта Bespin Streets) игра работала стабильно, зависания отсутствовали.
В Quake 3 1.11 использовался тест demo001. Тестирование осуществлялось в разрешении 1024х768х32 при максимальных настройках качества. На модифицированном
Radeon8500 (псевдо-FireGL8800) было получено значение 108.0 FPS. На нормальном Radeon8500 - получено 120.0 FPS.
Следует отметить одну особенность FireGL драйверов - оптимизацию для двух-процессорных систем. Это можно проиллюстрировать на следующем примере.
Игра Quake 3 поддерживает режим SMP путем включения команды r_smp (r_smp 0 - 1-процессорная система, r_smp 1 - 2-х процессорная система).
|
|
|
|
Как видно из графика, наличие второго процессора в Quake3 при использовании драйверов от FireGL 8800 дает прирост в скорости,
незначительный, но все же прирост. А вот с драйверами от Radeon 8500 - результат совершенно обратный - падение скорости почти в 2 раза.
На Radeon 8500 использование команды r_smp x, где x - 1, 2, 3, ..., n приводит к нестабильной работе игры и зависаниям.
А вот включение такой команды под драйверами FireGL 8800 не ведет к зависаниям, и игра работает стабильно.
|
|
Выводы
|
|
В результате модификации Radeon 8500 была получена видеокарта псевдо-FireGL 8800. Употребление приставки "псевдо" правомерно,
т.к. модификация производилась только на уровне драйверов, хотя с другой стороны эти карты отличаются только внешним дизайном, наличием другого
БИОСа у FireGL8800 с повышенными частотами чипа и памяти (которые можно поднять и на обычной Radeon8500), и наличием у FireGL8800 памяти Infenion
в отличии от Hynix на Radeon8500.
После модификации Radeon 8500 все профессиональные 3D-приложения начинают работать абсолютно как на FireGL 8800, что и
подтверждено различными тестами. Как игровая карта псевдо-FireGL 8800 остается почти на таком же уровне, как и Radeon 8500, как в OpenGL-играх,
так и в DirectX-играх.
Особо следует отметить очень высокое качество драйверов для FireGL в 2D. Например, при установленных драйверах 6094 (для
Radeon 8500, WinXP) в программе PaintShopPro 7 выделение (Selection) не рисовалось, а на драйверах 3036 (для FireGL8800, WinXP) таких 2D-глюков не было.
Особенно полезна эта модификация будет для людей, которые хотят попробовать ускоритель FireGL8800, но не могут быть заранее
уверены в том, что он даст нужную производительность или нужное качество в конкретном 3D-приложении.
|
|
|
|
|
|
|
|