다음을 통해 공유


소급하여 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 함수를 자유 스레드할 필요는 없습니다.