소급하여 Free-Threaded CalcPrivate DDI 필요
Direct3D 버전 11에는 자유 스레드가 있는 Direct3D 버전 10 DDI 함수에서 pfnCalcPrivate 로 시작하는 사용자 모드 표시 드라이버 함수가 소급적으로 필요합니다. 이 소급 요구 사항은 드라이버가 DDI 스레딩을 지원하지 않는다고 표시하더라도 자유 스레드되는 pfnCalcPrivate* 및 pfnCalcDeferredContextHandleSize 함수를 항상 요구하도록 Direct3D 버전 11 DDI의 동작과 일치합니다. 드라이버가 스레딩 지원을 나타내는 방법에 대한 자세한 내용은 스레딩 지원, 명령 목록 및 3차원 파이프라인을 참조하세요. 이러한 소급 요구 사항의 이유는 이러한 함수가 크기에 대한 즉각적인 값을 반환하기 때문에 일반적으로 매우 간단하기 때문입니다. 더 복잡한 함수는 함수에 전달되는 매개 변수에 따라 반환할 즉각적인 값을 결정합니다. 실제로 스택 이외의 위치에 데이터를 쓰기 위해 pfnCalcPrivate 로 시작하는 함수에 대한 요구 사항이 없습니다. 이러한 함수가 매개 변수 이외의 데이터를 읽기 위한 요구 사항은 거의 없습니다. 데이터를 읽기 위한 요구 사항은 경합 문제를 생성하지 않습니다. 이 팩트를 사용하면 Direct3D 버전 11 API가 필요한 최적화를 수행하고 한 번만 수행하는 대신 만들기당 두 번(예: CreateResource(D3D10) 또는 CreateGeometryShader 호출과 같은 개체를 만들기 위한 모든 호출)을 수행하지 못하도록 방지할 수 있습니다.
이 소급 자유 스레드 요구 사항의 주목할 만한 예외는 디스플레이 디바이스 생성을 충족하는 데 사용되는 CalcPrivateDeviceSize 함수입니다. CalcPrivateDeviceSize 는 어댑터 함수 테이블(D3D10_2DDI_ADAPTERFUNCS 또는 D3D10DDI_ADAPTERFUNCS)에 있습니다. CalcPrivateDeviceSize 는 스레딩 모델에서 완화를 경험한 함수 그룹 아래에 속하지 않습니다. CalcPrivateDeviceSize 함수를 자유 스레드할 필요는 없습니다.