- PVSM.RU - https://www.pvsm.ru -

Игры разума. Играем на Intel HD graphics?

image
На недавно прошедшей Конференции Разработчиков Игр [1], в то время как по выставке ходили девушки, еще более длинноногие и менее одетые, чем на фото, я, инженер по программным решениям Intel, рассказывала «об особенностях интергированных графических решений Intel и их эффективном использовании при разработке игр».
К моему удивлению, слушателями доклада оказались не только разработчики игр и те, кто ошибся аудиторией, но и простые пользователи Intel HD Graphics.
Поэтому, то есть, по многочисленным появкам слушателей, знакомлю с этим докладом и вас.

Доклад с подобной темой я делаю ежегодно уже раз в шестой-седьмой. Но, конечно же, я не повторяю один и тот же рассказ из года в год. И даже не делаю ремейки! Время идет, Intel
постоянно представляет новые графические решения, соответственно появляются новые требующие освещения вопросы.

Но кое-что остается без перемен — вступление, сообщающее, что рынок Интегрированной Графики Intel сейчас огромен, будет сильно расти и дальше, причем, среди всех категорий пользователей, так что эти GPU необходимо учитывать при разработке игр и прочих графических приложений
И если раньше единственное подтверждение этих слов было теоретическое — соответсвующий график или диаграмма из какого-нибудь серьезного источника типа Mercury Research, то теперь у меня появилось практическое и наглядное подтверждение. Ультрабуки. Переход на устройства этого типа столь же неизбежен для пользователей, как и завершившийся не так давно переход от ЭЛТ телевизоров и мониторов к ЖК.
Хотя спецификация ультрабука и не требует наличия встроенного GPU, но жесткие требования к его габаритам не позволяют вставить туда дискретную графическую карту, не сплюснутую предварительно танком. Поэтому во всех ультрабуках (а не только тех, что у девушек на фото) используется интегрированное с процессором решение — Intel HD Graphics.

Intel HD Graghics. Сurriculum vitae.

gpu features

Впервые графическое ядро Intel переехало к CPU с северного моста материнской платы в 2010, и сразу же сменило имя — c Intel GMA (Graphics Media Accelerator) на Intel HD Graphics. Но это пока был еще «гражданский брак», GPU не был полностью интегрирован с CPU, он даже производился по другой технологии — 45nm против 32nm у CPU. Но, благодаря архитектурным улучшениям и повышению рабочей частоты, скорость обработки 3D в сравнении с прошлой версией Intel GMA выросла на 70%.
В 2011 в ядро Sandy Bridge была интегрирована Intel HD Graphics второго поколения. В мобильные устройства (модификация GT1) — версия Intel HD 2000 с 6 исполнительными устройствами (Execution Units или EU), а в десктопные (модификация GT2) — Intel HD 4000 с 12 EU. Кстати архитектура HD Graphics изначально закладывала возможность технически простейшего добавления EU.
Наконец, ровно месяц назад, в паре с Intel Ivy Bridge CPU появилась Intel HD Graphics 3. HD Graphics третьего поколения отличается не только увеличением числа EU до 16 для десктопной модификации HD Graphics 4000, но и улучшением самих EU, способных к исполнению трех инструкций за такт, а также появлением L3 cache, дополнительного текстурного семплера и полной поддержкой в железе DirectX 11. Еще одна уникальная фишка третьего поколения CPU — варьируемый размер векторных инструкций EU. Система способна диспетчеризовать логические потоки HLSL на исполнительные устройства как SIMD8, SIMD16 или SIMD32.

На слайде ниже показаны более детальные сравнительные характеристики Intel HD:image
Почему слайд такой серый? А потому, что совершенно секретный! В изначальной версии на нем стоял гриф Intel Confidential, означающий строгий запрет к распространению, а также присутствовало не три колонки, а четыре. В четвертой колонке были характеристики новой, еще не выпущенной Intel GPU. Соответственно, по сравнению с той, еще не существующей новинкой, все остальное показывалось просто серым. Раскрашивать слайд я не стала — это же не «17 мгновений Весны».

Intel HD Graghics третьего поколения. Характеристика с места работы.

Какие же игры играбельны на Intel HD 4000, то есть, показывют фреймрейт больший или равный 25 кадрам? Если цитировать соответствующую страницу [2] на сайте Intel, то — «большинство мейнстрим игр на разрешении экрана 1280х720 или лучше». На том же сайте приведен далеко не полный список из более чем ста современных игр, производительность которых на Intel HD 4000/2500 подтверждена инженерами Intel.
А теперь — независимое внешнее тестирование. Заслуживающий доверия международный сайт с говорящим названием www.notebookcheck.net [3], занимающийся тестированием ВСЕХ видеокарт, встречающихся в нетбуках-ноутбуках-ультрабуках, недавно опубликовал результаты тестирования Intel HD 4000. Детально проверены например, такие игры, как Unigine Heaven 2.1, Metro 2033, Call of Duty: Modern Warfare 3, Battlefield 3, Fifa 2012. Не буду пересказывать результаты, смотрите оригинал [4].

Напоследок, выборка из общей таблицы результатов синтетических тестов, сделанная для разных Intel GPU. Обратите внимание на изменение позиции в рейтинге прозводительности карт:
image

Вывод notebookcheck: «В целом, мы впечатлены новым графическим ядром Intel. Производительность по сравнению с HD 3000 улучшилась на 30%. Эта разница может быть даже больше — до 40%, если GPU спарено с мощным четырехядерным Ivy Bridge CPU, например, i7-3610QM.

Так что же делать, если ваша любимая игра на Intel HD не работает должным образом? Советы, даваемые www.intel.com/support/graphics/sb/cs-010486.htm [5], на первый взгляд выглядят Капитаном Очевидность: поменять настройки игры, проверить наличие новых патчей к игре, установить свежий драйвер Intel. Но на деле эти советы работают. Инженеры Intel тесно сотрудничают с разработчиками игр, в том числе и при создании патчей для совместимости с Intel GPU. Также, как заметил notebookcheck, „slowly but surely“ ( „медленно, но верно“) улучшаются драйвера Intel как по корректности, так и по производительности работы, что приводит к решению проблем с играми.
game not working

На этом месте пост для простых игроков оканчивается (спасибо за внимание, добро пожаловать в комментарии), и начинаются

Краткие советы создателям игр

1. Корректно определяйте параметры графической системы и ее возможности — поддержку шейдеров, расширений DX и доступную видеопамять (учтите, что у Intel GPU нет отдельной видеопамяти, она совместно с CPU использует память системную).

Посмотреть на пример исходного кода и бинарника приложения для корректного и полного определения параметров системы с Intel GPU — GPU Detect можно здесь [6].
Кроме того, Microsoft DirectX SDK (июнь 2010) включает пример Video Memory для определения размера доступной видеопамяти. Советуем также поискать в Интернете „Get Video Memory Via WMI“.

2. Учитывайте возможности Turbo Boost. Благодаря Turbo Boost частота Intel GPU может увеличиваться в два раза, давая существеный прирост производительности. Но только если это позволяет термальное состояние системы. А это происходит по понятным причинам только когда не сильно занят, то есть, не сильно нагрет CPU.

Вытекающий отсюда совет — как можно реже использовать запрос состояния CPU — GetData(). Учтите, что вызов GetData() в цикле с ожиданием результата — это 100% загрузка CPU. В случае крайней необходимости делайте запросы к CPU в начале отрисовки кадра и загружайте CPU какой-нибудь полезной работой перед получением результатов GetData. В этом случае ожидание CPU будет минимально.

3. Используйте реализуемое Intel GPU раннее отсечение по Z (Early Z rejection). Эта технология позволяет заранее отбрасывать из дальнейшей обработки, т.е. не выполняя дорогостоящие с точки пиксельные шейдеры, фрагменты, не проходящие тест глубины, — загораживаемые другими объектами.

Для результативного использования Early Z существуют два метода:
— сортировка и отрисовка объектов от ближних к дальним по глубине (front to back)
— предпроход без отрисовки с заполнением буфера глубины и маскированием заведомо невидимых на финальном изображении областей.
Понятно, что первый способ не подойдет для сцен с (полу)прозрачными объектами, а второй имеет значительные накладные расходы.
Исходный код примеров использования Early Z можно посмотреть здесь. [7]

4. Здравый смысл и общие советы по оптимизации графических приложений. Их для Intel GPU никто не отменял. Уменьшайте количество смен графических состояний и шейдеров, группируйте вызовы отрисовки, избегайте чтения из render targets, да и вообще не используйте более трех буферов отрисовки. Также оптимизируйте геометрию (Direct3D D3DXOptimizeVertices и D3DXOptimizeFaces) для кешей вершинных пре- и пост- преобразований DirectX.

5. И, наконец, для эффективноего обнаружения проблем с производительностью DirectX приложений на Intel GPU используйте бесплатный инструмент Intel GPA [8]image

Автор: vikky13


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/zhelezo/8421

Ссылки в тексте:

[1] Конференции Разработчиков Игр: http://habrahabr.ru/company/intel/blog/143245/

[2] соответствующую страницу: http://www.intel.com/support/graphics/intelhdgraphics4000_2500/sb/CS-033387.htm

[3] www.notebookcheck.net: http://www.notebookcheck.net

[4] оригинал: http://www.notebookcheck.net/Intel-HD-Graphics-4000-Benchmarked.73567.0.html

[5] www.intel.com/support/graphics/sb/cs-010486.htm: http://www.intel.com/support/graphics/sb/cs-010486.htm

[6] здесь: http://software.intel.com/en-us/articles/vcsource-samples-gpu-detect/

[7] десь.: http://software.intel.com/en-us/articles/vcsource-samples-early-z-rejection/

[8] Intel GPA: http://software.intel.com/en-us/articles/vcsource-tools-intel-gpa/