스레딩 및 동기화 수준 0
수준 제로 스레딩 및 동기화에서 WDDM은 디스플레이 미니포트 드라이버에 대한 Level Zero DxgkDdi*Xxx 호출을 재진입 방식으로 만들 수 있도록 허용합니다. 즉, 둘 이상의 스레드가 Level Zero DDI를 호출하여 동시에 드라이버를 입력할 수 있습니다.
드라이버는 시스템의 모든 스레드가 들어올 것으로 예상해야 하며 그에 따라 해당 스레드의 데이터를 보호해야 합니다.
드라이버에서 두 개 이상의 스레드를 동시에 실행할 수 있지만 두 개의 스레드는 단일 프로세스에 속할 수 없습니다.
수준 0은 기본 스레딩 및 동기화 수준이며 다음과 같은 함수를 포함합니다.
- DxgkDdiCheckMultiPlaneOverlaySupport3 (또는 DxgkDdiCheckMultiPlaneOverlaySupport2/DxgkDdiCheckMultiPlaneOverlaySupport)
- DxgkDdiCloseAllocation
- DxgkDdiCollectDbgInfo. 이 함수는 다양한 오류에 대한 디버그 정보를 수집해야 하며 언제든지 높은 IRQL에서 호출할 수 있습니다(즉, DxgkDdiCollectDbgInfo 가 실행되는 IRQL은 일반적으로 정의되지 않음). 모든 경우에 DxgkDdiCollectDbgInfo 는 필요한 디버그 정보의 가용성과 적절한 동기화를 확인해야 합니다. 그러나 pCollectDbgInfo 매개 변수가 가리키는 DXGKARG_COLLECTDBGINFO 구조체의 Reason 멤버가 VIDEO_TDR_TIMEOUT_DETECTED 또는 VIDEO_ENGINE_TIMEOUT_DETECTED 설정된 경우 드라이버는 DxgkDdiCollectDbgInfo가 페이징 가능하고 IRQL = PASSIVE_LEVEL 실행되며 동기화 0 수준을 지원하도록 해야 합니다.
- DxgkDdiControlEtwLogging
- DxgkDdiCreateAllocation
- DxgkDdiCreateContext
- DxgkDdiCreateDevice
- DxgkDdiDescribeAllocation
- DxgkDdiDestroyAllocation
- DxgkDdiDestroyContext
- DxgkDdiDestroyDevice
- DxgkDdiDpcRoutine
- DxgkDdiEnumVidPnCofuncModality
- DxgkDdiGetScanLine
- DxgkDdiGetStandardAllocationDriverData
- DxgkDdiInterruptRoutine
- DxgkDdiIsSupportedVidPn
- DxgkDdiMiracastCreateContext
- DxgkDdiMiracastDestroyContext
- DxgkDdiMiracastIoControl
- DxgkDdiMiracastQueryCaps
- DxgkDdiOpenAllocation
- DxgkDdiPresent
- DxgkDdiQueryAdapterInfo
- DxgkDdiQueryCurrentFence
- DxgkDdiRecommendFunctionalVidPn
- DxgkDdiRecommendVidPnTopology
- DxgkDdiRender
- DxgkDdiRenderKm
- DxgkDdiResetDevice