Condividi tramite


Mapping nei contesti posticipati

Questa sezione si applica solo a Windows 7 e versioni successive e Windows Server 2008 R2 e versioni successive del sistema operativo Windows.

Il runtime può eseguire il mapping di una risorsa dinamica (tramite una chiamata alla funzione ResourceMap del driver) in un contesto posticipato, come l'API Direct3D versione 11 garantisce che il primo utilizzo della risorsa dinamica mappata sia quello di eliminare il contenuto precedente. L'opzione migliore consiste nel creare una nuova risorsa dinamica in ogni eliminazione continuamente usando la risorsa dinamica originale. La creazione di questa risorsa aliasata è necessaria per consentire operazioni eseguite alla risorsa dinamica virtuale nella sequenza temporale del contesto posticipato per non influire sulle operazioni eseguite sulla risorsa dinamica virtuale nella sequenza temporale del contesto immediato. Tenere presente che i contesti posticipati sono semplicemente operazioni di registrazione che alla fine vengono effettive durante una chiamata alla funzione CommandListExecute del driver. Quando viene usata una risorsa dinamica, le intenzioni originali dell'applicazione vengono mantenute e la memoria accessibile dalla GPU combinata di scrittura viene fornita all'applicazione, ovvero la memoria è ottimizzata per il caricamento della CPU a utilizzo singolo.

Ogni mappa delle risorse può fornire i puntatori direttamente alla risorsa aliasata. Per implementare questo tipo di aliasing è previsto un ulteriore onere per la registrazione del contesto posticipata. Ad esempio, la registrazione del contesto posticipata potrebbe richiedere la creazione di nuove visualizzazioni per le trame aliasate. Le integrazioni con aliasing driver sono necessarie e sembrano plausibili. Quando viene eseguito un elenco di comandi, l'ultima risorsa creata dal contesto locale (per soddisfare le chiamate di eliminazione mappa) deve essere sostituita come risorsa "corrente" che restituisce la risorsa dinamica per il contesto immediato e così via.

Una chiamata alla funzione ResourceCopy del driver per copiare una risorsa in una risorsa dinamica deve comunque essere supportata sia nel contesto posticipato, dopo le chiamate di annullamento della mappa, sia nel contesto immediato dopo una chiamata alla funzione CommandListExecute del driver, in cui la risorsa contesto posticipata locale è idealmente scambiata nella versione immediata del contesto della risorsa "corrente". Una chiamata alla funzione ResourceCopy del driver con destinazioni di risorsa dinamica non viene usata di frequente, quindi è consigliabile usare un meccanismo di copia in scrittura. Se ResourceCopy viene chiamato che influisce sulla risorsa dinamica nel contesto posticipato dopo una chiamata di rimozione mappa o nel contesto immediato che contiene una risorsa locale dell'elenco di comandi come corrente, una nuova risorsa deve essere allocata in modo concettuale per fornire la nuova destinazione della copia e la risorsa precedente deve essere copiata nella nuova risorsa (se l'operazione è una risorsa ResourceCopyRegion).