Многопоточный рендеринг в DirectX 11

Многопоточный рендеринг – одна из самых важных особенностей DirectX 11. Сегодня, самую преобладающую позицию захватили двуядерные модели, но в скором будущем, «одеяло» перетянут четырехядерные. В связи с этим разработчики компаний Nvidia и AMD уже совершали попытки проделать работу над многопоточными драйверами, но, к сожалению, все сводилось, только к одному потоку.

С появлением версии DirectX 11 ситуация коренным образом изменилась. Компания Microsoft позволила использовать все функции пакета DirectX 11 на программном обеспечении DirectX 10, но при этом специалисты должны выполнить определенную работу для использования поддержки на своих драйверах. Когда это станет возможным для DX11, не составит никакого труда, перенести эту поддержку и в DX10.

Разработчикам из Microsoft уже удалось достичь этого, благодаря разбиению компонента Direct3D на несколько частей: Device, прямой (Immediate Context) и отложенный (Deferred Context) контексты.

Разработчик имеет возможность самостоятельно определить, какой будет порядок размещения операций в очереди для Immediate Context, в связи с тем, что переключение с потока на поток легко контролировать.

Для графических карт DX10 Deferred Context должен быть выполнен на программном уровне, потому что, в новом программном обеспечении все будет оптимизировано для многопоточного рендеринга.