(почти по Маршаку)
Для начала, настоятельно рекомендуем прочитать аналитическую статью, посвященную архитектуре и спецификациям RADEON 9700 (R300)
СОДЕРЖАНИЕ
- Общие сведения
- Теоретические аспекты реализации анитиалиасинга и анизотропной фильтрации
- Особенности видеокарты ATI RADEON 9700 Pro 128MB
- Конфигурации тестовых стендов и особенности настроек драйверов
- Результаты тестов: коротко о 2D, предельные из DirectX 8.1 SDK и синтетические (на базе DirectX 9.0) тесты
- Результаты тестов: Синтетические тесты 3DMark2001 SE
- Результаты тестов: Игровые тесты 3DMark2001 SE
- Результаты тестов: Quake3 ARENA
- Результаты тестов: Serious Sam: The Second Encounter
- Результаты тестов: Return to Castle Wolfenstein
- Результаты тестов: Code Creatures DEMO
- Результаты тестов: Comanche4 DEMO
- Результаты тестов: Unreal Tournament 2003 DEMO
- Результаты тестов: AquaMark
- Результаты тестов: RightMark 3D
- Качество 3D: Анизотропная фильтрация
- Качество 3D: Анти-алиасинг
- Качество 3D в целом
- Выводы
В этом обзоре, мы не будем повторно описывать архитектуру или спецификации чипа RADEON 9700 (известного также под кодовым названием R300), а займемся подробным практическим исследованием его возможностей и аспектов производительности. На данный момент, линейка карт на базе различных вариантов R300 выглядит следующим образом:
- RADEON 9700 PRO — 325 МГц чип, 128 Мбайт 310 МГц (DDR 620) 256 бит локальной памяти;
- RADEON 9700 — 300 МГц чип, 128 Мбайт 300 МГц (DDR 600) 256 бит локальной памяти;
- RADEON 9500 — урезанный до 4-х конвейеров чип, 128 бит локальная память;
Мы будем исследовать старшую и единственную доступную на данный момент карту линейки — RADEON 9700 PRO. Впервые тестирование производительности и возможностей чипа проводится на DirectX 9 (бета 2). Прежде, чем приступить к практическим тестам производительности, приведем список возможностей DX9, поддерживаемых картой на данный момент (в скобках приведены оценки конкретных значений параметров):
- Размер текстур — до 2048x2048 (стандартно)
- Возможны неквадратные текстуры (хорошо)
- Максимальное число источников света — 8 (стандартно)
- Число текстурных стадий — 8 (отлично)
- Число комбинационных стадий — 8 (стандартно)
- Число плоскостей отсечения — 6 (отлично)
- Максимальный размер спрайтов — 256 (отлично)
- Максимальное число примитивов за один вызов — 65535 (спорно)
- Размер вершинного буфера — 16777215 (отлично)
- Максимальное число потоков вершин — 16 (отлично)
- Максимальная версия вершинных шейдеров — 1.1 (непорядок)
- Число констант вершинного шейдера — 256 (отлично)
- Максимальная версия пиксельных шейдеров — 1.4 (непорядок)
- Максимальное значение пиксельного шейдера — 3.40282E+038 (максимально число для плавающего F32 формата, отлично)
- Режимы мультисамплинга: нет, 2, 4, 6 отсчетов (только в режиме X8R8G8B8, в режиме кадрового буфера с альфа каналом A8R8G8B8 мультисамплинг недоступен).
- Форматы итогового буфера (хорошо):
- D3DFMT_A8R8G8B8
- D3DFMT_X8R8G8B8
- D3DFMT_R5G6B5
- D3DFMT_A1R5G5B5
- D3DFMT_A4R4G4B4
- Форматы буфера глубины (хорошо):
- D3DFMT_D16_LOCKABLE
- D3DFMT_D24S8
- D3DFMT_D24X8
- D3DFMT_D16
- Форматы текстур (странно):
- D3DFMT_A8R8G8B8
- D3DFMT_X8R8G8B8
- D3DFMT_R5G6B5
- D3DFMT_X1R5G5B5
- D3DFMT_A1R5G5B5
- D3DFMT_A4R4G4B4
- D3DFMT_R3G3B2
- D3DFMT_L8
- D3DFMT_V8U8
- D3DFMT_L6V5U5
- D3DFMT_X8L8V8U8
- D3DFMT_Q8W8V8U8
- D3DFMT_V16U16
- D3DFMT_UYVY
- D3DFMT_YUY2
- Форматы кубических текстур (нормально):
- D3DFMT_A8R8G8B8
- D3DFMT_X8R8G8B8
- D3DFMT_R5G6B5
- D3DFMT_X1R5G5B5
- D3DFMT_A1R5G5B5
- D3DFMT_A4R4G4B4
- D3DFMT_R3G3B2
- D3DFMT_L8
- D3DFMT_UYVY
- D3DFMT_YUY2
- Форматы объемных текстур (нормально):
- D3DFMT_A8R8G8B8
- D3DFMT_X8R8G8B8
- D3DFMT_R5G6B5
- D3DFMT_X1R5G5B5
- D3DFMT_A1R5G5B5
- D3DFMT_A4R4G4B4
- D3DFMT_R3G3B2
- D3DFMT_L8
- D3DFMT_UYVY
- D3DFMT_YUY2
- D3DPTFILTERCAPS_MINFPOINT
- D3DPTFILTERCAPS_MINFLINEAR
- D3DPTFILTERCAPS_MINFANISOTROPIC
- D3DPTFILTERCAPS_MIPFPOINT
- D3DPTFILTERCAPS_MIPFLINEAR
- D3DPTFILTERCAPS_MAGFPOINT
- D3DPTFILTERCAPS_MAGFLINEAR
- D3DPTFILTERCAPS_MAGFANISOTROPIC
- Режимы фильтрации кубических текстур (хорошо):
- D3DPTFILTERCAPS_MINFPOINT
- D3DPTFILTERCAPS_MINFLINEAR
- D3DPTFILTERCAPS_MIPFPOINT
- D3DPTFILTERCAPS_MIPFLINEAR
- D3DPTFILTERCAPS_MAGFPOINT
- D3DPTFILTERCAPS_MAGFLINEAR
- Режимы фильтрации объемных текстур (хорошо):
- D3DPTFILTERCAPS_MINFPOINT
- D3DPTFILTERCAPS_MINFLINEAR
- D3DPTFILTERCAPS_MIPFPOINT
- D3DPTFILTERCAPS_MIPFLINEAR
- D3DPTFILTERCAPS_MAGFPOINT
- D3DPTFILTERCAPS_MAGFLINEAR
Искушенный читатель сразу отметит, что никакого DX9 мы здесь не наблюдаем. Дело в том, что доступные на данный момент драйверы содержат лишь старый DDI8 (Direct Driver Interface 8) интерфейс для драйверов и по определению не могут предлагать выходящих за рамки DX8 возможностей. Только с появлением у нас DDI9 драйвера (судя по всему, ATI сможет предоставить его кому-либо только тогда, когда Microsoft закончит вносить изменения в DX9 и даст соответствующее разрешение) мы сможем проверить новые возможности чипа, пока же нам придется ограничиться подробным исследованием хорошо знакомых. Несмотря на то, что DX9 работает с такими драйверами без потери скорости (результаты приложений отличаются от DX8 в пределах погрешности) нам недоступны самые интересные новый возможности RADEON 9700 PRO — вторые версии пиксельных и вершинных шейдеров или плавающие форматы текстур и буфера кадров. С другой стороны, ничего не мешает нам подробно исследовать производительность и реализацию АА, анизотропной фильтрации и просто предельные характеристики чипа, такие как скорость закраски или производительность геометрического блока.
Отметим, также, что из-за раннего драйвера (или особенностей работы DX9 с DDI8) в списке поддерживаемых текстур отсутствуют какие-либо сжатые форматы.
Приведем список доступных на данный момент OpenGL расширений и версию OpenGL ICD:
ATI, Radeon 9700 x86/SSE2, version 1.3.3259 | NVIDIA, GeForce4 Ti 4600/AGP/SSE2, version 1.3.1 | ATI, Radeon 8500 DDR x86/SSE2, version 1.3.2475 |
---|---|---|
GL_ARB_depth_texture | GL_ARB_imaging | GL_ARB_multitexture |
GL_ARB_multitexture | GL_ARB_multisample | GL_ARB_texture_border_clamp |
GL_ARB_point_parameters | GL_ARB_multitexture | GL_ARB_texture_compression |
GL_ARB_shadow | GL_ARB_texture_border_clamp | GL_ARB_texture_cube_map |
GL_ARB_shadow_ambient | GL_ARB_texture_compression | GL_ARB_texture_env_add |
GL_ARB_texture_border_clamp | GL_ARB_texture_cube_map | GL_ARB_texture_env_combine |
GL_ARB_texture_compression | GL_ARB_texture_env_add | GL_ARB_texture_env_crossbar |
GL_ARB_texture_cube_map | GL_ARB_texture_env_combine | GL_ARB_texture_env_dot3 |
GL_ARB_texture_env_add | GL_ARB_texture_env_dot3 | GL_ARB_transpose_matrix |
GL_ARB_texture_env_combine | GL_ARB_transpose_matrix | GL_ARB_vertex_blend |
GL_ARB_texture_env_crossbar | GL_S3_s3tc | GL_ARB_window_pos |
GL_ARB_texture_env_dot3 | GL_EXT_abgr | GL_S3_s3tc |
GL_ARB_transpose_matrix | GL_EXT_bgra | GL_ATI_element_array |
GL_ARB_vertex_blend | GL_EXT_blend_color | GL_ATI_envmap_bumpmap |
GL_ARB_vertex_program | GL_EXT_blend_minmax | GL_ATI_fragment_shader |
GL_ARB_window_pos | GL_EXT_blend_subtract | GL_ATI_map_object_buffer |
GL_S3_s3tc | GL_EXT_compiled_vertex_array | GL_ATI_pn_triangles |
GL_ATI_element_array | GL_EXT_separate_specular_color | GL_ATI_texture_mirror_once |
GL_ATI_envmap_bumpmap | GL_EXT_fog_coord | GL_ATI_vertex_array_object |
GL_ATI_fragment_shader | GL_EXT_multi_draw_arrays | GL_ATI_vertex_streams |
GL_ATI_map_object_buffer | GL_EXT_packed_pixels | GL_ATIX_texture_env_combine3 |
GL_ATI_separate_stencil | GL_EXT_paletted_texture | GL_ATIX_texture_env_route |
GL_ATI_texture_mirror_once | GL_EXT_point_parameters | GL_ATIX_vertex_shader_output_point_size |
GL_ATI_vertex_array_object | GL_EXT_rescale_normal | GL_EXT_abgr |
GL_ATI_vertex_streams | GL_EXT_clip_volume_hint | GL_EXT_bgra |
GL_ATIX_texture_env_route | GL_EXT_draw_range_elements | GL_EXT_blend_color |
GL_ATIX_vertex_shader_output_point_size | GL_EXT_shared_texture_palette | GL_EXT_blend_func_separate |
GL_EXT_abgr | GL_EXT_stencil_wrap | GL_EXT_blend_minmax |
GL_EXT_bgra | GL_EXT_texture3D | GL_EXT_blend_subtract |
GL_EXT_blend_color | GL_EXT_texture_compression_s3tc | GL_EXT_clip_volume_hint |
GL_EXT_blend_func_separate | GL_EXT_texture_edge_clamp | GL_EXT_compiled_vertex_array |
GL_EXT_blend_minmax | GL_EXT_texture_env_add | GL_EXT_draw_range_elements |
GL_EXT_blend_subtract | GL_EXT_texture_env_combine | GL_EXT_fog_coord |
GL_EXT_clip_volume_hint | GL_EXT_texture_env_dot3 | GL_EXT_packed_pixels |
GL_EXT_compiled_vertex_array | GL_EXT_texture_cube_map | GL_EXT_point_parameters |
GL_EXT_draw_range_elements | GL_EXT_texture_filter_anisotropic | GL_ARB_point_parameters |
GL_EXT_fog_coord | GL_EXT_texture_lod | GL_EXT_rescale_normal |
GL_EXT_packed_pixels | GL_EXT_texture_lod_bias | GL_EXT_secondary_color |
GL_EXT_point_parameters | GL_EXT_texture_object | GL_EXT_separate_specular_color |
GL_EXT_rescale_normal | GL_EXT_vertex_array | GL_EXT_stencil_wrap |
GL_EXT_secondary_color | GL_EXT_vertex_weighting | GL_EXT_texgen_reflection |
GL_EXT_separate_specular_color | GL_HP_occlusion_test | GL_EXT_texture_env_add |
GL_EXT_stencil_wrap | GL_IBM_texture_mirrored_repeat | GL_EXT_texture3D |
GL_EXT_texgen_reflection | GL_KTX_buffer_region | GL_EXT_texture_compression_s3tc |
GL_EXT_texture_env_add | GL_NV_blend_square | GL_EXT_texture_cube_map |
GL_EXT_texture3D | GL_NV_copy_depth_to_color | GL_EXT_texture_edge_clamp |
GL_EXT_texture_compression_s3tc | GL_NV_evaluators | GL_EXT_texture_env_combine |
GL_EXT_texture_cube_map | GL_NV_fence | GL_EXT_texture_env_dot3 |
GL_EXT_texture_edge_clamp | GL_NV_fog_distance | GL_EXT_texture_lod_bias |
GL_EXT_texture_env_combine | GL_NV_light_max_exponent | GL_EXT_texture_filter_anisotropic |
GL_EXT_texture_env_dot3 | GL_NV_multisample_filter_hint | GL_EXT_texture_object |
GL_EXT_texture_filter_anisotropic | GL_NV_occlusion_query | GL_EXT_vertex_array |
GL_EXT_texture_lod_bias | GL_NV_packed_depth_stencil | GL_EXT_vertex_shader |
GL_EXT_texture_object | GL_NV_point_sprite | GL_KTX_buffer_region |
GL_EXT_vertex_array | GL_NV_register_combiners | GL_NV_texgen_reflection |
GL_EXT_vertex_shader | GL_NV_register_combiners2 | GL_NV_blend_square |
GL_HP_occlusion_test | GL_NV_texgen_reflection | GL_SGI_texture_edge_clamp |
GL_KTX_buffer_region | GL_NV_texture_compression_vtc | GL_SGIS_texture_border_clamp |
GL_NV_texgen_reflection | GL_NV_texture_env_combine4 | GL_SGIS_texture_lod |
GL_NV_blend_square | GL_NV_texture_rectangle | GL_SGIS_generate_mipmap |
GL_SGI_texture_edge_clamp | GL_NV_texture_shader | GL_SGIS_multitexture |
GL_SGIS_texture_border_clamp | GL_NV_texture_shader2 | GL_WIN_swap_hint |
GL_SGIS_texture_lod | GL_NV_texture_shader3 | WGL_EXT_extensions_string |
GL_SGIS_generate_mipmap | GL_NV_vertex_array_range | WGL_EXT_swap_control |
GL_SGIS_multitexture | GL_NV_vertex_array_range2 | - |
GL_WIN_swap_hint | GL_NV_vertex_program | - |
WGL_EXT_extensions_string | GL_NV_vertex_program1_1 | - |
WGL_EXT_swap_control | GL_SGIS_generate_mipmap | - |
GL_ARB_multisample | GL_SGIS_multitexture | - |
- | GL_SGIS_texture_lod | - |
- | GL_SGIX_depth_texture | - |
- | GL_SGIX_shadow | - |
- | GL_WIN_swap_hint | - |
- | WGL_EXT_swap_control | - |
Теоретические аспекты реализации анитиалиасинга и анизотропной фильтрации
В отличие от предыдущего чипа, в R300 исправлена вызвавшая множество нареканий особенность реализации анизотропии на основе RIP-маппинга — теперь ей не страшен поворот вокруг оси Z. Вне зависимости от угла наклона плоскости относительно этой оси, анизотропия работает как положено. Интересно, что, вопреки большинству мнений, эта особенность не была недостатком самой методики RIP маппинга, а лишь конкретной особенностью его конкретной реализации в предыдущих чипах ATI. Впрочем, за более корректную реализацию, которую мы наблюдаем теперь в R300, придется заплатить несколько увеличившимся падением производительности (впрочем, далее мы подробно исследуем этот вопрос).
AA тоже претерпел изменения. Как и раньше, выбирается одна из псевдослучайных хаотических масок с двумя, четырьмя или шестью семплами (главное отличие от NVIDIA, где маска хоть и зависит от метода сглаживания, но всегда одинакова). Но, на этот раз, семплы выбираются методом мультисамплинга, как и в чипах NVIDIA. Следует ожидать, что скорость закраски самих полигонов существенно возрастет, на их краях ситуация (внешняя) останется прежней, но, потенциально, края под прозрачными полигонами будут обрабатываться неверно. Чтож, это расплата за повышенную скорость АА. Далее мы подробно исследуем скорость и качество АА на практике.
А теперь, как обычно перед анализом результатов тестирования, мы рассмотрим непосредственно саму карту. Плата
Карта снабжена интерфейсом AGP x4/x8, 128 МБ локальной памяти DDR SDRAM (восемь микросхем, размещенных на лицевой и оборотной сторонах PCB).
![]() | ![]() |
На карте установлены микросхемы памяти Samsung марки K4D26323RA-GC2A, форм-фактора BGA. Максимальная частота работы — 350 (700) МГц, поэтому можно сделать вывод, что время выборки 2,8 нс, а не 2,2, как было указано ранее в некоторых обзорах. По умолчанию память работает на частоте 310 (620) МГц | ![]() |
Микросхемы памяти в новой BGA-упаковке уже стали весьма популярными среди производителей видеокарт, и мы не станем лишний раз рссказывать о преимуществах использования микросхем в таких корпусах.
ATI RADEON 9700 Pro 128MB | |
---|---|
![]() | ![]() |
Перед нами карта весьма обычного, на первый взгляд, дизайна. Разумеется, наличие 256-битной высокоскоростной шины не может не привести к усложнению PCB. Но, если на платах от Matrox и 3Dlabs мы видели наличие большого экрана, предохраняющего от наводок, то здесь он имеется только в левой части PCB:
А основная часть PCB, где расположены микросхемы памяти и чип, не защищена никаким экранированием:
Интересной особенностью карты является обязательное внешнее питание. В комплект поставки входит переходник-разветвитель, позволяющий без проблем подключить к плате стандартный "хвост" от блока питания:
Карта снабжена обычным набором интерфейсных разъемов: VGA, DVI и TV-out (S-Video). Для подключения TV-out через RCA в комплект поставки входит соответствующий переходник.
Если рассматривать PCB дальше, мы заметим, что правая ее часть очень похожа на RADEON 8500, особенно в плане расположения микросхем памяти. А вот радиатор на чипе — довольно большого размера, что традициям ATI несвойственно :-).
Хотя, в данном случае, это вынужденная мера, поскольку GPU (вернее, VPU, отвыкаем от старых названий :-) очень сильно греется (сказывается огромное число транзисторов при частоте 325 МГц и технологии .15 микрон). Кстати, обратите внимание на форму упаковки самого процессора:
Как мы видим, FCPGA корпусовка процессоров с перевернутым открытым кристаллом дошла и до графических чипов. В статье про Matrox Parhelia я удивлялся размерам корпуса, хотя понятно, что в случае оной сверху примерно такого же по размеру чипа установлена теплоотводящая металлическая крышка, а здесь ее нет. В наличии огромное число выводов (все же 256-битная шина).
На этом рассмотрение самой карты мы заканчиваем. Сразу скажу, что вас ожидает вторая часть материала по RADEON 9700 Pro, в котором мы подробно рассмотрим особенности работы карты при выводе на два монитора и TV-out (в рамках данного материала, по причине небольшого времени на исследование карты мы не успеваем это проанализировать. К тому же, во второй части читатели смогут ознакомиться с работой AGP8x).
Заглянем в коробку, где вместе с картой можно найти:
два диска с ПО (драйверы, MMC 7.8 и др.) и маркетинговыми материалами, переходник S-Video-to-RCA весьма непривычного маленького размера (без кабеля), переходник DVI-to-d-Sub.
А вот и сама коробка, в которой будут продаваться платы RADEON 9700 PRO:
Обратите внимание на надпись в правом нижнем углу. Известно, что на Quakecon'2002 такие карты показывали только в специально привезенных системных блоках, не говоря уж про то, что обещанные подарочные наборы за $450 (куда входит RADEON 9700 Pro, сувениры, невышедшая еще игра DOOM III — ее обешали бесплатно прислать позже — и пульт ДУ от ATI) вовсе не продавались, а лишь принимались заказы на них (многие участники мероприятия были очень разочарованы таким обманом).
Разгон
Когда мы только начали исследовать работу карты на штатных частотах, то пришли к выводу, что при таком нагреве наверняка разгон будет почти невозможен. А он оказался возможен! И даже очень! Последняя версия (3.21) PowerStrip уже умеет работать с RADEON 9700.
ATI RADEON 9700 Pro 128MB | 325/620 -> 350/700 MHz |
---|
По правде говоря, чип смог работать и на 370 МГц, но никаких приростов относительно 350 МГц в обычных режимах работы карты (без АА и/или анизотропии) мы уже не обнаружили, После анонса материала мы еще раз прогнали карту на 370 МГц, но под максимальной нагрузкой и убедились, что стабильность работы имеется. Поэтому на диаграммах ниже мы приводим эти результаты (полоски имеют "кирпичную" раскраску). Мы видим, что, несмотря на огромную сложность процессора и его высокий температурный режим, потенциал разгона имеется. Не последнюю роль сыграла здесь FCPGA корпусовка. Кроме того, мы не можем и отрицать возможности того, что для сэмплов компания ATI отбирала самые лучшие чипы. Напомним, что
- при разгоне обязательным условием является наличие дополнительного охлаждения, в частности, обдувающего карту (прежде всего, ее память) вентилятора:
- разгон любой карты зависит от конкретного экземпляра, и поэтому нельзя обобщать вышеприведенные возможности повышения частот на все видеокарты этой марки и даже серии. Показатели разгона мы приводим только как интересное явление; они ни в коей мере не входят в состав обязательных характеристик видеокарты.
Установка и драйверы
Рассмотрим конфигурацию тестового стенда, на котором проводились испытания карт:
- Компьютер на базе Pentium 4 (Socket 478):
- процессор Intel Pentium 4 2200 (L2=512K);
- системная плата ASUS P4T-E (i850);
- оперативная память 512 MB RDRAM PC800;
- жесткий диск Quantum FB AS 20GB;
- операционная система Windows XP.
На стенде использовались мониторы ViewSonic P810 (21") и ViewSonic P817 (21"). Тестирование на другом стенде на базе AMD Athlon XP мы проведем во второй части материала, к тому же, там будет исследование работы карты на AGP8x (на базе VIA KT400).
При тестировании применялись драйверы от ATI версии 6.143 (отмечу, что этот драйвер предназначен только для карт серии RADEON 9***, поддержки карт прежнего выпуска нет. Нет пока?) VSync отключен, компрессия текстур отключена. Установлен DirectX 9.0 beta2.
Для сравнительного анализа приведены результаты уже знакомых читателям видеокарт:
- ASUS V8460Ultra (GeForce4 Ti 4600, 300/325 (650) МГц, 128 МБ, driver 30.82);
- Matrox Parhelia (220/275 (550) МГц, 128 МБ, driver 2.31);
- Gigabyte MAYA AP128DG-H RADEON 8500 Deluxe (275/275 (550) МГц, 128 МБ, driver 6.118).





Отметим сразу, что на сегодня выпущены только драйверы DirectX 8! Выход драйверов DirectX 9.0 ожидается только в октябре. Что касается настроек управления, то они почти стандартны для всей новой серии драйверов CATALYST, за исключением настроек работы RADEON 9700 в части анти-алиасинга (SmoothVision II) и анизотропии. Как мы видим, у анизотропной фильтрации есть возможность выбора режима ее работы (кроме уровней): производительность/качество. Ниже мы рассмотрим, чем же режимы отличаются (вкратце скажу, что возможностью/невозможностью функционирования трилинейной фильтрации совместно с анизотропией).
Что касается АА, то, как уже говорилось, наконец-то мы видим упорядочивание этой функции. Вместо кучи мало кому понятных режимов производительность/качество совместно с уровнями АА, мы видим три режима 2х, 4х и 6х. Что избавляет пользователя от того, чтобы ломать голову над выбором. Ниже мы рассмотрим работу самых интересных режимов 4х и 6х.
На этом рассмотрение особенностей драйверов мы заканчиваем.