Практическое руководство. Проверка поддержки драйверов
В этом разделе показано, как определить, поддерживаются ли функции многопоточности (включая создание ресурсов и списки команд) для аппаратного ускорения.
Мы рекомендуем приложениям проверка для поддержки многопоточности графического оборудования. Если драйвер и графическое оборудование не поддерживают создание многопоточных объектов, производительность может быть ограничена следующими способами:
- Одновременное создание нескольких объектов (даже разных типов) может быть ограничено.
- Создание объекта при отрисовке графических команд с помощью непосредственного контекста может быть ограничено. Например, если оборудование не поддерживает многопоточность, приложению следует избегать создания в фоновом потоке объекта, для создания которому требуется очень много времени. Операция создания, которая занимает очень много времени, может заблокировать немедленную отрисовку контекста и увеличить риск заикания визуальной частоты кадров.
Среда выполнения поддерживает многопоточность и списки команд независимо от поддержки драйверов и оборудования; Если нет поддержки драйверов и оборудования для многопоточных операций или списков команд, среда выполнения эмулирует эти функции. Дополнительные сведения о многопоточности см. в статье Общие сведения о многопоточности в Direct3D 11.
Чтобы проверка для поддержки многопотоковой поддержки драйверов, выполните приведенные далее действия.
- Инициализируйте объект интерфейса ID3D11Device . По умолчанию включена многопоточность.
- Вызовите ID3D11Device::CheckFeatureSupport. Передайте значение D3D11_FEATURE_THREADING параметру Feature , структуру D3D11_FEATURE_DATA_THREADING в параметр pFeatureSupportData , а размер структуры D3D11_FEATURE_DATA_THREADING передайте в параметр FeatureSupportDataSize .
- Если метод ID3D11Device::CheckFeatureSupport завершается успешно, то структура D3D11_FEATURE_DATA_THREADING , переданная на предыдущем шаге, будет инициализирована со сведениями о поддержке многопоточности.
Если driverConcurrentCreates имеет значение TRUE, драйвер может создать несколько ресурсов одновременно (одновременно) в разных потоках.
Если driverCommandLists имеет значение TRUE, драйвер поддерживает списки команд. То есть команды отрисовки, выдаваемые непосредственным контекстом, могут выполняться одновременно с созданием объектов в отдельных потоках с низким риском заикания частоты кадров.
Если DriverConcurrentCreates имеет значение FALSE, драйвер не поддерживает параллельное создание, что означает, что возможный объем параллелизма чрезвычайно ограничен. Графическое оборудование не может одновременно создавать объекты разных типов в разных потоках. Кроме того, графическое оборудование не может использовать непосредственный контекст для выполнения команд отрисовки, пока графическое оборудование пытается создать ресурс в другом потоке.
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по