Низкоуровневая поддержка аппаратного обеспечения и операционной системы
Windows Vista и DirectX 10 были спроектированы с целью улучшения
базовой модели Windows Display Driver Model (WDDM) и создания широких
возможностей повышения производительности драйвера. Кроме того, API
DirectX 10 был разработан более "чистым" и простым, максимально
лишенным ненужных возможностей, делая тем самым клиентский код более
простым для чтения и избавляя разработчиков от лишней головной боли.
DirectX 11 содержит в себя достаточно много новых возможностей, чтобы
считаться полновесным обновлением, однако он строится на основе DirectX
10 и расширяет его возможности. Любой, кто знаком с DirectX 10 и 10.1,
будет также уверенно себя чувствовать и в работе с DirectX 11. С
DirectX 11 разработчики смогут использовать аппаратные возможности
уровней 10, 10.1 и 11, работая с одним и тем же набором функций.
Время релиза финальной версии DirectX 11 будет соотнесено с релизом
новой версии Windows, но этот API будет доступен и для Windows Vista.
Таким образом, к моменту выхода нового API все аппаратные средства
уровня 10 и 10.1 смогут работать с ним. Улучшенная многопоточная обработка
Предыдущие версии Direct3D были нацелены прежде всего на работу с
конфигурациями с одноядерным CPU и потому имели ограниченную поддержку
многопоточности. В DirectX 11 были внесены изменения, которые позволят
разработчикам улучшить управление GPU со стороны многоядерного CPU.
DirectX 11 улучшает масштабирование ресурсов CPU через изменения в
моделях API и драйвера. Асинхронный доступ к устройствам становится
возможным благодаря двум ключевым особенностям объекта Direct3D 11
Device. Во-первых, усовершенствованный процесс синхронизации
между объектом Direct3D Device и драйвером позволяет делать асинхронные
вызовы API, включая распределение ресурсов. Direct3D 11 предоставляет
разработчикам больше свободы при реализации параллелизма, разрешая при
этом делать вызовы посредством множества потоков. Во-вторых,
интерфейс Direct3D Device теперь поддерживает несколько контекстов
визуализации. 1) главный прямой контекст (Immediate Context), который
руководит передачей команд на исполнение в GPU и 2) дополнительные
отложенные контексты (Deferred Contexts), создаваемые разработчиком
приложения по мере необходимости. Работа, сопоставленная с каждым
отложенным контекстом, может выполняться в отдельном потоке/ядре. Это
позволяет командам GPU накапливаться параллельно основным процессам
визуализации, и после это поступать на выполнение в GPU, когда основной
контекст уже готов предоставить на выполнение GPU новую задачу.
На представленной ниже схеме отображается процесс создания очереди из
задач визуализации параллельно основному прямому контексту и выполнение
этих задач по мере готовности устройства
Скачать
|