Четверг, 28 Марта 2024, 14:55:40
Приветствую Вас Гость | RSS
Поиск
Главная | Каталог статей | Регистрация | Вход
Igor ViV
           Персональный Портал
Форма входа
Меню сайта

Категории каталога
Мои статьи [30]

Друзья сайта

Мини-чат

Наш опрос
Какая у Вас скорость интернета?
Всего ответов: 1184

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Мои статьи

Новые возможности DirectX 11 - Многопоточный рендеринг
Хотя многопоточный рендеринг сложно назвать новой частью графического конвейера, это невероятно важная особенность DirectX 11. Она становится ещё более важной, если вы посмотрите на её потенциал с расчетом на портирование этих усовершенствований на аппаратные средства класса DirectX 10 при помощи обновления драйверов.
Сегодня на рынке преобладают двухядерные CPU, хотя четырехядерные модели становятся все более доступными для геймеров и энтузиастов, поэтому в ближайшем будущем четырехядерные процессоры заменят своих двуядерных собратьев, став в области процессоров стандартом де-факто. Учитывая этот факт, возникает резонный вопрос, почему DirectX до сих пор не поддерживает многопоточный рендеринг. Справедливости ради стоит отметить, что и AMD, и Nvidia уже работали над многопоточными драйверами, однако успех этих начинаний был ограничен тем, что API в конечном счете сводил все к одному потоку.
Некоторые разработчики придумывали способы использования дополнительных ядер, в то время как другие изо всех сил пытались извлечь больше производительности и часто оставляли простаивать эти дополнительные ядра. Сегодня таких проблем становится всё меньше, поскольку разработчики стали думать по поводу распараллеливания потоков, но всё ещё есть такие сценарии, когда приложение сильно ограничивается возможностями CPU.
К счастью, с приходом DirectX 11 ситуация должна коренным образом измениться, и Microsoft сделает возможным получение выгоды от использования этих функций на аппаратном обеспечении DirectX 10. Команды разработчиков соответствующих драйверов в AMD и Nvidia должны будут проделать определенный комплекс работ, чтобы осуществить поддержку этих функций в своих драйверах, но как только они это сделают для DX11, им не составит большого труда перенести эту поддержку и в DX10.
Microsoft удалось достичь этого путем разбиения устройства Direct3D на три отдельных интерфейса: Device, Immediate Context (прямой контекст) и Deferred Context (отложенный контекст). Каждый из них назначается на поток, поэтому благодаря интерфейсам Device и Deferred Context на задачи, стоящие в очереди Immediate Context или потока обработки, может быть назначено больше одного потока.
Переключение между потоками легко контролировать, так что разработчик должен будет сам решать, как и в каком порядке операции будут помещаться в очередь для интерфейса Immediate Context. Каждый интерфейс Device может загружать потоковые ресурсы как и когда угодно в то время, как интерфейс Deferred Context служит в качестве работающего с потоками контекста устройств для будущих операций рендеринга - он организует очередь из запросов прорисовки (или списков команд Display List) прежде, чем передать их интерфейсу Immediate Context, когда он будет готов.
Для графических карт поколения DirectX 10 интерфейс Deferred Context должен реализоваться на программном, а не аппаратном, уровне, поскольку в новом аппаратном обеспечении будут сделаны соответствующие оптимизации для многопоточного рендеринга. Из-за этого интерфейсы Deferred Context не смогут самостоятельно распределяться по потокам на аппаратном обеспечении DX10 и это прийдётся сделать на уровне API.
Категория: Мои статьи | Добавил: igorviv (19 Декабря 2008)
Просмотров: 1475 | Рейтинг: 3.0/2 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright Igor ViV © 2024