Название этой статьи умышленно сформулировано именно так, чтобы кратко, но в то же время полно отражать ее содержание и нести сразу два смысла.
Во-первых, интегрированные с материнской платой графические карты Intel (Intel® Integrated Graphics, IGFX) с Графическим Медиа Акселератором (Graphics Media Accelerator, GMA) занимают значительную часть рынка, причем, Intel развивает и в будущем планирует продолжить развитие этого сегмента своей продукции. Так что, определяя системные требования к вашему разрабатываемому программному продукту, то есть, решая, на каком «железе» он будет выполняться, на интегрированную графику Intel стоит рассчитывать.
Во-вторых, современные интегрированные графические ядра карт Intel, о которых пойдет речь в этой статье, имеют достаточную производительность, чтобы рассчитывать на них графику игровых приложений.
Оба этих утверждения мы постараемся доказать ниже.
Хотя разные источники приводят слегка отличающиеся статистические данные, можно утверждать, что в 2006-2007 годах Intel с долей в сегменте рынка, превышающей 50%, занимает первое место среди производителей интегрированных графических карт для настольных компьютеров, а также лидирует «в общем зачете» производителей интегрированной графики (с учетом мобильных компьютеров) – более 35% доли сегмента рынка по данным Mercury Research*.
При этом, в 2006-2007 годах общие поставки интегрированных графических карт по всему миру для всех производителей примерно в три раза превысили поставки неинтегрированных (дискретных) графических карт. И по прогнозам это соотношение со временем только увеличится, а именно – поставки интегрированных карт вырастут, а дискретных снизятся. Прежде всего, это произойдет за счет увеличения числа мобильных компьютеров, в которых по соображениям геометрических размеров, цены, тепловыделения и энергопотребления обычно нецелесообразно ставить отдельную графическую карту.
Что означают эти цифры? Что даже если на каждый PC со встроенным видеоадаптером была дополнительно поставлена дискретная графическая карта (что маловероятно), то 2/3 современных компьютеров остаются только со встроенной графикой. Если же дискретные карты ставятся исключительно на компьютеры без интегрированного видеоадаптера, то доля компьютеров только со встроенной графикой возрастает до ¾ общего числа всех PC.
Давайте посмотрим, какие чипсеты Intel представлены на рынке, и каковы их характеристики. Мы не будем упоминать уже давно выпускаемые и хорошо известные чипсеты 945G и 945GM – они основаны на графическом ядре предыдущего поколения –GMA950, в то время как абсолютное большинство современных чипсетов Intel базируется на графических ядрах нового поколения - семейства GMA 3x00.
В таблице ниже приведены сравнительные «высокоуровневые» характеристики работы с 3D-графикой ядер GMA 3x00 и модели базирующихся на них чипсетов.
| Графическое Ядро | Intel® GMA 3000 | Intel® GMA 3100 | Intel® GMA X3000 | Intel® GMA X3100 | Intel® GMA X3500 |
| Intel® Chipset | 946GZ, Q963, Q965 | G31, G33, Q33, Q35 | G965 | GM965, GL960 | G35 |
| Видео память | До 256 MB | До 256 MB | До 384 MB | До 384 MB | До 384 MB |
| Поддержка DirectX* | DirectX* 9.0c | DirectX* 9.0c | DirectX* 9.0c | DirectX* 10.1 | DirectX* 10.1 |
| Поддержка OpenGL | 1.4 + Extensions | 1.4 + Extensions | OpenGL 1.5 | OpenGL 1.5 | OpenGL 2.0 |
| Аппаратный T&L | НЕТ | НЕТ | ЕСТЬ | ЕСТЬ | ЕСТЬ |
| Поддерживаемая Шейдерная Модель | 2 | 2 | 3.0 | 4.02 | 4.02 |
1 – DirectX10 –реализован на аппаратном уровне, поддержка в драйвере ожидается в первом квартале 2008
2 – Шейдерная модельl 4.0 – реализована на аппаратном уровне поддержка в драйвере ожидается в первом квартале 2008
В дополнение к этой информации нужно отметить, что не только все приведенные в таблице современные чипсеты, но и 945G, относящийся к предыдущему поколению, поддерживают Windows Vista Aero*
Intel® GMA 3x00 с индексом «X» также поддерживают 32-битные операции с плавающей точкой для Вершинных и Пиксельных шейдеров и текстурирования.
Но главное - аппаратная поддержка T&L (преобразования и освещения вершин), а также Вершинных и Пиксельных шейдеров Модели 3.0 реализована в драйверах Intel® GMA X3х00 начиная с августа 2007. Хотя, оставлена и возможность переключения на программный T&L – в некоторых случаях он работает быстрее.
Как видите, возможности Intel® GMA X3x00 сравнимы с возможностям дискретных видеокарт начального и даже среднего уровня. Но возможности – это только основа потенциала видеокарты, а сам потенциал – это ее производительность.
Что можно сказать о производительности GMA X3x00?
Прежде всего, то, что как у всякой встроенной карты, использующей для работы не только свои ресурсы, но и CPU, а также системную память, производительность сильно зависит от характеристик системы «в целом» - процессора, памяти, и конкретной материнской платы, частью которой является чипсет. Кроме того, сильное влияние на производительность карты оказывает графический драйвер. Поэтому давать оценку производительности интегрированной графики Intel «в общем», без учета специфики конкретного компьютера - некорректно. Но дать некоторые оценки – ориентиры можно.
Еще в 2004 году на ixbt.com была опубликована статья, посвященная исследованию производительности интегрированных графических карт для платформы Pentium® 4. Название данной статьи говорит само за себя: «Интегрированная графика для платформы Pentium® 4: все не так уж плохо…», а результаты тестирования интегрированной графики Intel для 3D-игр приятно удивили авторов. С момента выхода статьи сменилось уже два поколения Intel GMA, появились новые производительные многоядерные процессоры Intel® Core2™ и ускорился доступ к системной памяти, что положительно сказалось на быстродействии интегрированной графической карты Intel. Так что в 2007 можно смело утверждать, что «Интегрированная Графика Intel – все совсем неплохо».
GMA X3х00 с драйверами начиная с версии 14.31/15.6 (WindowsXP/Windows Vista) подходит для таких популярных игр, как Battlefield 2142*, Call of Duty 2*, Supreme Commander, Madden 2007*, Ghost Recon: Advanced Warfighter*, Unreal Tournament 2004*, World Of Warcraft*, Microsoft Flight Simulator X*, The Sims 2* (plus the expansion packs), Quake IV*, Half Life 2*, Far Cry*.
Полный список самых распространенных игр, работающих на GMA X3х00 , можно увидеть на сайте http://support.intel.com/support/graphics/intelg965/sb/cs-023018.htm
Приведем сравнение производительности некоторых игр для встроенных графических карт последнего поколения (выпущенных на рынок в 2007 году): Intel G965, NVIDIA7050 и AMD* 690G (конфигурация тестовых систем- в приложении 1 в конце статьи)
А сколько кадров в секунду выдает ваше графическое приложение на Интегрированной Графике Intel®?
Если ваш ответ - «ноль», то есть, оно вообще не запускается (но работает на дискретных видеокартах), то ваши действия:
Если такое соответствие обнаружено, то ставится (а потом используется при создании DX9 Device) флаг программной обработки вершин
vertexprocessingmode = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
и только если оказывается, что графическая карта не только не поддерживает аппаратную обработку вершин, но и не принадлежит к производительным Intel GMA, то принимается фактическое решение не создавать DX9 Device.
Так сколько кадров в секунду выдает ваше приложение на Интегрированной Графике Intel?
Если меньше, чем хотелось бы, то обратите внимание на следующие советы по оптимизации или конфигурации вашего приложения.
Основной фактор, ограничивающий производительность современных Intel GMA, –это не скорость вычислений, а скорость заполнения (fill rate), поэтому большинство советов направлено именно на решение этой проблемы – на уменьшение числа отрисовываемых пикселей.
В заключение отметим, что, конечно же, эта статья не содержит всей информации о постоянно развивающейся Интегрированной Графике Intel. Поэтому рекомендуем обратиться за дополнительной информацией:
Приложение 1. Конфигурация оборудования для тестов игр
Приложение 2. Пример корректной инициализации флага обработки вершин для создания D3D Device
* Источник: Mercury Research; Bear, Stearns & Co. Inc.DWORD SetVertexProcessingMode( LPDIRECT3D9 pD3D )
{
DWORD vertexprocessingmode; // vertex processing mode
D3DCAPS9 caps; // Device CAPs structure
D3DADAPTER_IDENTIFIER9 adapterID; // Used to store device info
// Retrieve device capabilities
if( g_pD3D->GetDeviceCaps( 0, D3DDEVTYPE_HAL, &caps ) != D3D_OK )
{
return E_FAIL; // exit if reading caps fails...
}
// Check if hardware T&L is supported...
// - The D3DDEVCAPS_HWTRANSFORMANDLIGHT capability should
// be enabled for GMA X3000
if ( ( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ) != 0 )
{
vertexprocessingmode = D3DCREATE_HARDWARE_VERTEXPROCESSING;
}
else
{
// Check vendor and device ID and enable software vertex
// processing for Intel(R) Graphics...
// Gather the primary adapter's information...
if( g_pD3D->GetAdapterIdentifier(0,0,&adapterID ) != D3D_OK )
{
return E_FAIL;
}
if ( ( adapterID.VendorId == 0x8086 ) && // Intel Architecture
( adapterID.DeviceId == 0x2972 ) || // 946GZ Device 0
( adapterID.DeviceId == 0x2973 ) || // 946GZ Device 1
( adapterID.DeviceId == 0x27A2 ) || // 945GM Device 0
( adapterID.DeviceId == 0x27A6 ) || // 945GM Device 1
( adapterID.DeviceId == 0x2772 ) || // 945G Device 0
( adapterID.DeviceId == 0x2776 ) || // 945G Device 1
( adapterID.DeviceId == 0x2992 ) || // Q965/Q963 Device 0
( adapterID.DeviceId == 0x2993 ) || //Q965/Q963 Device 1
( adapterID.DeviceId == 0x29B2 ) || // Q35 Device 0
( adapterID.DeviceId == 0x29B3 ) || //Q35 Device 1
( adapterID.DeviceId == 0x29C2 ) || //G33/G31Device 0
( adapterID.DeviceId == 0x29C3 ) || //G33/G31 Device 1
( adapterID.DeviceId == 0x29D2 ) || //Q33 Device 0
( adapterID.DeviceId == 0x29D3 ) //Q33 Device 1
{
vertexprocessingmode = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}
else
{
// Chipset does not meet minimum requirements...
return E_MINSPEC;
}
}
return vertexprocessingmode;
}