Intel® GMA X3000 – это четвертое поколение графических ядер Intel Integrated Graphics. Подобно своим предшественникам, ядро Intel® GMA X3000 продолжает воплощать все новые и новые функции, которые дают пользователям возможность получить богатый набор возможностей по гораздо меньшей стоимости, чем у дискретных графических карт. Поскольку такие интегрированные графические решения все чаще встречаются на рынке, для разработчиков программного обеспечения для работы с трехмерной графикой важно поддерживать и ориентироваться на весь набор возможностей интегрированных решений Intel. Графическое ядро Intel Graphics разработано таким образом, чтобы отвечать нуждам большинства пользователей, как в сфере бизнеса, так и в сфере потребительского применения. Графическое ядро встроено в чипсет. Оно делит системную память с процессором, чтобы сбалансировать системную архитектуру, обеспечив стоимость системы, приемлемую для потребителя. Потенциальные возможности GMA Intel совпадают или даже превосходят технические параметры других, более дорогих графических карт. Покупатели компьютеров оценили сбалансированный подход к системному дизайну, и графическое ядро Intel Graphics стало основным графическим решением для покупателей компьютеров.
В этом документе описывается графический акселератор Intel® Graphics Media Accelerator (Intel® GMA 3000 и X3000), а также для разработчиков программного обеспечения даются советы и подсказки , благодаря которым ваши клиенты смогут действительно наслаждаться разработанными вами играми и другими трехмерными интерактивными приложениями. Мы будем рады любой ответной реакции сообщества независимых разработчиков программных продуктов (ISV) и всех наших клиентов. Пожалуйста, оставляйте ваши отзывы на нашем форуме: http://softwarecommunity.intel.com/isn/Community/en-US/forums/2414/ShowForum.aspx.
Intel® GMA X3000 - это представитель первого поколения интегрированных графических ядер Intel ®, способный выполнять аппаратную обработку вершин согласно шейдерной модели Shader Model 3.0. Кроме того, в то время как ранее существовавшие аппаратные средства обеспечивали использование только части функций DirectX 9.0 и частичную совместимость с OpenGL 1.4, GMA X3000 включает в себя весь набор функций DirectX9.0C/Ex, а также OpenGL 2.0. Кроме того, частота ядра графической системы была повышена до 667 МГц, а максимально доступная для графической подсистемы память увеличилась с 224 МБ до 384 МБ. Это обеспечило возможность хранения большего объема текстур, увеличенных буферов вершин и большего количества моделей. И, наконец, максимальная пропускная способность памяти увеличилась на 20% по сравнению с Intel Integrated Graphics (в версии для настольных компьютеров) предыдущего поколения, достигнув максимального значения 12,8 Гб/с. Графический ускоритель GMA X3000 может поддерживаться как в ОС Windows XP*, так и в Windows Vista*.
В данной таблице наглядно показаны все эти усовершенствования:
|
Характеристики |
2005 / 2006 гг. |
2006 / 2007 гг. |
2007 г. |
2007/2008 гг. |
2007/2008 гг. |
|
Платформа (настольный ПК/мобильный ПК) |
чипсет Intel® 945G / 945GM (GMA950) |
чипсет Intel® G965 (X3000) |
чипсет Intel® GM965 (X3100) |
чипсет Intel® G31/G33 (X3100) |
чипсет Intel® G35 (X3500) |
|
Производственный процесс |
130 нм |
90 нм |
90 нм |
90 нм |
90 нм |
|
Масштабируемая частота ядра |
400/133, 166, 222, 250 МГц |
667 МГц |
500 МГц |
400 МГц |
667 МГц |
|
Тактовая частота памяти |
До 2 кан. DDR 667 МГц |
До 2 кан. DDR2 800 МГц |
До 2 кан. DDR 667 МГц |
До 2 кан. DDR3 1066 МГц |
До 2 кан. DDR 800 МГц |
|
Максимальная пропускная способность памяти |
10,7 Гб/с |
12,8 Гб/с |
10,7 Гб/с |
17,1 Гб/с |
12,8 Гб/с |
|
Максимальная видеопамять |
224 МБ |
384 МБ |
384 МБ |
287 МБ |
384 МБ |
|
Поддержка DirectX* API |
DirectX 9.0C/Ex |
DirectX* 9.0C/Ex |
DirectX* 10 |
DirectX* 9.0C/Ex |
DirectX* 10 |
|
Поддержка Open GL API |
1.4 + расширения |
1.4 + расширения |
1.5 |
1.4 + расширения |
2.0 |
|
Поддержка Direct*X VA |
v.1.0 (2.0 в LH) |
v.2.0 |
v.2.0 |
v.2.0 |
v.2.0 |
|
Поддерживаемая модель драйверов |
XPDM + LDDM |
XPDM и LDDM (основной планировщик) |
|||
В этом разделе приведены сравнительные характеристики графических ускорителей Intel GMA (X)3х00, а также Intel GMA предыдущего поколения. Основные характеристики сгруппированы по функциональным признакам, для каждого из которых составлена отдельная таблица. В заключительной части раздела описывается использование архитектуры разделяемой памяти в графических ускорителях Intel GMA (X)3х00.
Пиксельный шейдер
|
Пиксельный шейдер |
2005 / 2006 гг. |
2006 / 2007 гг. |
2007 г. |
2007/2008 гг. |
2007/2008 гг. |
|
Платформа (настольный ПК/мобильный ПК) |
чипсет Intel® 945G / 945GM |
чипсет Intel® G965 (серия X3000) |
чипсет Intel® GМ965 (серия X3000) |
чипсет Intel® G31/G33 (серия 3000) |
чипсет Intel® G35 (серия X3000) |
|
Модель пиксельного шейдера |
2.0 |
3.0 |
3.0 |
3.0 |
3.0 |
|
Точность шейдера |
24 бита в режиме с плавающей запятой |
32 бита в режиме с плавающей запятой |
24 бита в режиме с плавающей запятой |
24 бита в режиме с плавающей запятой |
24 бита в режиме с плавающей запятой |
|
Максимальное количество обработчиков текстур (Texture samplers) |
8 |
16 |
16 |
8 |
16 |
|
Максимальное количество шейдерных команд |
96 |
512 |
512 |
96 |
512 |
|
Количество зависимых текстур |
4 |
512 |
512 |
4 |
512 |
|
Динамическое ветвление |
Нет |
Есть |
Есть |
Нет |
Есть |
|
Максимальное количество текстурных команд |
32 |
512 |
512 |
32 |
512 |
Текстурный обработчик
|
Текстурный обработчик |
2005 / 2006 гг. |
2006 / 2007 гг. |
2007 г. |
2007/2008 гг. |
2007/2008 гг. |
|
Платформа (настольный ПК/мобильный ПК) |
чипсет Intel® 945G / 945GM |
чипсет Intel® G965 |
чипсет Intel® GМ965 |
чипсет Intel® G31/G33 |
чипсет Intel® G35 |
|
Точность вычисления |
24 бита в режиме с плавающей запятой |
16 и 32 бита в режиме с плавающей запятой |
16 и 32 бита в режиме с плавающей запятой |
24 бита в режиме с плавающей запятой |
16 и 32 бита в режиме с плавающей запятой |
|
Максимальная двумерная текстура |
2K x 2K |
4K x 4K |
4K x 4K |
2K x 2K |
4K x 4K |
|
Максимальная трехмерная текстура |
2048 x 2048 x 256 |
8092 x 8092 x 256 |
8092 x 8092 x 256 |
2048 x 2048 x 256 |
8092 x 8092 x 256 |
|
Максимальная кубическая карта |
1024 |
1024 |
1024 |
1024 |
1024 |
|
Максимальная анизотропия |
4 выборки |
До 16 выборок |
До 16 выборок |
4 выборки |
До 16 выборок |
|
Сжатие текстур |
DXT1, DXT3, DXT5 и FXTn |
DXT1, DXT3, DXT5 и FXTn |
DXT1, DXT3, DXT5 и FXTn |
DXT1, DXT3, DXT5 и FXTn |
DXT1, DXT3, DXT5 и FXTn |
|
Поддержка текстур с размером не равеным степеням числа 2 |
Есть |
Есть |
Есть |
Есть |
Есть |
|
Отрисовка в текстуру |
Есть |
Есть |
Есть |
Есть |
Есть |
Вершинный шейдер
|
Вершинный шейдер |
2005 / 2006 гг. |
2006 / 2007 гг. |
2007 г. |
2007/2008 гг. |
2007/2008 гг. |
|
Платформа (настольный ПК/мобильный ПК) |
чипсет Intel® 945G / 945GM |
чипсет Intel® G965 |
чипсет Intel® GМ965 |
чипсет Intel® G31/G33 |
чипсет Intel® G35 |
|
Вершинные текстуры |
ПРОГРАММНО |
АППАРАТНО |
АППАРАТНО |
ПРОГРАММНО |
АППАРАТНО |
|
Порождение новых экземпляров (Instancing) |
ПРОГРАММНО |
АППАРАТНО |
АППАРАТНО |
ПРОГРАММНО |
АППАРАТНО |
|
Динамический поток |
ПРОГРАММНО |
АППАРАТНО |
АППАРАТНО |
ПРОГРАММНО |
АППАРАТНО |
|
Модель вершинного шейдера |
3.0, ПРОГРАММНАЯ |
3.0, АППАРАТНАЯ |
3.0, АППАРАТНАЯ |
3.0, ПРОГРАММНАЯ |
3.0, АППАРАТНАЯ |
Динамическая видеопамять
Графическое ядро Intel Graphics использует архитектуру разделяемой памяти (которую также часто называют унифицированной архитектурой памяти или UMA) - то есть системная память используется и для графики, и для системных нужд. Вместо использования специальной локальной памяти, как это делается сегодня в большинстве дискретных графических карт, часть системной памяти динамически выделяется для использования в качестве видеопамяти. Кроме того, небольшое количество системной памяти выделяется на постоянной основе процедурами BIOS. Это количество может составлять от одного до восьми мегабайт (у большинства производителей компьютеров (original equipment manufacture OEM) оно составляет восемь мегабайт). Системы, поставляющиеся с логотипом Windows Vista* выделяют восемь мегабайт памяти.
Технология Динамического Управления Видеопамятью (DVMT) позволяет динамически выделять дополнительную системную память для обработки графики в зависимости от потребностей приложений. Когда приложение закрывается, выделенная память освобождается, и становится доступна для системного использования. Целью динамического выделения памяти для обработки графики является обеспечение надежного баланса между производительностью системы и производительностью графики. Например, если пользователь просто редактирует текст, нет никакой нужды отводить большое количество системной памяти для графики. В таком случае лучше, если большее количество памяти будет выделено для системных нужд. С другой стороны, если пользователь запускает игру с трехмерной графикой, то понадобится задействовать в качестве графической большее количество совместно используемой памяти.
ОС Windows XP*
Во время начальной загрузки системы, процедуры BIOS определяют количество системной памяти, которое постоянно используется графическим контроллером. Эта память не может быть использована в качестве системной. Некоторые системы позволяют конечному пользователю устанавливать эти значения через меню начальных настроек BIOS. Когда операционная система запущена, графический драйвер динамически выделяет графическую память в соответствии с нуждами приложений, запускаемых пользователем. Для систем с памятью 256 МБ и более максимальное количество памяти, выделяемой для графического контроллера, составляет 128 МБ (выделенная процедурами BIOS память + память, динамически выделенная драйверами). Кроме того, новые установочные параметры BIOS могут обеспечить 128 МБ фиксированной (384 МБ общей) видеопамяти для систем с 512 МБ или более памяти.
ОС Windows Vista*
В отличие от Windows XP*, в системах на базе ОС Windows Vista* графический драйвер игнорирует установочные параметры системного BIOS по выделению памяти. Вместо этого графический драйвер создает комбинацию фиксированной и динамической видеопамяти, основанную на выявленном количестве системной памяти. Это позволяет производителям процедур BIOS создавать единые системные BIOS для Windows XP* и Windows Vista*. Определенное количество фиксированной памяти требуется для того, чтобы драйвер мог обеспечить переход из текущего режима в любой другой поддерживаемый режим. Для систем с 512 мегабайтами оперативной памяти (минимальные требования для Windows Vista*) драйвер выделяет 32 мегабайта фиксированной видеопамяти (8 мегабайт заранее выделены) и до 32 мегабайт динамической видеопамяти. Таким образом, в целом выделяется до 64 мегабайт видеопамяти. Если в системе более чем 768 мегабайт памяти, то графический драйвер выделяет 64 мегабайта фиксированной видеопамяти, а остальное количество выделяется динамически, в зависимости от количества имеющейся оперативной памяти. В таблице ниже приведены конкретные примеры выделения памяти.
|
Системная память |
Фиксированная |
Динамическая |
Общее количество |
|
512 МБ |
32 М |
32 МБ |
64 МБ |
|
768 МБ – 1023 МБ |
64 МБ |
64 МБ |
128 МБ |
|
1024 МБ – 1525 МБ |
64 МБ |
192 МБ |
384 МБ |
|
>=1536 MБ (G965,GM965,G31,G33,G35) |
64 МБ |
320 МБ |
384 МБ |
Архитектура Intel® GMA X3000
GMA X3000 разработан на базе новой архитектуры, улучшенной по сравнению с ранее существующими графическими архитектурами Intel, путем использования полностью программируемого и масштабируемого массива исполнительных устройств. Масштабируемый дизайн позволяет легко увеличивать количество исполнительных устройств по мере развития производственных возможностей, в результате чего показатели производительности улучшаются без значительных изменений архитектуры при сохранении стабильной и однородной платформы.
Разработчики GMA X3000 отказались от архитектуры зонального рендеринга. Хотя схема, приведенная ниже, показывает, что системная архитектура во многом не изменилась, было произведено большое количество графических усовершенствований, с целью превзойти преимущества, ранее обеспечиваемые зональным рендерингом. Среди них увеличение тактовой частоты ядра до 667 МГц и увеличение частоты системной шины до 1066 МГц.
Рисунок 2 – Компоновка чипсета, в том числе GMCH, ICH и основная память.
Дальнейшее повышение производительности по сравнению с зональным рендерингом достигается с помощью высокого уровня программируемости архитектуры исполнения шейдеров GMA X3000. Благодаря этому, а также возможности выполнять и вершинные, и пиксельные шейдерные программы, такую архитектуру часто называют «унифицированной шейдерной архитектурой». Ее главное преимущество в том, что вычислительная мощность, выделяемая для обработки вершин и пикселей, может быть динамически сбалансирована в соответствии с требованиями отдельного кадра приложения. При использовании архитектуры без унифицированного исполнения шейдеров может встретиться ситуация, когда в кадрах, содержащих большие треугольник и вершинные шейдеры не используются, а пиксельные шейдеры перегружены. Наоборот, при работе с кадрами, содержащими много маленьких треугольников, часто не задействуются пиксельные шейдеры, в то время как вершинные перегружены. Унифицированный подход позволяет загружать исполнительные устройства обработкой вершин или пикселей в зависимости от потребностей и, таким образом, минимизирует количество бездействующих исполнительных устройств и обеспечивает более оптимальное соотношение цена/производительность, ведь конечный пользователь не станет переплачивать за «мертвое железо».
Рисунок 3 – Конвейеры G965, GM965 и G35 (X3000)
Стадии конвейерной обработки
|
Стадии конвейерной обработки |
Обеспечиваемая функция |
|
Командный поток (Command Stream) |
Эта стадия отвечает за управление трехмерным конвейером и передачу команд по нему. В дополнение к этому он считывает "константы" из буферов памяти и размещает их в памяти чипа. Стадия командного потока общая для трехмерного и мультимедийного конвейеров. |
|
Выборка вершин |
Стадия отвечает за считывание из памяти чипа вершинных данных, их переформатирование и запись результатов в новые вершинные структуры в памяти чипа. |
|
Вершинные шейдер |
Стадия вершинного шейдера отвечает за обработку (shading) входящих вершин путем передачи их потокам вершинного шейдера. Каждый поток соответствует системной программе, которая производит одну или несколько следующих операций: Трансформации вершин Освещение вершин Point size |
|
Блок обрезки (Clip Unit) |
Функции этой стадии делятся на две части. Первоначально фиксированная часть Блока Обрезки отвечает за распределение входящего примитива по одному из трех состояний:
|
|
Блок Ленты/Веера треугольников Strip/Fan Unit |
Функции этой стадии делятся на две части. Вначале фиксированная часть блока Strip/Fan отвечает за: |
|
Менеджер растеризации и маскирования |
Функции этой стадии делятся на две части. Первоначально фиксированная часть менеджера растеризации и маскирования выполняет растеризацию примитива. Затем он порождает поток пиксельного шейдера, чтобы обработать пикселы примитива. |
|
Блок сэмплирования |
Эта стадия обеспечивает возможность продвинутой обработки и фильтрации текстурных поверхностей в памяти. Она производит следующие операции:
Генерацию адресов элементов текстур
Предварительное сравнение с фильтром теней (Shadow Pre-filter). Фильтрацию элементов текстур Линеаризация цветовой гаммы элементов текстур |
Вариант комплектов поставки продукта (SKU) для бизнес- и потребительских целей.
Различные категории пользователей имеют разные требования к работе с графикой, поэтому это поколение графических решений предоставляет большой выбор вариантов поставки продукта (SKU). Бизнес-пользователям обычно не требуются приложения с большим количеством трехмерной графики, поэтому они не предъявляют такие высокие требования к графическим картам, как те, кто играет в видеоигры.
|
Вариант продукта (SKU) |
GMA 3000 |
GMA X3000 |
|
Количество Исполняемых Устройств |
8 исполняемых команд (667 МГц) |
8 исполняемых команд (667 МГц) |
|
Каналы памяти |
2 |
2 |
|
Поддержка DDR2/ECC |
DDR2-800 |
DDR2-800 |
|
Вершинный шейдер |
CPU |
GPU |
|
Early Z (ранний Z-тест) |
Есть |
Улучшено |
|
Зависимые текстуры |
Есть |
Улучшено |
|
Проверка видимости (Occlusion Querry) |
Нет |
Есть |
|
DX9 модель шейдеров (SM) |
SM2.0 |
SM3.0 |
|
Смешивание в реальном времени (Floating RT/Blend) |
Нет |
Есть |
|
Воспроизведение с высоким разрешением |
МР2 |
МР2 / VC1 |
По сравнению с другими гораздо более дорогими графическими картами ускорители четвертого поколения GMA X3000 чаще всего демонстрирует ограничение по скорости заполнения. Самый простой способ справиться c этой проблемой - это дать пользователю возможность выбирать более низкое разрешение и уменьшать количество «насыщенных» эффектов, требующих большой скорости заполнения, , таких, как тени. Ниже приводятся еще некоторые решения, которые помогут улучшить производительность.
Совет: Отдавайте предпочтение продвинутым однопроходным шейдерам по сравнению с простыми многопроходными шейдерами.
Обоснование: Ускоритель GMA X3000 чаще всего имеют ограничения по скорости заполнения, а не по скорости вычислений. Это означает, что при выборе между более простым шейдером с множеством проходов или более продвинутой шейдерной моделью с одним проходом всегда предпочтительнее использовать продвинутый шейдер с одним проходом. Ускорителю GMA X3000 присуща поддержка таких продвинутых шейдерных моделей как SM3.0. Он выполняет их эффективно, в то время как при выполнении простых шейдеров с множеством проходов появляется ограничение по скорости заполнения.
Совет: Добейтесь эффективного использования функции Early Z ( «предварительный» ранний Z-тест), чтобы снизить требования к скорости заполнения
Обоснование: Ускоритель GMA X3000 может провести Zтест пикселя до его отсылки в пиксельный шейдер или на отрисовку ( в том числе и в текстуру); эта функция называется «Early Z test» Если фрагмент не проходит Z тест, он автоматически игнорируется. Таким образом уменьшается количество обращений к буферам текстур и кадра.
Как это сделать: Early Z test выполняется автоматически везде, где это возможно. Чтобы извлечь максимальные преимущества из технологии Early Z, вы должны избегать каких-либо действий с буфером глубины через пиксельные шейдеры, в случаях, когда будет работать стандартный Z тест. Еще один широко распространенный метод повышения производительности технологии Еarly Z – это рендеринг сцены в направлении от ближних к дальним. Если это оказывается возможным, то такое действие эффективно снижает «сложность глубины» до единицы и, таким образом, скорость заполнения остается приемлемой. Тем не менее, все преимущества этого подхода могут быть сведены на нет из за возникших в результате изменения порядка отрисовки объектов дополнительных изменений состояния рендеринга (графического движка) и промахам текстурного кэша, Поэтому часто лучше просто сгруппировать и отсортировать « от ближних к дальним» объекты, которые делят общие текстуры и другие состояния отрисовки. Но помните, что отрисовка в направлении от ближних к дальним и технология Еarly Z дают очень небольшие преимущества, в тех случаях, когда сложность глубины сцены низка или когда используются очень простые однотекстурные шейдеры.
Совет: В картах 4-ого поколения используйте запрос на проверку видимости (Occlusion Querry)
Обоснование: GMA X3000 поддерживает возможность D3D-запроса на проверку видимости, который может быть использован для понижения количества отрисовываемых объектов.
Как это сделать: См. описание IDirect3DDevice9::CreateQuery().Этот запрос может быть использован для того, чтобы сосчитать количество пикселей, прошедших Z тест. Таким образом, вы можете определить, виден ли объект, путем отрисовки ограничивающего его объема (bounding box). Если запрос возвращает ноль, значит, ограничивающий объем не виден, поэтому нет необходимости в отрисовкеобъекта. Этот запрос может обеспечить очень значительное повышение производительности, когда он применяется к сложным объектам, таким, как деревья с сотнями веток и листьев. Такая методика не должна применяться к простым объектам, так как проведение проверки видимостиограничивающего объема может оказаться более затратным, чем простой рендеринг объекта. Во время проведения отрисовки ограничивающего объема не забудьте выключить запись в буферы глубины и цвета.
Совет: Подумайте о двухпроходной отрисовке – сначала с заполнением только буфера глубины, а потом только буфера цвета.
Обоснование: При использовании длинных сложных пиксельных шейдеров важно сократить количество отрисовываемых пикселей, чтобы общее время вычисления шейдера оставалось приемлемым.
Как это сделать: Один из способов сделать это - провести первоначальный проход только по значениям глубины (имеется в виду, что не происходит записей в буфер цветов и выполнения пиксельного шейдера) для всех объектов сцены. Затем проводится второй проход с включенной отрисовкой. Тогда Early Z тест отсекает все невидимые пиксели, тем самым прекращая дальнейшую работус ними. Этот способ не следует использовать при работе с простыми однотекстурными шейдерами, так как затраты на два прохода могут легко превысить достаточно низкие затраты на работу простого шейдера.
Совет: Для наилучшего эффекта используйте комбинацию вышеизложенных методов.
Обоснование: Использование разных методов вместе может значительно "сэкономить" ресурс скорости заполнения.
Как это сделать: Метод первоначального прохода только по значениям глубины может быть соединен с сортировкой «от ближних объектов к дальним», что позволит снизить требования к заполнению буфера глубины. Так как это проход только по значениям глубины, то не нужно принимать во внимание затраты на изменение состояния в результате сортировки. Еще лучших результатов при работе со сложными объектами можно добиться, добавив к проходу только по значениям глубины запрос на проверку видимости ограничивающего объект объема. Когда объекты определены как невидимые в проходе по значениям глубины, обязательно поставьте соответствующие флаги, чтобы эти объекты были пропущены во время финального прохода по значениям цвета.
Совет: Снизьте использование пропускной способности памяти.
Обоснование: Это повысит производительность и интерактивность приложения.
Как это сделать: Ниже описано несколько методов, которые позволяют снизить использование пропускной способности памяти: использование сжатых текстур; использование D3DPOOL_MANAGED или D3DPOOL_DEFAULT при выделении поверхности, буфера или текстурной памяти; снижение размера или качества текстуры; использование уровней детализации, уменьшение объема обрабатываемых данных путем использования эффективных алгоритмов отбраковки (culling).
Создание DX9 устройства и идентификация GMA X3000
Ниже приводится фрагмент кода, который показывает способ инициализации устройства GMA X3000. Из него видно, как пользователь может проверить наличие аппаратного преобразования и освещения вершин (hardware T&L) и включить ее в случае присутствия. В качестве альтернативы пример показывает, как переключиться на режим программной обработки вершин в случае использования старого аппаратного обеспечения.
DWORD SetVertexProcessingMode( LPDIRECT3D9 pD3D )
{
DWORD vertexprocessingmode; // режим обработки вершин
D3DCAPS9 caps; //структура, описывающая возможности устройства
D3DADAPTER_IDENTIFIER9 adapterID; // Используется для хранения информации об устройстве
// Извлечение информации о возможностях устройства
if( g_pD3D->GetDeviceCaps( 0, D3DDEVTYPE_HAL, &caps ) != D3D_OK )
{
return E_FAIL; // выход, если невозможно прочитать информацию
}
// Проверка поддержки аппаратного T&L…
// - функция D3DDEVCAPS_HWTRANSFORMANDLIGHT должна
быть задействована для GMA X3000
if ( ( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ) != 0 )
{
vertexprocessingmode = D3DCREATE_HARDWARE_VERTEXPROCESSING;
}
else
{
// Проверка фирмы-производителя, идентификационного номера устройства
и включение программной обработки вершин
// для графических адаптеров Intel(R) Graphics...
// Получение информации об основном адаптере…
if( g_pD3D->GetAdapterIdentifier(0,0,&adapterID ) != D3D_OK )
{
return E_FAIL;
}
if ( ( adapterID.VendorId == 0x8086 ) && // архитектура Intel
( adapterID.DeviceId == 0x2A02 ) || // GM965 Устройство 0
( adapterID.DeviceId == 0x2A03 ) || // GM965 Устройство 1
( adapterID.DeviceId == 0x29A2 ) || // G965 Устройство 0
( adapterID.DeviceId == 0x29A3 ) || // G965 Устройство 1
( adapterID.DeviceId == 0x27A2 ) || // 945GM Устройство 0
( adapterID.DeviceId == 0x27A6 ) || // 945GM Устройство 1
( adapterID.DeviceId == 0x2772 ) || // 945G Устройство 0
( adapterID.DeviceId == 0x2776 ) || // 945G Устройство 1
( adapterID.DeviceId == 0x2592 ) || // 915GM Устройство 0
( adapterID.DeviceId == 0x2792 ) || // 915GM Устройство 1
( adapterID.DeviceId == 0x2582 ) || // 915G Устройство 0
( adapterID.DeviceId == 0x2782 ) || // 915G Устройство 1
{
vertexprocessingmode = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}
else
{
// Чипсет не соответствует минимальным требованиям…
return E_MINSPEC;
}
}
return vertexprocessingmode;
}
Возможности устройства
Список всех возможностей устройства, поддерживаемых всеми элементами графического аппаратного обеспечения, может получиться очень длинным. Проще всего узнать о возможностях конкретного графического устройства можно с помощью программы DirectX Caps Viewer, которая становится доступной после того, как в системе установлен набор средств разработки DirectX (DX SDK). Таким образом, можно получить подробную информацию о каждой возможности графической карты при запуске драйвера DirectX. Используя этот режим, убедитесь, что вы выбрали соответствующий формат адаптера, который соответствует режиму запуска графического драйвера. Например, D3DFMT_X8R8G8B8, полноэкранный, оконный и т.д.
Рисунок 4 – Снимок экрана из программы DirectX Caps viewer. Слева представлен список категорий доступных устройств. Справа - подробное описание отдельных возможностей, поддерживаемых данным аппаратным обеспечением.
Проверка доступной памяти.
Проверка количества свободной графической памяти или видеопамяти часто проводится еще до запуска приложения. Так как работа устройств Intel Integrated Graphics основана на динамическом выделении графической памяти (в зависимости от нужд приложения), Вам нужно понимать сколько памяти действительно доступно для данного графического устройства. Проверки памяти, которые показывают только количество доступной локальной памяти, не отображают объем, который может быть использован для работы устройств Intel Integrated Graphics. Чтобы точно определить количество памяти, доступной для устройств Intel Integrated Graphics, воспользуйтесь возможностью проверки полного объема видеопамяти. На GMA X3000 вся видеопамять, в том числе динамически выделенная память (DVMT), считается «локальной памятью».
Объем «не локальной видеопамяти» будет определен как нуль (0). Это не следует использовать для определения совместимости с шинами AGP или PCI Express.
Участок кода, приводимый ниже, описывает вызов функции, необходимой для более точного определения количества памяти, доступной для графического контроллера в пределах DirectX 9:
int AvailableTextureMem = g_pd3dDevice->GetAvailableTextureMem();
GMA 3000 поддерживает DirectX 9.0C/Ex. Он поддерживает версию компилятора HLSL, который поставляется с дистрибутивом DirectX9.0C/Ex.
Поиск проблем при работе с различными версиями GMA X3000.
Существует несколько инструментов, выпущенных компанией Microsoft и другими производителями программного обеспечения, которые могут помочь в поиске проблем при работе с различными версиями GMA X3000. Отладчик run-time DirectX от компании Microsoft может оказаться чрезвычайно полезным дополнением к любому вашему отладчику. Во многих случаях он даже выдает рекомендации по улучшению производительности.
Как сообщить о возможной ошибке драйвера или направить запрос на улучшение функциональности.
Драйверы видео мини-порта, дисплея и ускорителя трехмерной графики постоянно изменяются, к ним добавляются новые функции и улучшается производительность. Из-за сложной структуры этих драйверов время от времени появляются ошибки. На основе анализа положительных и отрицательных изменений драйверов команды разработчиков графической архитектуры принимают решение, какие характеристики будут включены в продукцию следующего поколения. Поэтому для них очень важна обратная связь с потребителями.
Важно отметить, что многие ошибки, которые разработчики программного обеспечения считают ошибками драйверов, происходят из-за неправильной конфигурации приложения, и также произойдут на любом аппаратном обеспечении с теми же возможностями. Например, если ошибка появляется только при работе с аппаратным обеспечением компании Intel, проблема может быть в дефекте приложения, который появляется только в режиме программной обработки вершин. Часто дефекты приложений можно выявить с помощью использования независимых видеокарт, у которых принудительно установлен режим тех же функциональных возможностей, как и у устройств Intel.
Если при работе у вас появляется необходимость отправить запрос на улучшение функциональности или сообщение об ошибке, прежде всего вы должны связаться с основным контактным лицом корпорации Intel, работающим с вашей компанией. Обычно должность такого человека называется «менеджер по оперативным связям» или «менеджер по связям с разработчиками программного обеспечения». Если у вашей компании нет такого контактного лица, то, скорее всего, оно есть у вашего издателя.
Скорее всего, это будет тот же человек, к которому вы обращаетесь с вопросами о работе процессора и по оптимизации.
Ваше контактное лицо является членом команды, занимающейся разработкой программного обеспечения для продукции Intel. Если после глубокого изучения эта команда сотрудников примет решение о том, что данная проблема вызвана аппаратными средствами или программным обеспечением (драйверами) Intel, они начнут работу с командой поддержки независимых разработчиков программных продуктов (ISV) для платформы настольных ПК Intel®, которая сделает все, от нее зависящее, чтобы разрешить проблему.
Разработчики программного обеспечения могут оставлять свои вопросы и пожелания на форуме http://softwarecommunity.intel.com/isn/Community/en-US/forums/2414/ShowForum.aspx. Форум посвящен обсуждению разработки программного обеспечения для всей линейки чипсетов Intel Integrated Graphics.
Если вы разработчик игр, то много полезной для вас информации (от документации по многопотоковому программированию до документации по аудио устройствам) доступно на сайте http://www.intel.com/software/games.
Идентификационные номера чипсетов.
|
Чипсет |
ID устройства 0 |
ID устройства 1 |
|
Intel® 915G |
2582 |
2782 |
|
Intel® 915GM |
2592 |
2792 |
|
Intel® 945G |
2772 |
2776 |
|
Intel® 945GM |
27A2 |
27A6 |
|
Intel® G965 |
29A2 |
29A3 |
|
Intel® GM965 |
2A02 |
2A03 |
|
Intel® 946GZ |
2972 |
2973 |
|
Intel® Q965/Q963 |
2992 |
2993 |
|
Intel® Q35 |
29B2 |
29B3 |
|
Intel® G33/G31 |
29C2 |
29C3 |
|
Intel® Q33 |
29D2 |
29D3 |
Примечание. Идентификационные номера устройств представлены в шестнадцатеричном формате.