перечисление D3D11_CREATE_DEVICE_FLAG (d3d11.h)

Описывает параметры, используемые для создания устройства.

Синтаксис

typedef enum D3D11_CREATE_DEVICE_FLAG {
  D3D11_CREATE_DEVICE_SINGLETHREADED = 0x1,
  D3D11_CREATE_DEVICE_DEBUG = 0x2,
  D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
  D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8,
  D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x20,
  D3D11_CREATE_DEVICE_DEBUGGABLE = 0x40,
  D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x80,
  D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
  D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x800
} ;

Константы

 
D3D11_CREATE_DEVICE_SINGLETHREADED
Значение: 0x1
Используйте этот флаг, если приложение будет вызывать только методы интерфейсов Direct3D 11 из одного потока. По умолчанию объект ID3D11Device является потокобезопасным.
С помощью этого флага можно повысить производительность. Однако если вы используете этот флаг и приложение вызывает методы интерфейсов Direct3D 11 из нескольких потоков, может возникнуть неопределенное поведение.
D3D11_CREATE_DEVICE_DEBUG
Значение: 0x2
Создает устройство, поддерживающее уровень отладки.

Чтобы использовать этот флаг, необходимо установить D3D11*SDKLayers.dll; В противном случае создание устройства завершается сбоем. Чтобы получить D3D11_1SDKLayers.dll, установите пакет SDK для Windows 8.
D3D11_CREATE_DEVICE_SWITCH_TO_REF
Значение: 0x4
Примечание Этот флаг не поддерживается в Direct3D 11.

 
D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS
Значение: 0x8
Предотвращает создание нескольких потоков. Если этот флаг используется с устройством windows Advanced Rasterization Platform (WARP), warp не будет создавать дополнительные потоки.
и вся растеризация будет выполняться в вызывающем потоке. Этот флаг не рекомендуется для общего использования. См. примечания.
D3D11_CREATE_DEVICE_BGRA_SUPPORT
Значение: 0x20
Создает устройство, поддерживающее форматы BGRA (DXGI_FORMAT_B8G8R8A8_UNORM и DXGI_FORMAT_B8G8R8A8_UNORM_SRGB). Все 10level9 и более поздние версии оборудования с драйверами WDDM 1.1 и более поздних версий поддерживают форматы BGRA.

Примечание Требуется для взаимодействия Direct2D с ресурсами Direct3D.

 
D3D11_CREATE_DEVICE_DEBUGGABLE
Значение: 0x40
Заставляет устройство и драйвер хранить сведения, которые можно использовать для отладки шейдеров. Точное влияние этого флага будет зависеть от драйвера к драйверу.

Чтобы использовать этот флаг, необходимо установить D3D11_1SDKLayers.dll; В противном случае создание устройства завершается сбоем. Созданное устройство поддерживает уровень отладки. Чтобы получить D3D11_1SDKLayers.dll, установите пакет SDK для Windows 8.

Если вы используете этот флаг, а текущий драйвер не поддерживает отладку шейдеров, создание устройства завершится ошибкой. Для отладки шейдеров требуется драйвер, реализованный в WDDM для Windows 8 (WDDM 1.2).

Direct3D 11: Это значение не поддерживается до Версии Direct3D 11.1.
D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY
Значение: 0x80
Приводит к тому, что среда выполнения Direct3D игнорирует параметры реестра, включающие уровень отладки. Уровень отладки можно включить с помощью панель управления DirectX, включенного в состав пакета SDK для DirectX. Последняя версия пакета SDK Для DirectX была отправлена в июне 2010 г. Его можно скачать в Центре загрузки Майкрософт. Этот флаг можно установить в приложении(обычно только в сборках выпусков), чтобы запретить конечным пользователям использовать панель управления DirectX для отслеживания использования Direct3D в приложении.

Примечание Вы также можете установить этот флаг в приложении, чтобы предотвратить подключение приложения средствами отладки Direct3D, такими как Visual Studio Ultimate 2012.

 

Windows 8.1: этот флаг не запрещает Visual Studio 2013 и более поздним запуском в Windows 8.1 и более поздних версиях приложения. Вместо этого используйте ID3D11DeviceContext2::IsAnnotationEnabled. Этот флаг по-прежнему не позволяет Visual Studio 2013 и более поздним запуском в Windows 8 и более ранних версиях приложения.

Direct3D 11: Это значение не поддерживается до Версии Direct3D 11.1.
D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT
Значение: 0x100
Используйте этот флаг, если устройство будет создавать рабочие нагрузки GPU, которые занимают более двух секунд, и вы хотите, чтобы операционная система позволила им успешно завершить работу. Если этот флаг не установлен, операционная система выполняет обнаружение и восстановление времени ожидания при обнаружении пакета GPU, выполнение которому потребовалось более двух секунд. Если этот флаг установлен, операционная система позволяет выполнять такой длительный пакет без сброса GPU. Мы не рекомендуем устанавливать этот флаг, если устройство должно быть высоко реагирующим, чтобы операционная система ела обнаруживать и восстанавливаться после истечения времени ожидания GPU. Рекомендуется установить этот флаг, если устройство должно выполнять трудоемкие фоновые задачи, такие как вычисления, распознавание изображений и кодирование видео, чтобы обеспечить успешное завершение таких задач.

Direct3D 11: Это значение не поддерживается до Версии Direct3D 11.1.
D3D11_CREATE_DEVICE_VIDEO_SUPPORT
Значение: 0x800
Создает сбой устройства Direct3D, если драйвер дисплея не реализован в WDDM для Windows 8 (WDDM 1.2). Если драйвер дисплея не реализован в WDDM 1.2, видео поддерживает только устройство Direct3D, созданное с уровнем компонентов 9.1, 9.2 или 9.3; Поэтому, если этот флаг установлен, среда выполнения создает устройство Direct3D только для уровней компонентов 9.1, 9.2 или 9.3. Рекомендуется не указывать этот флаг для приложений, которые хотят использовать возможность Direct3D вместо видео. Если доступен уровень компонентов 10 и выше, среда выполнения будет использовать этот уровень компонентов независимо от поддержки видео.

Если этот флаг установлен, создание устройства на базовом устройстве отрисовки (BRD) будет выполнено успешно, независимо от того, в BRD отсутствует поддержка декодирования видео. Это связано с тем, что стек видео Media Foundation работает в программном режиме на BRD. В этом случае, если принудить стек видео создать устройство Direct3D дважды (создать устройство один раз с этим флагом, затем обнаружить BRD, а затем снова создать устройство без флага), производительность будет снижена.

При попытке создать устройство Direct3D с типом драйвера D3D_DRIVER_TYPE_NULL, D3D_DRIVER_TYPE_REFERENCE или D3D_DRIVER_TYPE_SOFTWARE создание устройства на любом уровне функций завершается сбоем, так как ни один из соответствующих драйверов не предоставляет возможности видео. Если вы пытаетесь создать устройство Direct3D с типом драйвера D3D_DRIVER_TYPE_WARP, создание устройства будет выполнено успешно, чтобы разрешить использование программного обеспечения для видео.

Direct3D 11: Это значение не поддерживается до Версии Direct3D 11.1.

Комментарии

Флаги создания устройств используются D3D11CreateDevice и D3D11CreateDeviceAndSwapChain.

Приложение может динамически создавать (и уничтожать) потоки для повышения производительности, особенно на компьютере с несколькими ядрами ЦП. Однако могут возникать случаи, когда приложению необходимо запретить создание дополнительных потоков. Это может произойти, если требуется упростить отладку, профилировать код или разработать, например, средство. В этих случаях используйте D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS , чтобы запросить, чтобы среда выполнения и видеодрайвор не создавали дополнительные потоки, которые могут помешать работе приложения.

Требования

Требование Значение
Заголовок d3d11.h

См. также раздел

Перечисления core