D3D11_CREATE_DEVICE_FLAG 열거형(d3d11.h)

디바이스를 만드는 데 사용되는 매개 변수에 대해 설명합니다.

Syntax

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 받으려면 Windows 8 SDK를 설치합니다.
D3D11_CREATE_DEVICE_SWITCH_TO_REF
값: 0x4
참고 이 플래그는 Direct3D 11에서 지원되지 않습니다.

 
D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS
값: 0x8
여러 스레드가 만들어지는 것을 방지합니다. 이 플래그를 WARP(Windows Advanced Rasterization Platform) 디바이스와 함께 사용하는 경우 WARP에서 추가 스레드를 만들지 않습니다.
모든 래스터화는 호출 스레드에서 발생합니다. 이 플래그는 일반적으로 사용하지 않는 것이 좋습니다. 설명을 참조하세요.
D3D11_CREATE_DEVICE_BGRA_SUPPORT
값: 0x20
BGRA 형식(DXGI_FORMAT_B8G8R8A8_UNORM 및 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB)을 지원하는 디바이스를 만듭니다. WDDM 1.1 이상의 드라이버가 있는 모든 10level9 이상 하드웨어는 BGRA 형식을 지원합니다.

참고 Direct3D 리소스와의 Direct2D 상호 운용성에 필요합니다.

 
D3D11_CREATE_DEVICE_DEBUGGABLE
값: 0x40
디바이스와 드라이버가 셰이더 디버깅에 사용할 수 있는 정보를 유지하도록 합니다. 이 플래그의 정확한 영향은 드라이버마다 다릅니다.

이 플래그를 사용하려면 D3D11_1SDKLayers.dll 설치되어 있어야 합니다. 그렇지 않으면 디바이스 만들기가 실패합니다. 만든 디바이스는 디버그 계층을 지원합니다. D3D11_1SDKLayers.dll 받으려면 Windows 8 SDK를 설치합니다.

이 플래그를 사용하고 현재 드라이버가 셰이더 디버깅을 지원하지 않으면 디바이스 만들기가 실패합니다. 셰이더 디버깅에는 WDDM 1.2(Windows 8 위해 WDDM에 구현된 드라이버가 필요합니다.

Direct3D 11: 이 값은 Direct3D 11.1까지 지원되지 않습니다.
D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY
값: 0x80
Direct3D 런타임이 디버그 계층을 켜는 레지스트리 설정을 무시하도록 합니다. DirectX SDK의 일부로 포함된 DirectX 제어판 사용하여 디버그 계층을 켤 수 있습니다. 2010년 6월에 DirectX SDK의 마지막 버전을 배송했습니다. Microsoft 다운로드 센터에서 다운로드할 수 있습니다. 앱에서 일반적으로 릴리스 빌드에서만 이 플래그를 설정하여 최종 사용자가 DirectX 제어판 사용하여 앱이 Direct3D를 사용하는 방법을 모니터링하지 못하도록 할 수 있습니다.

참고 앱에서 이 플래그를 설정하여 Visual Studio Ultimate 2012와 같은 Direct3D 디버깅 도구가 앱을 연결하지 못하도록 할 수도 있습니다.

 

Windows 8.1: 이 플래그는 Windows 8.1 이상에서 실행되는 Visual Studio 2013 방지하지 않습니다. 대신 ID3D11DeviceContext2::IsAnnotationEnabled를 사용합니다. 이 플래그는 여전히 Visual Studio 2013 이상 Windows 8 및 이전 버전에서 앱을 후크하지 못하게 합니다.

Direct3D 11: 이 값은 Direct3D 11.1까지 지원되지 않습니다.
D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT
값: 0x100
디바이스가 완료하는 데 2초 이상 걸리는 GPU 워크로드를 생성하고 운영 체제가 성공적으로 완료되도록 하려면 이 플래그를 사용합니다. 이 플래그가 설정되지 않은 경우 운영 체제는 실행하는 데 2초 이상 걸린 GPU 패킷을 검색할 때 시간 제한 검색 및 복구 를 수행합니다. 이 플래그가 설정되면 운영 체제에서 GPU를 다시 설정하지 않고 이러한 장기 실행 패킷을 실행할 수 있습니다. 운영 체제가 GPU 시간 제한을 감지하고 복구할 수 있도록 디바이스의 응답성이 높아야 하는 경우 이 플래그를 설정하지 않는 것이 좋습니다. 이러한 작업을 성공적으로 완료할 수 있도록 디바이스에서 컴퓨팅, 이미지 인식 및 비디오 인코딩과 같은 시간이 많이 걸리는 백그라운드 작업을 수행해야 하는 경우 이 플래그를 설정하는 것이 좋습니다.

Direct3D 11: 이 값은 Direct3D 11.1까지 지원되지 않습니다.
D3D11_CREATE_DEVICE_VIDEO_SUPPORT
값: 0x800
디스플레이 드라이버가 WDDM for Windows 8(WDDM 1.2)에 구현되지 않은 경우 Direct3D 디바이스 만들기가 강제로 실패합니다. 디스플레이 드라이버가 WDDM 1.2에 구현되지 않은 경우 기능 수준 9.1, 9.2 또는 9.3으로 만든 Direct3D 디바이스만 비디오를 지원합니다. 따라서 이 플래그가 설정되면 런타임은 기능 수준 9.1, 9.2 또는 9.3에 대해서만 Direct3D 디바이스를 만듭니다. 비디오보다 Direct3D 기능을 선호하려는 애플리케이션에는 이 플래그를 지정하지 않는 것이 좋습니다. 기능 수준 10 이상을 사용할 수 있는 경우 런타임은 비디오 지원에 관계없이 해당 기능 수준을 사용합니다.

이 플래그가 설정되면 BRD(기본 렌더링 디바이스)에서 디바이스를 만드는 작업은 비디오 디코딩에 대한 BRD의 누락된 지원과 관계없이 성공합니다. Media Foundation 비디오 스택이 BRD의 소프트웨어 모드에서 작동하기 때문입니다. 이 상황에서 비디오 스택이 Direct3D 디바이스를 두 번 만들도록 강제하는 경우(이 플래그를 사용하여 디바이스를 한 번 만든 다음, BRD를 검색한 다음, 플래그 없이 디바이스를 다시 만들면) 실제로 성능이 저하됩니다.

드라이버 유형이 D3D_DRIVER_TYPE_NULL, D3D_DRIVER_TYPE_REFERENCE 또는 D3D_DRIVER_TYPE_SOFTWARE Direct3D 디바이스를 만들려고 하면 연결된 드라이버 중 비디오 기능을 제공하지 않으므로 디바이스 만들기가 모든 기능 수준에서 실패합니다. 드라이버 유형 이 D3D_DRIVER_TYPE_WARP Direct3D 디바이스를 만들려고 하면 디바이스를 만들면 비디오에 대한 소프트웨어 대체가 허용됩니다.

Direct3D 11: 이 값은 Direct3D 11.1까지 지원되지 않습니다.

설명

디바이스 만들기 플래그는 D3D11CreateDeviceD3D11CreateDeviceAndSwapChain에서 사용됩니다.

애플리케이션은 특히 여러 CPU 코어가 있는 컴퓨터에서 성능을 향상시키기 위해 스레드를 동적으로 만들고 삭제할 수 있습니다. 그러나 애플리케이션에서 추가 스레드가 생성되지 않도록 해야 하는 경우가 있을 수 있습니다. 이는 디버깅을 간소화하거나, 코드를 프로파일링하거나, instance 위한 도구를 개발하려는 경우에 발생할 수 있습니다. 이러한 경우 D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS 사용하여 런타임 및 비디오 드라이버가 애플리케이션을 방해할 수 있는 추가 스레드를 만들지 않도록 요청합니다.

요구 사항

요구 사항
헤더 d3d11.h

추가 정보

핵심 열거형