Сейчас, когда Microsoft начала показывать Windows 7 и рассказывать о ее возможностях, мы начинаем все больше и больше узнавать о будущей операционной системе. И, тем не менее, мы все еще слишком мало знаем. Так, на конференции разработчиков PDC, прошедшей несколько недель назад, о будущей новинке мы узнали совсем не много, и также не много информации мы узнали о ней на конференции WinHEC.
Впрочем, некоторую новую информацию о графике будущей Windows 7 проверить все-таки удалось. Как и c большинством изменений в Windows 7, графика новинки, по сути, будет являться эволюцией графики Vista. Так, в новинке будет обновлена модель драйвера WDDM с версии 1.0 до версии 1.1, и будет внедрена графическая технология DirectX 11, которая, впрочем, будет доступна и в Vista.
Изменения в графике, которые будут реализованы в Windows 7, не будут очень сильными, хотя и они должны предоставить пользователям приветливые возможности и возможно даже значительно повлиять на их выбор в пользу новой ОС. Ниже мы попытались представить вам некоторую информацию, о том, чего же все-таки стоит ожидать от Windows 7 в плане графики.
Windows 7 | DWM и WDDM 1.1
Выход Windows Vista ознаменовался появлением новой, по тем временам, модели драйвера дисплея Windows Display Driver Model (WDDM), которая тогда получила версию 1.0. Новая модель требовалась менеджеру Desktop Window Manager (DWM) для рендеринга рабочего стола при использовании DirectX 9, давая нам аккуратный пользовательский интерфейс Aero Glass, Flip3D и т.п.. В будущем модель WDDM 1.0 будет обновлена до версии WDDM 1.1, которая потребуется для работы некоторых новых возможностей DWM в Windows 7.
И, тем не менее, Windows 7 все-таки будет работать с драйверами WDDM 1.0 и даже с XP-драйверами, однако при этом вы не получите никаких новых возможностей от DWM, а в случае XP-драйверов еще и никакого интерфейса Aero Glass, как и никаких его возможностей (также, как было с Vista).
Так что же, собственно, новенького мы получим от WDDM 1.1? Прежде всего, DWM будет использовать DirectX 10 вместо 9 и предложит некоторые приятные улучшения производительности. DWM будет использовать одно и тоже количество памяти в не зависимости от того, сколько отрыто окон. Объем используемой памяти видеокарт при открытии окон будет все-таки возрастать, однако количество памяти, требующееся на это, по сравнению с Vista будет урезано наполовину.
В конечном счете, при открытии окон на рабочем столе, Windows 7 будет использовать значительно меньше памяти. Кроме того, операционная система также должна быть быстрее и гораздо эффективнее при рендеринге рабочего стола.
Надо сказать, что Windows 7 представит и долгожданную технологию Direct2D – разновидность ускоренного 2D-замещения для интерфейса GDI, использовавшегося для прорисовки 2D-графики, линий, сплайнов и т.п. Новая Direct2D будет основываться на Direct3D 10 и будет требовать драйверов WDDM 1.1, однако взамен обеспечит стандартные приложения добавочной производительностью в работе окон.
Улучшения производительности от новых драйверов WDDM 1.1 должны ощутить и игры DirectX 10. На самом деле пока рано говорить о каких-либо точных цифрах, однако уже сейчас можно предположить, что уровень этих улучшений будет отличаться от игры к игре.
Отдельно стоит сказать об улучшениях в работе медиа-приложений, использующих в своей работе оверлейную функцию видеокарт. Ранее в Vista при использовании таких приложений пользователи сталкивались с раздражающим мерцанием экрана – один раз при запуске приложения (и уходе из Aero glass) и второй раз при выходе из приложения. Однако в будущем, благодаря Windows 7 и драйверам WDDM 1.1, эта проблема будет решена.
Также будет решена и проблема с масштабированием, возникавшая при использовании проектора с соотношением сторон 4:3, лэптопа или настольного компьютера с широкоэкранным монитором. Драйвера WDDM 1.1 будут обладать несколькими новыми режимами масштабирования, что позволит широкоэкранному монитору отображать картинку с тем же соотношением сторон, что и у проектора.
Надо сказать, что в случае наличия только драйверов WDDM 1.0, рабочий стол все-таки будет поддерживать интерфейс Aero, который, однако, будет работать на том, что Microsoft называет “10 уровень 9”. Для рендеринга рабочего стола будут использоваться те же вызовы DirectX 10 к DWM, однако они будут преобразоваться в подмножество функций DirectX 9 и, уже в преобразованном виде, будут направляться к DX9-драйверам постаревших видеокарт. Не думайте, что разработчики игр или кто-нибудь еще в действительности будет использовать эти функции – это просто метод рендеринга рабочего стола, который Microsoft предлагает для поддержки постаревшего оборудования.
К счастью, почти все видеокарты и встроенные графические чипсеты, совместимые с DX10, должны получить драйвера WDDM 1.1, и примерно за год до выпуска Windows 7 (или около того) такие карты должны стать обычным явлением.
Windows 7 | DirectX 11
Еще одной новинкой Windows 7 станет DirectX 11 или возможно даже правильнее будет сказать Direct3D 11, которую на самом деле можно считать расширенной и дополненной технологией Direct3D 10.1. И действительно новинка будет обладать всеми возможностями DX10.1, как, впрочем, и некоторыми новыми дополнениями. DX11 будет представлена в Windows 7, однако она будет доступна и в Windows Vista. Причем некоторые возможности DX11 будут работать даже на оборудовании DX10, естественно, при наличии обновленных драйверов.
Одним из ключевых улучшений новой технологии DirectX 11 станет улучшенная поддержка мультитридинга (многопотоковости). В настоящее время драйвера видеокарт на минимальном уровне уже поддерживают многопотоковость, однако сама по себе DirectX все еще остается однопотоковой и поэтому часто является узким местом в работе игр, не позволяя им работать со всей их возможной скоростью. Впрочем, в DX11 ресурсы будут загружаться асинхронно и параллельно, наряду с выполнением рендеринга. Также многопотоковыми будут и подзадачи прорисовки и состояния.
Все это должно помочь в распределении нагрузки “графической установки” на множество процессорных ядер, помогая разработчикам лучше использовать возможности многоядерных процессоров настоящего и будущего. Также возможно, что многопотоковость даст в руки игр большее количество ресурсов. Все возможности новой технологии будут поддерживаться оборудованием DirectX 11, однако и оборудование DX10 сможет использовать множество возможностей многопотоковости, естественно при условии наличия “правильных драйверов” и с несколько меньшей производительностью, чем истинное DX11-оборудование.
Еще одним важным дополнением DirectX 11 станет поддержка аппаратной тесселяции. В отличие от многопотоковости, эта возможность совсем не будет поддерживаться оборудованием DX10 и будет требовать только нового оборудования. Так, например, аппаратные тесселяционные единицы, встроенные в настоящее время в современные графические чипы от ATI, не подойдут для использования аппаратной тесселяции DirectX 11.
Сама по себе тесселяция является процессом “разбивания” низко-многоугольной сети или модели на огромное число многоугольников, в результате чего модель становится более гладкой и более детализованной. В настоящее время в 3D графике существует множество методов выполнения тесселяции, и многие из них, благодаря гибкости DX11, будут поддерживаться и будущей технологией.
Вкратце работа тесселяции будет заключаться в следующем. На вход так называемого поверхностного шэйдера (hull shader) будут поступать контрольные точки для патча (это первое появление патчевых, “заплаточных” данных в DirectX). Данные с выхода поверхностного шэйдера “скажут” тесселятору насколько тесселировать. Тесселятор же, сам по себе являющийся фиксированной функциональной единицей, возьмет данные с выхода поверхностного шэйдера и сгенерирует добавочную геометрию. Далее зональный шэйдер (Domain Shader) из данных тесселяции подсчитает положения вершин и передаст их в геометрический шэйдер.
Преимущество всего этого заключается в том, что генерирование добавочной сложной геометрии может выполняться не программно, а аппаратной – с помощью видеокарты - требуя при этом гораздо меньшего количества данных, которые необходимо послать по шине или же получить из памяти.
Надо сказать, что почти все описанные выше подфункции полностью программируемы, поэтому программисты смогут получать оптимальные для себя тесселяционные данные, зависящие от расстояния до камеры, угла и других факторов, выбираемых по своему собственному усмотрению.
И, наконец, последней, но далеко не самой малозначительной возможностью DirectX 11 станет так называемый Compute Shader или вычислительный шэйдер. Разработчики годами использовали графическое оборудование для работы так называемых “GP-GPU приложений”, однако применение для этих целей интерфейса Direct3D в лучшем случае было слишком обременительным. Ведь API и графическое оборудование просто не предназначены для общего доступа к памяти и для обобществления данных, что требуется неграфическим приложениям. А вычислительный шэйдер является первой попыткой Microsoft решить эту проблему. Благодаря нему разработчики смогут читать и писать структуры данных прямо в память, как, впрочем, и обобществлять регистры между потоками, а благодаря новому классу хранения данных "groupshared", и снизить избыточность ввода/вывода.
Более того, использование функций вычислительного шэйдера не требует выполнения никаких задач по переключению между задачами GP-GPU и графикой – вы остаетесь “в пределах драйвера DirectX”, а данные, сгенерированные вычислительным шэйдером, могут использоваться графическими стадиями API и наоборот. Последнее особенно полезно при разработке игр, где типовые функции GP-GPU могут значительно снизить производительность при переключениях видеокарты с задач GP-GPU на графику и наоборот.
Надо сказать, что основными направлениями использования вычислительных шэйдеров являются задачи по кодированию/декодированию видео, по трассировке лучей, по постобработке изображений, по решению уравнений эффектов физики, по вычислению физики игр, по созданию искусственного интеллекта и т.д.
Вы спросите, на каком оборудовании будут работать эти вычислительные шэйдеры? На самом деле они будут работать и на некотором оборудовании DX10, хотя и потребуют обновления драйверов и будут несколько ограничены функционально. В тоже время действительное оборудование DX11 даст разработчикам более произвольный доступ к памяти, добавит небольшие внутренние операции, увеличит число методов ввода/вывода, и даст возможность использовать аппаратные преобразования некоторых форматов данных во время ввода/вывода.
В настоящее время Microsoft уже проводит некоторые тесты по использованию вычислительных шэйдеров DX11 на оборудовании DX10. Причем тест Fast Fourier Transform слегка обошел по производительности приложение CUDA (интересно, как сравнивали?), однако разница в производительности может быть значительно увеличена посредством использования более нового оборудования.
Windows 7 | Гетерогенная графика и дополнения
Windows 7 и DirectX 11 принесут с собой и еще несколько дополнительных возможностей, которые, впрочем, не настолько важны, чтобы упоминать о них в предыдущем разделе. Первой такой возможностью является поддержка нескольких гетерогенных адаптеров. На самом деле эта возможность была реализована еще в XP и позволяла тогда одновременно использовать два различных графических адаптера с двумя различными драйверами и с двумя подключенными мониторами. Однако в Vista ее почему-то не стало. Впрочем, в Windows 7 с ее драйверами WDDM 1.1 поддержка нескольких адаптеров будет возвращена. Заметьте, что, не смотря на ее наличие, вы не сможете совместно использовать несколько графических адаптеров различных брендов в чем-нибудь вроде SLI или Crossfire режима для ускорения рендеринга. Ведь, по сути, это всего лишь решение по поддержке нескольких мониторов.
DX11 также будет содержать и парочку новых форматов сжатия текстур, названных BC6 и BC7. Первый такой формат будет предлагать сжатие с потерей данных с отношением 6:1 (хотя и высококачественное), а второй будет обеспечивать сжатие улучшенного качества для RGB+ alpha текстур, но ценой потери отношений сжатия. Отношение сжатия формата BC7 для RGB составит всего 3:1, а для RGBA текстур – 4:1. Новые форматы будут требовать нового DX11 оборудования, хотя и будут доступны и в Vista и в Windows 7.
Кстати говоря, фанатам видео и графики, наверное, будет интересно узнать, что новый проигрыватель Windows Media Player в Windows 7 будет поставляться с гораздо лучшей поддержкой кодеков, нежели сейчас. Так, список поддерживаемых кодеков будет содержать MPEG, DivX, Xvid, MPEG-4 (включая AVC, также известный как H.264), AAC (хотя и без поддержки защищенного контента из iTunes), WMV и WMA. Более того, Microsoft работает над стандартизацией способа взаимодействия операционной системы с аудио- и видео кодеками, пытаясь упростить работу разработчиков в добавлении поддержки для аппаратных ускоренных возможностей и, будем надеяться, для увеличения производительности в процессе.
Windows 7 | Подведем итоги
Итак, операционная система Windows 7 обещает быть несколько лучшим продуктом, чем “с самого начала должна была быть Vista”. Новинка должна получить новую драйверную модель и изменения в API, названные компанией Microsoft “минорными улучшениями”. Учитывая все это, кажется, что Windows 7 принесет с собой массу полезных возможностей. Нам же остается лишь надеяться на то, что все обещанное действительно будет выполнено и, что история с невыполнением обещаний в Vista не повторится.