Аппаратное ускорение во всех областях: графика Windows 8Источник: oszone blogs.msdn.com
В компьютерной графике высокая производительность является основным принципом. На ранних этапах развития персональных компьютеров отдельные дополнительные графические платы предназначались в основном для специализированных приложений, таких как САПР и АСТПП, и игр. Даже тогда уже существовало мнение о том, что графические мощности можно было бы использовать для улучшения пользовательского интерфейса и работы пользователей. Одна из первых графических плат для ПК от компании S3 Graphics называлась Windows Accelerator. Она использовалась для отображения пользовательского интерфейса и быстрее перемещала окна по экрану. По мере развития графического оборудования эволюционировали и методы, используемые разработчиками для взаимодействия с этим оборудованием. DirectX является компонентом Windows, который предоставляет общий интерфейс API, позволяющий разработчикам использовать графическое оборудование компьютера для отрисовки текста, фигур и трехмерных сцен, а также для отображения их на экране. Возможности и производительность DirectX также развивались со временем. На ранних этапах платформа DirectX использовалась в основном для игр. По мере развития приложений и создания более графически насыщенного интерфейса многие из них стали использовать DirectX для улучшения производительности и внешнего вида. Работа над Windows 8Начиная планировать работу над графикой в Windows 8, мы знали, что собираемся создать новый, визуально насыщенный ��пособ взаимодействия пользователей с приложениями и самой операционной системой Windows. Мы также знали, что будем разрабатывать новую платформу для создания приложений в стиле Metro и будем ориентироваться на более широкий спектр оборудования. И хотя у нас была основа в виде прекрасной графической платформы, для выполнения поставленных задач требовалось много усилий. Мы сформулировали четыре основные цели:
Хотя каждая из этих целей фокусируется на различных аспектах разработки Windows 8, все они зависят от производительности и возможностей графической платформы. Планирование производительностиПроизводительность графики в Windows зависит от операционной системы и аппаратной системы, состоящей из центрального процессора, графического процессора и связанного видеодрайвера. Чтобы обеспечить хорошую производительность для новых приложений в стиле Metro, нам требовалось убедиться, что и программная платформа, и аппаратная система смогут добиться отличной производительности. В прошлом мы использовали множество различных тестов и приложений для измерения производительности DirectX. По большей части они фокусировались на трехмерных играх. Хотя игры по-прежнему очень важны, мы знали, что многие из этих методов измерения графической производительности не давали нам всей необходимой информации для основных двухмерных приложений с насыщенной графикой. Поэтому мы создали новые тесты и показатели для отслеживания нашего прогресса. Мы используем следующие показатели: 1. Частота кадровЧастота кадров выражается в кадрах в секунду (кадров/с). Этот показатель широко используется для игровых тестов и одинаково важен для видеоконтента и других приложений. Когда на экране отображается анимация, частота 60 кадров/с позволяет добиться плавного изображения. Мы нацеливаемся на эту частоту, так как большинство компьютерных мониторов обновляются с частотой 60 Гц. С этой частотой кадров Windows может воспроизводить очень плавную анимацию при использовании сенсорного управления. 2. Число сбоевЧастота кадров - важный показатель, однако он не дает всей информации. Например, если при выполнении теста в течение 10 минут средняя частота кадров составляет 60 кадров/с, то это кажется идеальным результатом. Но это не говорит нам о том, насколько сильно частота кадров могла снижаться во время теста. Например, если частота кадров падает до 10 кадров/c в сложные моменты, анимация будет "сбиваться". Показатель числа сбоев учитывает общее число случаев, когда на отрисовку ушло более 1/60 секунды, что приводит к сокращению частоты кадров. Этот показатель также учитывает число пропущенных одновременных кадров. Наша цель - добиться отсутствия пропущенных кадров во время анимации. 3. Время до первого кадраБольшинство пользователей хотят, чтобы приложения запускались быстро, поэтому инициализация DirectX должна занимать мало времени. "Время до первого кадра" говорит нам, сколько времени после касания или щелчка приложения требуется для того, чтобы увидеть первый кадр приложения на экране. Для измерения этого показателя мы создали простые приложения, помогающие анализировать и оптимизировать работу графической системы при инициализации графического устройства, выделении памяти и т. д. Это помогает обеспечить быстрое выполнение настройки DirectX. 4. Использование памятиЧем больше памяти используют графические компоненты, тем меньше памяти доступно для приложений. Гарантируя, что большая часть системной памяти доступна для приложений, вы обеспечиваете высокую производительность приложений и получаете возможность запускать больше приложений одновременно. Приложения используют сочетание системной памяти и памяти графического процессора. Память графического процессора в основном используется для операций отрисовки, таких как рисование изображений и геометрических фигур и отображение текста. Кроме того, существуют графические операции, использующие центральный процессор и, тем самым, системную память. Для классификации использования памяти мы измеряем объем памяти, используемый системой в следующих сценариях:
Измерение используемого объема памяти для различных типов приложений и сценариев помогло нам еще в большей мере оптимизировать DirectX и видеодрайверы. 5. Использование центрального процессораВ большинстве графических операций помимо графического используется и центральный процессор. Например, когда приложение определяет, что будет отображаться, оно выполняет вычисления на центральном процессоре. Показатель использования центрального процессора очень важен, так как чем выше процент его использования для задачи, тем меньше циклов он может уделить другим задачам. Для обеспечения хорошей производительности графики и общего отклика системы важно эффективно распределять нагрузку между центральным и графическим процессорами. Эти тесты и показатели помогают обеспечить плавную и быструю работу приложений и пользовательского интерфейса. Они играют важную роль в понимании основных приложений. Конечно, мы по-прежнему используем различные тесты производительности, игры и другие методы для оценки общей производительности. Аппаратное ускорение основной графикиСуществует множество способов анализа основной графики. Чтобы гарантировать, что наша работа обеспечит пользователям должный уровень производительности, мы изучили множество примеров приложений в стиле Metro и классических приложений, чтобы понять, как они используют графическое оборудование. В частности, Internet Explorer 9, Windows Live Mail и Windows Live Messenger прекрасно используют DirectX. Так как эти приложения применяют DirectX, они являются хорошими примерами того, что доступно другим приложениям. Это привело к ряду инвестиций, позволяющих сделать основные приложения быстрыми и красивыми. Повышение скорости отображения текстаНа данный момент, текст является самым часто используемым графическим элементом в Windows, поэтому повышение скорости отображения текста играет важную роль в улучшении общей производительности. Веб-страницы, почтовые программы, программы обмена мгновенными сообщениями и другие приложения для чтения выиграют от качественного и быстрого отображения текста. Язык проектирования стиля Metro обладает богатыми типографическими функциями, а несколько функций стиля Metro сфокусированы на обеспечении удобных возможностей для чтения. DirectWrite обеспечивает высокое типографское качество, сверхбыструю обработку данных шрифтов для отрисовки, а также поддерживает ведущие текстовые технологии. Мы продолжили улучшать скорость отображения текста в Windows 8, оптимизируя стандартную отрисовку текста в приложениях в стиле Metro для повышения производительности и эффективности, поддерживая при этом типографское качество и глобальные текстовые технологии. На линейчатой диаграмме ниже показаны улучшения производительности, достигнутые в результате этой работы. На ней представлены измерения для следующих текстовых сценариев:
Самые заметные улучшения производительности видны при прокручивании длинного документа на сенсорном экране. Сокращение времени, необходимое для отрисовки символов, позволяет использовать центральный процессор для обработки других задач, таких как обработка высокочастотного сенсорного ввода или отображение сложных структур документов. Улучшение производительности отрисовки геометрических объектовНаряду с текстом мы также значительно улучшили отрисовку двухмерных геометрических объектов. Отрисовка геометрических объектов - это основа графической технологии, используемой для создания таких элементов, как таблицы, диаграммы, графики и элементы пользовательского интерфейса, как показано в примере ниже. Для Windows 8 наши улучшения в этой области были сконцентрированы на высокопроизводительной реализации технологий HTML5 Canvas и SVG для применения в приложениях в стиле Metro и веб-страницах, просматриваемых в Internet Explorer 10. Приложение Weather в Windows 8 использует геометрические объекты для отображения графика температур и осадков Когда модуль Direct2D рисует геометрические объекты, он следует инструкциям приложения о том, что нужно рисовать в форме двухмерных фигур (т. е. прямоугольников, эллипсов и линий), каковы должны быть размер и положение этих фигур, а также использует данные о стиле отрисовки, в том числе цвете и формате начертания. Затем Direct2D преобразует эти инструкции в набор треугольников и команд, передаваемых в Direct3D, для формирования нужного изображения. Этот процесс преобразования мы называем тесселяцией . Чтобы улучшить скорость отрисовки геометрических объектов в Windows 8, мы решили сократить затраты центрального процессора, связанные с тесселяцией, двумя способами. Во-первых, мы оптимизировали нашу реализацию тесселяции при отрисовке простых объектов, таких как прямоугольники, линии, скругленные прямоугольники и эллипсы. Ниже представлена диаграмма с результатами этих улучшений. Во-вторых, для улучшения производительности при отрисовке неправильных объектов (например, географических границ на карте) мы используем новую аппаратную графическую функцию - независимую растеризацию цели или TIR. TIR позволяет Direct2D тратить меньше циклов центрального процессора на тесселяцию, чтобы процессор мог быстрее и эффективнее передавать инструкции по отображению в графическом процессоре, не жертвуя при этом качеством изображения. Функция TIR доступна в новых графических процессорах, разработанных для Windows 8 и поддерживающих DirectX 11.1. Ниже представлена диаграмма, показывающая улучшения производительности отрисовки геометрических объектов со сглаживанием для различных SVG-файлов на графическом процессоре с DirectX 11.1 с поддержкой TIR: Мы тесно сотрудничали с нашими партнерами, производящими графическое оборудование, для разработки TIR. Это партнерство позволило добиться значительных улучшений. Оборудование DirectX 11.1 уже доступно на рынке, а мы вместе с партнерами работаем над увеличением числа доступных TIR-совместимых продуктов. Отрисовка изображенийИзображения используются во множестве различных сценариев, в том числе при отображении пользовательского интерфейса, веб-страниц и другого содержимого приложений. На веб-сайтах часто используются JPEG-файлы для рисунков и PNG- и GIF-файлы для эффективного хранения элементов пользовательского интерфейса, таких как кнопки. Работа с цифровыми фотографиями также является одной из распространенных операций в Windows. Число фотографий, просматриваемых и обрабатываемых пользователями Windows на своих компьютерах, продолжает расти с невероятной скоростью. Мы реализовали несколько улучшений для работы с изображениями и фотографиями с использованием форматов JPEG, GIF и PNG. Вот некоторые из этих улучшений для формата JPEG:
Вот некоторые из этих улучшений для формата PNG:
Кроме того, мы улучшили преобразование формата пикселей, а также масштабирование изображений. Это позволило ускорить декодирование и отрисовку изображений для всех приложений. В видеоролике, представленном далее, используется тестовое приложение для измерения времени декодирования и отрисовки набора изображений. В Windows 8 для отрисовки 64 изображений требуется на 40% времени меньше, чем в Windows 7 (4,38 с и 7,28 с соответственно) Отрисовка и отображениеПомимо развития DirectX для поддержки основных сценариев мы также работали над оптимизацией отрисовки и отображения содержимого приложений. Существуют значительные отличия между тем, как отображает содержимое трехмерная игра, и тем, как это делает основное приложение, такое как Internet Explorer. Например, рассмотрим видеоролик игры, представленный ниже. В таких играх вся сцена изменяется очень быстро. По мере вращения "камеры" вокруг танка, по небу двигаются облака, от двигателя поднимается дым, а приложение должно перерисовывать всю сцену на каждом кадре для достижения реалистичного изображения. Загрузите это видео, чтобы просмотреть его в своем медиапроигрывателе: MP4, высокое качество / MP4, низкое качество Теперь рассмотрите веб-страницу ниже. Она содержит текстовую статью и видео. Когда видеоролик воспроизводится, браузер должен обновлять часть окна с видеороликом, но не с текстом. Кроме того, если пользователь прокручивает страницу, необходимо отрисовать только новый текст в нижней части страницы. Остальной текст уже отрисован, и его просто нужно переместить. Чтобы улучшить приложения, в которых не нужно перерисовывать весь экран для каждого кадра, мы оптимизировали то, как DirectX обрабатывает перерисовку частей экрана и прокрутку экрана. Это не только повышает эффективность и производительность приложений, но и уменьшает потребление энергии, увеличивая срок работы батареи, за счет сокращения ненужных операций рисования и объема данных, которые требуется копировать в память. Оптимизация всей платформыВсе эти изменения помогают Windows быстро и плавно выполнять отрисовку графики. Хотя мы в основн��м говорили о функциях DirectX, вся эта работа позволяет всей нашей платформе по умолчанию поддерживать аппаратное ускорение. Так как мы построили платформу стиля Metro на основе DirectX, все приложения могут воспользоваться всеми преимуществами графического оборудования в системе независимо от языка или платформы программирования, выбранных разработчиками. Создание потрясающих визуальных эффектов с помощью Direct2D и Direct3DЭффекты Direct2DСтилистические эффекты, применяемые к изображениям, становятся все более распространенными в современных пользовательских интерфейсах. Они помогают выделить область приложения, привлечь внимание к определенной части экрана или просто улучшить внешний вид элементов. Когда мы планировали разработку графических возможностей Windows 8, мы хотели упростить для разработчиков применение этих эффектов в своих приложениях. Мы рассмотрели две основных области, где обработка изображений будет полезной:
Для реализации подобных функций мы добавили "Эффекты Direct2D", новый набор интерфейсов API, позволяющих применять к любому изображению качественные эффекты с аппаратным ускорением. Эффекты Direct2D предоставляют следующие преимущества:
Эффекты Direct2D используются для реализации некоторых новых возможностей пользовательского интерфейса в Windows 8. Например, при касании плитки на начальном экране плитка использует эффект трехмерного преобразования перспективы для наклона в нужном направлении. Эти эффекты также применяются во всей платформе. Например, эффекты фильтра SVG и трехмерные преобразования CSS реализуются с помощью эффектов Direct2D. Direct3D 11.1 как общая платформаХотя добавление таких новых функций, как эффекты Direct2D - это прекрасный способ помочь разработчикам реализовать новые возможности, мы также искали способы упростить использование уже имеющихся функций DirectX. За годы разработок мы добавляли различные возможности в DirectX. Аппаратное ускорение при декодировании видео и программируемые шейдерыпоявились в Direct3D 9. В Windows 7 мы добавили Direct2D на основе Direct3D 10. В то же время мы также создали DirectCompute, новую систему для высокопроизводительных вычислений на графическом процессоре, которая стала частью Direct3D 11. В результате этих обновлений платформа DirectX получила всесторонний набор функций для обработки графики и вычислений в графическом процессоре, но побочным эффектом этого также стало усложнение создания приложений, использующих видео, двух- и трехмерную графику, текст и DirectCompute вместе. В Windows 8 новый интерфейс API Direct3D 11.1 является основной для аппаратного ускорения двухмерной графики и текста, обработки изображений, трехмерной графики и вычислений, а также воспроизведения видео. Новый интерфейс API значительно упрощает объединение различных типов контента на одной сцене, так как этот API теперь управляет всеми ресурсами графического процессора, связанными с отрисовкой. Это также сокращает объем используемой памяти за счет устранения избыточных объектов управления графикой в коде приложения. Кроме того, Direct3D 11.1 предоставляет согласованные возможности для доступа приложений к различным функциям разного графического оборудования. Direct3D 11.1 реализует механизмы, позволяющие приложению определить, какие функции доступны, и только затем использовать их. Так приложения могут извлечь максимальную выгоду из возможностей графического процессора, будь он разработан для длительной работы аккумулятора на планшете или для сложных игр на настольном ПК. Разнообразное графическое оборудованиеИсторически сложилось, что ожидания от каждого следующего выпуска Windows заключались в том, что и графическая платформа, и возможности графического оборудования будут становиться все мощнее. Это по-прежнему так, поскольку производители графического оборудования продолжают создавать все более быстрые и мощные графические процессоры. Но в Windows 7 мы начали замечать перелом в этих ожиданиях, связанный с ростом разнообразия оборудования после развития мобильных устройств с малым энергопотреблением. С приближением выхода Windows 8 эта тенденция продолжает развиваться, появляются новые высокопроизводительные графические карты и новые мобильные устройства. Оборудование для Windows 8 будет таким разнородным, как никогда ранее: от графического оборудования мощностью не более 10 Вт на планшетных ПК, постоянно подключенных к Интернету, до мощных систем с несколькими графическими картами и совокупной мощностью 1000 Вт и более. Такое разнообразие заставляет нас применять новые принципы проектирования. Нашей целью остается визуально богатая и быстро отображаемая графика. В мобильных устройствах основным источником питания является батарея, поэтому нам также нужно увеличить срок ее работы. Чтобы удовлетворить требования к производительности и энергопотреблению этих новых форм-факторов, многие из наших партнеров, производящих графическое оборудование, разработали новые архитектуры графического процессора. Системы с низким энергопотреблениемОдной из графических архитектур, часто применяемых в системах с низким энергопотреблением для достижения высокой производительности и длительной работы батареи, является "отрисовка на основе плиток". Основной концепцией такого подхода является использование небольшого кэша с очень высокой производительностью, который используется графическим модулем для отрисовки. Графический процессор отображает экран по разделам (или плиткам), повторно обрабатывая один и тот же набор команд для каждой плитки, а не отрисовывает весь экран одновременно. Цель этого процесса - минимизировать операции, использующие внешнюю память, тем самым сократив энергопотребление и повысив производительность. Многочисленные обращения к внешней памяти отнимают много времени и энергии. Чтобы повысить эффективность таких архитектур, мы добавили ряд флагов, подсказок и новых интерфейсов API, которые могут минимизировать число операций отрисовки плиток. Мы внедрили эти принципы в платформу разработки приложений в стиле Metro, чтобы добиться высокой эффективности в приложениях, работающих на графическом оборудовании, использующем архитектуру с отрисовкой на основе плиток. Еще один способ снижения энергопотребления графического оборудования и одновременного обеспечения высокой производительности - выполнение вычислений для отрисовки с помощью меньшего числа битов точности. Это позволяет графическому процессору более эффективно структурировать данные для параллельной обработки большего объема данных, что сокращает необходимую для этого мощность. В Windows 8 мы добавили новые механизмы, позволяющие приложениям указывать необходимую точность графических вычислений. Например, при смешивании нескольких изображений качеством 8 бит на компонент, вычисления смешивания можно выполнять с точностью 10 бит, а не стандартной точностью в 32 бита. Снижение точности не влияет на качество изображения, но сокращает энергопотребление. Высокая производительность и плавная отрисовкаЗагрузите это видео, чтобы просмотреть его в своем медиапроигрывателе: MP4, высокое качество / MP4, низкое качество Как видите, мы проделали много работы, чтобы добиться очень быстрого и плавного отображения графики в Windows 8. Благодаря новым способам оценки улучшений, оптимизации применения графической платформы в основных приложениях и новым аппаратным возможностям мы создали лучшую на текущий момент графическую платформу Windows. И конечно, мы продолжаем расширять горизонты для трехмерных игр с эффектом погружения благодаря прекрасной производительности и новым функциям, таким как стереоскопическое изображение. Windows 8 поддерживает самый широкий диапазон графического оборудования, от мощных игровых платформ до компактных планшетных ПК, в одной операционной системе. Надеемся, что эта запись пояснила, как наша работа позволяет реализовать абсолютно новые возможности. |