참고 항목
XDDM 및 VGA 드라이버는 Windows 8 이상 운영 체제에서 컴파일되지 않습니다. WDDM 1.2 이상을 지원하도록 인증된 드라이버가 없는 Windows 8 컴퓨터에 디스플레이 하드웨어가 연결된 경우 시스템은 기본적으로 기본 디스플레이 드라이버를 실행합니다.
다음과 같은 향상된 기능으로 인해 Windows 2000 XDDM(디스플레이 드라이버 모델)을 사용하는 것이 아니라 WDDM을 사용하여 그래픽/디스플레이 드라이버를 만드는 것이 더 쉽습니다. 또한 WDDM 드라이버는 운영 체제 안정성 및 보안 향상에 기여합니다. 커널 모드에서 실행되는 드라이버 코드가 적어 시스템 주소 공간에 액세스하여 충돌이 발생할 수 있습니다.
Direct3D 런타임 및 DirectX 그래픽 커널 하위 시스템(Dxgkrnl)은 더 많은 디스플레이 처리를 수행합니다. 즉, 드라이버가 아닌 런타임 및 하위 시스템에 더 많은 코드가 있습니다. 이 처리에는 비디오 메모리를 관리하고 GPU에 대한 DMA(직접 메모리 액세스) 버퍼를 예약하는 코드가 포함됩니다. 자세한 내용은 비디오 메모리 관리 및 GPU 예약을 참조 하세요.
표면을 만들려면 커널 모드 단계가 더 적습니다.
Windows Vista보다 이전 운영 체제에서 Surface를 만들려면 다음 연속 커널 모드 호출이 필요했습니다.
WDDM에서 Surface를 만들려면 CreateResource 사용자 모드 표시 드라이버 호출만 필요합니다. 이 호출은 런타임의 pfnAllocateCb 함수를 호출합니다. 이 호출을 통해 Dxgkrnl은 커널 모드 드라이버의 DxgkDdiCreateAllocation 함수를 호출합니다.
표면을 만들고 파괴하는 호출과 잠금 및 잠금 해제 리소스는 더 균등하게 쌍을 이릅니다.
WDDM은 비디오 메모리, 시스템 메모리 및 관리되는 표면을 동일하게 처리합니다. Windows Vista 이전의 운영 체제는 이러한 구성 요소를 미묘하게 다른 방식으로 처리했습니다.
셰이더 변환은 디스플레이 드라이버의 사용자 모드 부분에서 수행됩니다.
이 방법은 셰이더 변환이 커널 모드에서 수행될 때 발생하는 다음과 같은 복잡성을 제거합니다.
- DDI(디바이스 드라이버 인터페이스) 추상화와 일치하지 않는 하드웨어 모델
- 번역에 사용되는 복잡한 컴파일러 기술
셰이더 처리는 프로세스별로 완전히 수행되며 하드웨어 액세스가 필요하지 않으므로 커널 모드 셰이더 처리가 필요하지 않습니다. 따라서 셰이더 변환 코드는 사용자 모드에서 처리할 수 있습니다.
사용자 모드 번역 코드와 관련한 try/except 코드를 작성해야 합니다. 번역 오류로 인해 애플리케이션 처리가 반환됩니다.
백그라운드 변환(즉, 다른 디스플레이 처리 스레드와는 별도의 스레드에서 실행되는 번역 코드)은 사용자 모드에 대해 더 쉽게 작성할 수 있습니다.