Rückwirkende Anforderung Free-Threaded CalcPrivate-DDIs

Direct3D Version 11 erfordert rückwirkend Anzeigetreiberfunktionen im Benutzermodus, die mit pfnCalcPrivate in Direct3D Version 10 DDI-Funktionen beginnen, die Freithreads sind. Diese rückwirkende Anforderung entspricht dem Verhalten von Direct3D Version 11 DDI, sodass immer die Funktionen pfnCalcPrivate* und pfnCalcDeferredContextHandleSize erforderlich sind, die freethreaded sind, auch wenn der Treiber angibt, dass DDI-Threading nicht unterstützt wird. Weitere Informationen dazu, wie der Treiber Threadingunterstützung angibt, finden Sie unter Unterstützung von Threading, Befehlslisten und 3D-Pipeline. Der Grund für diese rückwirkende Anforderung ist, dass solche Funktionen in der Regel sehr einfach sind, da sie einen sofortigen Wert für die Größe zurückgeben. Die komplexeren Funktionen entscheiden basierend auf den Parametern, die an die Funktion übergeben werden, welchen unmittelbaren Wert zurückgegeben werden soll. Die Anforderung, dass Funktionen, die mit pfnCalcPrivate beginnen, tatsächlich Daten an andere Orte als den Stapel schreiben, ist nicht vorhanden. Die Anforderung, dass diese Funktionen alle anderen Daten als Parameter lesen, ist eine Seltenheit. Jede Anforderung zum Lesen von Daten führt nicht zu Konflikten. Diese Tatsache ermöglicht es der Direct3D Version 11-API, eine dringend benötigte Optimierung durchzuführen und zu verhindern, dass eine teure Synchronisierung zweimal pro Erstellung durchgeführt wird (z. B. jeder Aufruf zum Erstellen eines Objekts wie einen Aufruf von CreateResource(D3D10) oder CreateGeometryShader), anstatt nur einmal.

Eine wichtige Ausnahme von dieser rückwirkenden Freethreadanforderung ist die CalcPrivateDeviceSize-Funktion , die verwendet wird, um die Erstellung des Anzeigegeräts zu erfüllen. CalcPrivateDeviceSize befindet sich in der Adapterfunktionstabelle (D3D10_2DDI_ADAPTERFUNCS oder D3D10DDI_ADAPTERFUNCS). CalcPrivateDeviceSize fällt nicht unter die Gruppe von Funktionen, für die die Entspannung im Threadingmodell aufgetreten ist. Es ist nicht erforderlich, die CalcPrivateDeviceSize-Funktion frei threaden zu lassen.