다음을 통해 공유


TDR 디버깅 기능 향상

이 문서에서는 Windows 11 버전 24H2(WDDM 3.2)부터 사용할 수 있는 TDR(시간 제한 검색 및 복구) 디버그 개선 사항을 설명합니다. 그래픽 드라이버 개발자는 Windows 8 이상에서 시간 제한 검색 및 복구 및 TDR에 설명된 대로 Windows의 GPU 시간 제한 검색 및 복구에 익숙해야 합니다.

DDI 변경 내용

DxgkddiCollectDbgInfo2

TDR 분석을 지원하기 위해 OS는 과거에 커널 모드 드라이버(KMD)의 DxgkddiCollectDbgInfo 콜백을 호출하여 드라이버가 시스템이 고객 컴퓨터에서 업로드하는 TDR 보고서에 자체 페이로드를 쓸 수 있도록 했습니다.

DxgkddiCollectDbgInfo2 는 TDR 디버그 확장으로 추가됩니다. 이 콜백을 사용하면 OS가 TDR의 근본 원인에 대한 자세한 정보를 KMD에 전달할 수 있습니다. 그런 다음 KMD는 TDR을 담당하는 GPU 부분과 관련된 상태를 저장할 수 있습니다.

DxgkddiCollectDbgInfo2 는 기존 DxgkddiCollectDbgInfo의 상위 집합입니다.

  • DxgkddiCollectDbgInfo2를 구현하기 위해 WDDM 3.2 드라이버가 필요하지 않습니다. 이 경우 OS는 DxgkddiCollectDbgInfo를 호출합니다.

  • KMD가 DxgkddiCollectDbgInfo2를 구현하는 경우 OS는 모든 경우에 DxgkddiCollectDbgInfo 대신 호출합니다.

DRIVER_INITIALIZATION_DATA 구조체는 DxgkddiCollectDbgInfo2에 대한 포인터를 포함하도록 확장됩니다.

DXGKARG_COLLECTDBGINFO2

OS는 추가된 DXGKARG_COLLECTDBGINFO2 구조를 DxgkddiCollectDbgInfo2에 전달합니다.

DXGKARG_COLLECTDBGINFO2 레이아웃은 DXGKARG_COLLECTDBGINFO 구조와 이전 버전과의 호환성을 유지하여, DxgkDdiCollectDbgInfo2 구현이 필요에 따라 기존 DxgkDdiCollectDbgInfo 도우미를 재사용할 수 있도록 합니다. 이러한 이유로 이유, pBuffer, BufferSizepExtension 필드에는 동일한 의미 체계가 있습니다.

DXGKARG_COLLECTDBGINFO2에는 포함되지만, DXGKARG_COLLECTDBGINFO에는 포함되지 않은 다음과 같은 기타 필드들이 있습니다.

일부 TDR 형식의 경우 OS는 TdrPayloadSize 바이트의 TdrPayload 버퍼에 추가 정보를 제공합니다. NULL일 수 있으며 드라이버는 충돌 없이 이 사례를 처리해야 합니다.

페이로드가 NULL이 아닌 경우 TDR 형식에 해당하는 구조체로 캐스팅할 수 있습니다. OS는 이전 버전과 호환되는 방식으로 이러한 구조를 확장하여 끝에 새 필드를 추가할 수 있습니다. 드라이버는 TdrPayload 필드에 액세스하기 전에 TdrPayloadSize를 확인하여 OS가 원하는 페이로드 버전 이상을 구현하는지 확인해야 합니다.

TdrPayload가 가리키는 메모리는 DxgkddiCollectDbgInfo2 호출 중에만 유효합니다. 드라이버는 DxgkddiCollectDbgInfo2 호출의 끝을 지나 TdrPayload에 대한 포인터를 저장해서는 안 됩니다.

WDDM 3.2부터 다음 페이로드 구조는 TdrPayload 가 가리킬 수 있는 페이로드로 추가됩니다.