|
|
Эта статья является фактически продолжением или дополнением к "Переделка
Radeon 8500 в FireGL 8800". Чтобы понять, о чем здесь будет говориться, настоятельно рекомендую ознакомиться с указанным выше материалом.
|
|
Предисловие |
|
После выхода вышеупомянутой статьи наверняка большинство пытливых пользователей пробовали поставить драйвер от FireGL 8800 в надежде на улучшение качества картинки и повышение скорости рендеринга в 3D приложениях.
Еще бы, кто не хочет, купив игровую видеокарту, иметь при этом скорость и качество как у профессионального ускорителя. Наверно не ошибусь, предположив, что среди пользователей Radeon 8500 есть и такие, кто использует свою видеокарту не только в играх, но и в 3D моделировании.
Именно для них драйвер от FGL8800 принесет особую пользу, так как судя по тестам, он показывает неплохие результаты в тех приложениях, для которых он собственно и предназначен (3DS Max, CAD'ы и пр.). Но так ли все хорошо, как кажется? После беглого взгляда на закладки настоек видеокарты,
становиться ясно, что без ползаний по реестру не обойтись, все что имеет пользователь это закладка гамма коррекции и панелька, где можно настроить драйвер OpenGL под конкретное приложение. Для тех кто не любит regedit, советую воспользоваться утилитой Rage3D, которая реально поддерживает твикинг FireGL 8800,
впрочем, даже после детальной настройки D3D/OpenGL можно наткнуться на неприятные явления в виде багов и "вылета" из приложений. К примеру, мне так и не удалось запустить WarCraft3 и ElastoMania.
А вот какую печальную картину можно увидеть в "UT2003 Demo"(OpenGL) и небольшом тесте "OpenGL clock":
|
|
|
|
OpenGL clock (OpenGL) | UT2003 Demo (OpenGL) |
|
|
Кроме проблем с 3D приложениями, есть еще одна неприятная "сторона медали" у данного драйвера - отсутствие возможностей вывода картинки на телевизор. В виду того, что у FireGL 8800 разъем S-VIDEO на плате просто отсутствует, а вместе с ним и чип RageTheater, понятное дело, что поддержкой TV-OUT придется пожертвовать :(. |
|
В поисках компромисса |
|
Драйвер от профессиональной видеокарты это конечно хорошо, но что же делать, если хочется нормально поиграться, посмотреть кино на телевизоре с использованием TheaterMode и при этом иметь адаптированный драйвер под системы 3D моделирования? Выход, оказывается, существует. Экспериментальным путем было выяснено, что модифицированный OpenGL драйвер (3036) от
FireGL 8800 прекрасно работает вместе с драйвером Catalyst 2.3 (6116), и при этом использует настройки OpenGL как свои собственные. Возможность работы комбинаций более старых драйверов не проверялось, но можно сказать с большой долей уверенности, что эти комбинации так же будут работать. Впрочем давайте обо всем по порядку:
Итак, для начала заглянем в дистрибутив драйвера 3036, и выясним, какие файлы отвечают за работу OpenGL.
fglrxgl.dll |
драйвер OpenGL. (Собственно сам объект, вызвавший у нас интерес. В Catalyst 2.3 (6166) эту же функцию выполняет файл atioglxx.dll). После детального изучения высняется, что список экспортируемых драйверами функций, практически одинаковый, за исключением 2-х дополнительных: atiPPHSN() и atiPS(), которые имеются в atioglxx.dll и отсутствуют в fglrxgl.dll. |
fglrxogl.drv
fglrxog4.drv |
драйверы для 3D Studio Max. |
В "нагрузку" поставляются следующие файлы и утилиты, без которых можно свободно обойтись:
frxmxins.exe |
Инсталлятор установки драйвера OpenGL под 3D Studio Max |
fglrxdel.exe |
Утилита для удаления драйвера OpenGL под 3D Studio Max |
frxhapp.exe |
Утилита поддержки работы на 2-х мониторах |
frxhser.exe |
Сервисная утилита |
Теперь посмотрим, есть ли различия в расширениях OpenGL:
ATI Technologies Inc.
Fire GL8800 DDR Pentium III (SSE) 01.03.3036 (fglrxgl.dll) |
ATI Technologies Inc. Radeon 8500 DDR x86/SSE 1.3.3302 Win2000 Release (atioglxx.dll) |
GL_ARB_multitexture | GL_ARB_multitexture |
GL_ARB_point_parameters | GL_ARB_point_parameters |
GL_ARB_texture_border_clamp | GL_ARB_texture_border_clamp |
GL_ARB_texture_compression | GL_ARB_texture_compression |
GL_ARB_texture_cube_map | GL_ARB_texture_cube_map |
GL_ARB_texture_env_add | GL_ARB_texture_env_add |
GL_ARB_texture_env_combine | GL_ARB_texture_env_combine |
GL_ARB_texture_env_crossbar | GL_ARB_texture_env_crossbar |
GL_ARB_texture_env_dot3 | GL_ARB_texture_env_dot3 |
GL_ARB_transpose_matrix | GL_ARB_transpose_matrix |
--- |
GL_ARB_texture_mirrored_repeat |
GL_ARB_vertex_blend | GL_ARB_vertex_blend |
GL_ARB_window_pos | GL_ARB_window_pos |
GL_ATI_element_array | GL_ATI_element_array |
GL_ATI_envmap_bumpmap | GL_ATI_envmap_bumpmap |
GL_ATI_fragment_shader | GL_ATI_fragment_shader |
GL_ATI_pn_triangles | GL_ATI_pn_triangles |
| GL_ATI_map_object_buffer |
GL_ATI_texture_mirror_once | GL_ATI_texture_mirror_once |
GL_ATI_vertex_array_object | GL_ATI_vertex_array_object |
GL_ATI_vertex_streams | GL_ATI_vertex_streams |
GL_ATIX_texture_env_combine3 | GL_ATIX_texture_env_combine3 |
GL_ATIX_texture_env_route | GL_ATIX_texture_env_route |
GL_ATIX_vertex_shader_output_point_size | GL_ATIX_vertex_shader_output_point_size |
GL_EXT_abgr | GL_EXT_abgr |
GL_EXT_bgra | GL_EXT_bgra |
GL_EXT_blend_color | GL_EXT_blend_color |
GL_EXT_blend_func_separate | GL_EXT_blend_func_separate |
GL_EXT_blend_minmax | GL_EXT_blend_minmax |
GL_EXT_blend_subtract | GL_EXT_blend_subtract |
GL_EXT_clip_volume_hint | GL_EXT_clip_volume_hint |
GL_EXT_compiled_vertex_array | GL_EXT_compiled_vertex_array |
GL_EXT_draw_range_elements | GL_EXT_draw_range_elements |
GL_EXT_fog_coord | GL_EXT_fog_coord |
GL_EXT_multi_draw_arrays |
--- |
GL_EXT_packed_pixels | GL_EXT_packed_pixels |
GL_EXT_point_parameters | GL_EXT_point_parameters |
GL_EXT_polygon_offset |
--- |
GL_EXT_rescale_normal | GL_EXT_rescale_normal |
GL_EXT_secondary_color | GL_EXT_secondary_color |
GL_EXT_separate_specular_color | GL_EXT_separate_specular_color |
GL_EXT_texgen_reflection | GL_EXT_texgen_reflection |
GL_EXT_texture_compression_s3tc | GL_EXT_texture_compression_s3tc |
GL_EXT_texture_cube_map | GL_EXT_texture_cube_map |
GL_EXT_texture_edge_clamp | GL_EXT_texture_edge_clamp |
GL_EXT_texture_env_add | GL_EXT_texture_env_add |
GL_EXT_texture_env_combine | GL_EXT_texture_env_combine |
GL_EXT_texture_env_dot3 | GL_EXT_texture_env_dot3 |
GL_EXT_texture_filter_anisotropic | GL_EXT_texture_filter_anisotropic |
GL_EXT_texture_lod_bias | GL_EXT_texture_lod_bias |
GL_EXT_texture_object | GL_EXT_texture_object |
GL_EXT_texture3D | GL_EXT_texture3D |
GL_EXT_vertex_array | GL_EXT_vertex_array |
GL_EXT_vertex_shader | GL_EXT_vertex_shader |
GL_HP_occlusion_test | GL_HP_occlusion_test |
GL_KTX_buffer_region | GL_KTX_buffer_region |
GL_NV_blend_square | GL_NV_blend_square |
GL_NV_texgen_reflection | GL_NV_texgen_reflection |
GL_S3_s3tc | GL_S3_s3tc |
GL_SGI_texture_edge_clamp | GL_SGI_texture_edge_clamp |
GL_SGIS_generate_mipmap | GL_SGIS_generate_mipmap |
GL_SGIS_multitexture | GL_SGIS_multitexture |
GL_SGIS_texture_border_clamp | GL_SGIS_texture_border_clamp |
GL_SGIS_texture_lod | GL_SGIS_texture_lod |
GL_SUN_multi_draw_arrays |
--- |
GL_WIN_swap_hint | GL_WIN_swap_hint |
WGL_EXT_extensions_string | WGL_EXT_extensions_string |
WGL_EXT_swap_control | WGL_EXT_swap_control |
Из приведенной таблицы мы можем увидеть, что разница все же имеется. Каждый драйвер поддерживает еще и "свои" расширения, отсутствующие у "конкурента".
3036 (fglrxgl.dll) |
GL_EXT_multi_draw_arrays/GL_SUN_multi_draw_arrays
GL_EXT_polygon_offset |
6166 (atioglxx.dll) |
GL_ARB_texture_mirrored_repeat GL_ATI_map_object_buffer |
Если не вдаваться в подробности, то расширения Catalyst 2.3 имеют более свежие спецификации OpenGL 1.3, чем имеющиеся у драйвера (3036), который приспособлен больше под 3D моделирование. Как это будет сказываться в играх? Если честно на этот вопрос я не готов ответить, хотя частично за меня скажут тесты...
|
|
Установка драйвера |
|
Из приведенной таблицы мы можем увидеть, что разница все же имеется. Каждый драйвер поддерживает еще и "свои" расширения, отсутствующие у "конкурента".
Чтобы не копаться в реестре, я написал небольшую утилиту, которая дает возможность быстро переключаться между драйверами OpenGL (Radeon 8500/FireGL 8800). Все что требуется, это предварительно скопировать файл fglrxgl.dll в системный каталог Winnt\System32\, а затем, запустив программку, выставить нужный драйвер.
|
|
Скачать можно здесь |
|
Не забудьте предварительно сделать изменения в драйвере (3036), иначе система ответит вам руганью при попытке запустить любое OpenGL приложение: |
|
|
|
Тем, кто использует 3D Studio Max необходимо скопировать из дистрибутива драйвера файл fglrxog4.drv (v.4.0) или fglrxogl.drv для более поздней версии и выставить
его в настройках программы. Хочу сразу заметить, что данные драйверы можно использовать в паре как с OpenGL (6166), так и (3036); хотя в первом случае у меня возникал пару раз синий экран смерти во время выхода из программы.
В итоге, после небольшого шаманства все OpenGL приложения будут послушно определять драйвер как "ATI Technologies
Inc. Fire GL8800 DDR Pentium III (SSE) 01.03.3036" и работать с ним как с родным. |
|
Примечание... Новый драйвер (3046) для ускорителей FireGL 8x00. |
|
Совсем недавно появилась новая версия драйвера (3046) для серии ускорителей FireGL 8x00, но в связи с тем, что статья была уже написана, тестирование с новой версией не проводилось. Для тех, кто захочет узнать его производительность может самостоятельно протестировать на своей системе, я же просто привожу информацию о том как заставить его работать.
|
|
Итак, на этот раз ATi "защитила" файлы из дистрибутива от простого редактирования, большенство из них упаковано с помощью MS COMPRESS 5.0 Format, который довольно популярен у разработчиков драйверов. Сжатые файлы можно легко определить, их расширения имеют вид filename.xx_.
|
|
Инструкция по установке:. |
|
- Распаковать все в отдельную папку;
- "Убить" все, кроме fglrxgl.dl_, и драйверов для 3DS Max (fglrxog4.dr_, fglrxog5.dr_, fglrxogl.dr_);
- Для распаковки нам понадобиться утилитка Expand.exe, имеющаяся в дистрибутиве Win2000:
EXPAND -r SourceFile (для примера: Expand.exe -r fglrxgl.dl_);
- Используя данные из таблицы, корректируем OpenGL драйвер
(Версия драйвера 3046 (FireGL8800) для Win2000):
Файл | Адрес | Старое значение | Новое значение |
fglrxgl.dll | 000CAE88 | 48 | 4C |
|
- Драйверы для 3DS Max применять соответственно версии студии как было описано выше. Кстати, теперь спарка fglrxog4.drv и atioglxx.dll не работает, для нормальной эксплуатации необходимо использовать только fglrxgl.dll
|
|
Тестирование: |
|
Давайте теперь посмотрим на работу
"нового" OpenGL драйвера в конкретных приложениях и сравним
скорость его работы с версией (6166) из Catalyst 2.3.
Ниже приводиться тестовая конфигурация компьютера:
CPU: | Celeron Tualatin 1,2Ghz |
MB: | ChainTech-6OJA3T(i815EP-B) |
Memory: | 256Mb (PC-100) |
Video: | ATi Radeon 8500 (128Mb) Retail (275/275) |
Sound: | Creative SBLive! Player 5.1 |
HDD: | IBM 20 Gb IC35L020AVER07 (ATA-100) 7200rpm |
OS / Drivers: | Win 2000 (En/Build 2195)+SP3 |
Начнем, пожалуй, с тестов, чтобы увидеть сильные и слабые стороны и как говорят американцы: "Test the differ".
|
|
GL Excess v1.1a (1024x768*32, music-off, sound-off, AF-16x)
|
|
|
|
Эта табличка поможет разобраться, что именно тестируется в конкретной сцене:
Тест |
Сцена |
FILLRATE | 1,9,12 |
POLYGON COUNT | 3,5,6 |
VRAM | 4,10,11 |
CPU/FPU | 2,7,8 |
|
|
|
|
|
Согласно показателям, скорость заполнения и работа с видеопамятью у (3036) несколько выше, чем у (6166), хоть и не во всех тестах. Что это, хорошая оптимизация? Вполне может быть, зато посмотрите как "сливает" (3036) в сценах с большим количеством полигонов. Такое впечатление, что блок TCL здесь вообще не работает.
|
|
|
|
|
|
Еще один интересный тест. Здесь мы видим обратную картину. (3036) лидирует везде, причем с колоссальным отрывом.
|
|
Ну а теперь посмотрим игровые приложения:
|
|
Quake III Arena Point Release 1.31 (все на max, мультитекстурирование, S3TC-off, AF-16x, demo checkpoint)
|
|
|
|
Тут комментарии, на мой взгляд, излишни, Catalyst изначально "заточен" под игры.
|
|
Serios Sam (v.1.05) (режим quality, мультитекстурирование, S3TC-off, AF-16x, demo DemoMP02)
|
|
|
|
По среднему количеству fps (6166) лидирует, но сморите, какие всплески можно увидеть у (3036) на пиковых значениях.
|
|
Serios Sam 2 (v.1.05) (режим quality, мультитекстурирование, S3TC-off, AF-16x, demo Grand Cathedral)
|
|
|
|
Здесь преимущество (6166) более стабильное...
|
|
AquaMark v2.0 Benchmark (Texture - 40Mb, PixelShaders - Yes, AF-16x)
|
|
|
|
В этом тесте снова можно наблюдать "всплески" max значений.
|
|
MDK2 (1024x768*32, все на max, AF-16x)
|
|
|
|
Игрушка старенькая, но приятная..:)
|
|
Выводы |
|
Результаты тестов показали, что "модифицированный" драйвер OpenGL (3036), предназначенный для FireGL 8800, может запросто существовать в тесном сотрудничестве с драйверами для Radeon 8500, и при этом даже приносить пользу. Тестирование в профессиональных 3D приложениях не проводилось, но могу сказать в целом, что артефакты в "3DS Max 4" замечены не были, а работать в "LightWave 7.0" стало на много приятнее :))
|
|
LightWave 7.0 (6166) |
LightWave 7.0 (3036) |
|
|
В итоге, мы находим неплохое компромиссное решение. Как говориться и "И волки сыты и овцы целы".
Надеюсь, что данная информация будет кому-то полезна
|
|
В качестве эпилога хочу выразить признательность Владиславу Гребневу и всей команде Radeon2.ru за техподдержку.
|
|
|
|
|
|
|
|