Richiesta retroattiva di Free-Threaded CalcPrivate DDIs

Direct3D versione 11 richiede in modo retroattivo le funzioni del driver di visualizzazione in modalità utente che iniziano con pfnCalcPrivate nelle funzioni DDI direct3D versione 10 che sono a thread libero. Questo requisito retroattivo corrisponde al comportamento delle funzioni DDI Direct3D versione 11 per richiedere sempre pfnCalcPrivate* e pfnCalcDeferredContextHandleSize funzioni a thread libero anche se il driver indica che non supporta il threading DDI. Per altre informazioni su come il driver indica il supporto del threading, vedere Supporto di threading, elenchi di comandi e pipeline 3D. Il motivo di questo requisito retroattivo è che tali funzioni sono in genere molto semplici perché restituiscono un valore immediato per le dimensioni. Le funzioni più complesse decidono quale valore immediato restituire in base ai parametri passati alla funzione. Requisito per le funzioni che iniziano con pfnCalcPrivate per scrivere effettivamente dati in posizioni diverse dallo stack non esiste. Il requisito per queste funzioni di leggere dati diversi dai parametri è una rarità. Qualsiasi requisito di lettura dei dati non genera problemi di contesa. Questo fatto consente all'API Direct3D versione 11 di eseguire un'ottimizzazione molto necessaria e impedire l'esecuzione di una sincronizzazione costosa due volte per ogni creazione (ad esempio, qualsiasi chiamata per creare un oggetto come una chiamata a CreateResource(D3D10) o CreateGeometryShader, anziché una sola volta.

Un'eccezione notevole a questo requisito retroattivo senza thread è la funzione CalcPrivateDeviceSize usata per soddisfare la creazione del dispositivo di visualizzazione. CalcPrivateDeviceSize si trova nella tabella delle funzioni dell'adattatore (D3D10_2DDI_ADAPTERFUNCS o D3D10DDI_ADAPTERFUNCS). CalcPrivateDeviceSize non rientra nel gruppo di funzioni che hanno sperimentato il rilassamento nel modello di threading. Non è necessario threadare la funzione CalcPrivateDeviceSize .