Главная Продукция Статьи Тесты FAQ Downloads Форум Ссылки

 ATi Radeon 8500. Catalyst 2.3 с драйвером OpenGL от Fire GL 8800.

      Эта статья является фактически продолжением или дополнением к "Переделка 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":
GLClock (размер: 31кб) Unreal Tournament 2003
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_multitextureGL_ARB_multitexture
GL_ARB_point_parametersGL_ARB_point_parameters
GL_ARB_texture_border_clampGL_ARB_texture_border_clamp
GL_ARB_texture_compressionGL_ARB_texture_compression
GL_ARB_texture_cube_mapGL_ARB_texture_cube_map
GL_ARB_texture_env_addGL_ARB_texture_env_add
GL_ARB_texture_env_combineGL_ARB_texture_env_combine
GL_ARB_texture_env_crossbarGL_ARB_texture_env_crossbar
GL_ARB_texture_env_dot3GL_ARB_texture_env_dot3
GL_ARB_transpose_matrixGL_ARB_transpose_matrix
--- GL_ARB_texture_mirrored_repeat
GL_ARB_vertex_blendGL_ARB_vertex_blend
GL_ARB_window_posGL_ARB_window_pos
GL_ATI_element_arrayGL_ATI_element_array
GL_ATI_envmap_bumpmapGL_ATI_envmap_bumpmap
GL_ATI_fragment_shaderGL_ATI_fragment_shader
GL_ATI_pn_trianglesGL_ATI_pn_triangles
 GL_ATI_map_object_buffer
GL_ATI_texture_mirror_onceGL_ATI_texture_mirror_once
GL_ATI_vertex_array_objectGL_ATI_vertex_array_object
GL_ATI_vertex_streamsGL_ATI_vertex_streams
GL_ATIX_texture_env_combine3GL_ATIX_texture_env_combine3
GL_ATIX_texture_env_routeGL_ATIX_texture_env_route
GL_ATIX_vertex_shader_output_point_sizeGL_ATIX_vertex_shader_output_point_size
GL_EXT_abgrGL_EXT_abgr
GL_EXT_bgraGL_EXT_bgra
GL_EXT_blend_colorGL_EXT_blend_color
GL_EXT_blend_func_separateGL_EXT_blend_func_separate
GL_EXT_blend_minmaxGL_EXT_blend_minmax
GL_EXT_blend_subtractGL_EXT_blend_subtract
GL_EXT_clip_volume_hintGL_EXT_clip_volume_hint
GL_EXT_compiled_vertex_arrayGL_EXT_compiled_vertex_array
GL_EXT_draw_range_elementsGL_EXT_draw_range_elements
GL_EXT_fog_coordGL_EXT_fog_coord
GL_EXT_multi_draw_arrays ---
GL_EXT_packed_pixelsGL_EXT_packed_pixels
GL_EXT_point_parametersGL_EXT_point_parameters
GL_EXT_polygon_offset ---
GL_EXT_rescale_normalGL_EXT_rescale_normal
GL_EXT_secondary_colorGL_EXT_secondary_color
GL_EXT_separate_specular_colorGL_EXT_separate_specular_color
GL_EXT_texgen_reflectionGL_EXT_texgen_reflection
GL_EXT_texture_compression_s3tcGL_EXT_texture_compression_s3tc
GL_EXT_texture_cube_mapGL_EXT_texture_cube_map
GL_EXT_texture_edge_clampGL_EXT_texture_edge_clamp
GL_EXT_texture_env_addGL_EXT_texture_env_add
GL_EXT_texture_env_combineGL_EXT_texture_env_combine
GL_EXT_texture_env_dot3GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropicGL_EXT_texture_filter_anisotropic
GL_EXT_texture_lod_biasGL_EXT_texture_lod_bias
GL_EXT_texture_objectGL_EXT_texture_object
GL_EXT_texture3DGL_EXT_texture3D
GL_EXT_vertex_arrayGL_EXT_vertex_array
GL_EXT_vertex_shaderGL_EXT_vertex_shader
GL_HP_occlusion_testGL_HP_occlusion_test
GL_KTX_buffer_regionGL_KTX_buffer_region
GL_NV_blend_squareGL_NV_blend_square
GL_NV_texgen_reflectionGL_NV_texgen_reflection
GL_S3_s3tcGL_S3_s3tc
GL_SGI_texture_edge_clampGL_SGI_texture_edge_clamp
GL_SGIS_generate_mipmapGL_SGIS_generate_mipmap
GL_SGIS_multitextureGL_SGIS_multitexture
GL_SGIS_texture_border_clampGL_SGIS_texture_border_clamp
GL_SGIS_texture_lodGL_SGIS_texture_lod
GL_SUN_multi_draw_arrays ---
GL_WIN_swap_hintGL_WIN_swap_hint
WGL_EXT_extensions_stringWGL_EXT_extensions_string
WGL_EXT_swap_controlWGL_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.dll000CAE88484C
  • Драйверы для 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)
GL Excess v1.1a Сцены (размер 9.2 кб)
Эта табличка поможет разобраться, что именно тестируется в конкретной сцене:

Тест Сцена
FILLRATE1,9,12
POLYGON COUNT3,5,6
VRAM4,10,11
CPU/FPU2,7,8
GL Excess v1.1a Результаты (размер 6.6 кб)
      Согласно показателям, скорость заполнения и работа с видеопамятью у (3036) несколько выше, чем у (6166), хоть и не во всех тестах. Что это, хорошая оптимизация? Вполне может быть, зато посмотрите как "сливает" (3036) в сценах с большим количеством полигонов. Такое впечатление, что блок TCL здесь вообще не работает.
GL Excess v1.1a Итоги (размер 4 кб)
Creater3D's TestOpenGL (размер 6.5 кб)
      Еще один интересный тест. Здесь мы видим обратную картину. (3036) лидирует везде, причем с колоссальным отрывом.
      Ну а теперь посмотрим игровые приложения:
      Quake III Arena Point Release 1.31 (все на max, мультитекстурирование, S3TC-off, AF-16x, demo checkpoint)
Quake III Arena (размер 4 кб)
      Тут комментарии, на мой взгляд, излишни, Catalyst изначально "заточен" под игры.
      Serios Sam (v.1.05) (режим quality, мультитекстурирование, S3TC-off, AF-16x, demo DemoMP02)
Serious Sam (размер 5 кб)
      По среднему количеству fps (6166) лидирует, но сморите, какие всплески можно увидеть у (3036) на пиковых значениях.
      Serios Sam 2 (v.1.05) (режим quality, мультитекстурирование, S3TC-off, AF-16x, demo Grand Cathedral)
Serious Sam 2 (размер 4.4 кб)
      Здесь преимущество (6166) более стабильное...
      AquaMark v2.0 Benchmark (Texture - 40Mb, PixelShaders - Yes, AF-16x)
AquaMark V2.0 (размер 4.6 кб)
      В этом тесте снова можно наблюдать "всплески" max значений.
      MDK2 (1024x768*32, все на max, AF-16x)
MDK2 (размер 3.8 кб)
      Игрушка старенькая, но приятная..:)
  Выводы
      Результаты тестов показали, что "модифицированный" драйвер OpenGL (3036), предназначенный для FireGL 8800, может запросто существовать в тесном сотрудничестве с драйверами для Radeon 8500, и при этом даже приносить пользу. Тестирование в профессиональных 3D приложениях не проводилось, но могу сказать в целом, что артефакты в "3DS Max 4" замечены не были, а работать в "LightWave 7.0" стало на много приятнее :))
LightWave 7.0 (6166) (размер 5.1 кб)
LightWave 7.0 (6166)
LightWave 7.0 (6166) (размер 5.1 кб)
LightWave 7.0 (3036)
      В итоге, мы находим неплохое компромиссное решение. Как говориться и "И волки сыты и овцы целы". Надеюсь, что данная информация будет кому-то полезна
      В качестве эпилога хочу выразить признательность Владиславу Гребневу и всей команде Radeon2.ru за техподдержку.
12.10.2002 Валентин Сергеев (aka Styler)
На главную страницу

 Главная  Продукция  Статьи  Тесты  FAQ  Downloads  Форум  Ссылки
Логотипы, торговые марки и прочие зарегистрированные знаки принадлежат компании ATI Technologies
Copyright © 2001 - 2002

Пишите нам

  Rambler's Top100 Rambler's Top100