Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare l'API ID3D11DeviceContext2::ResizeTilePool per aumentare il pool di riquadri se l'applicazione richiede un set di lavoro maggiore per il mapping delle risorse affiancate o per compattare se è necessario meno spazio. Un'altra opzione per le applicazioni consiste nell'allocare pool di riquadri aggiuntivi per le nuove risorse a tessere. Tuttavia, se una singola risorsa suddivisa in piastrelle richiede più spazio rispetto a quanto inizialmente disponibile nel pool di piastrelle, aumentare il pool di piastrelle è una buona opzione. Una risorsa affiancata non può avere mapping in più pool di riquadri contemporaneamente.
Quando un pool di riquadri viene ampliato, i riquadri aggiuntivi vengono aggiunti alla fine tramite una o più nuove allocazioni dal driver di visualizzazione. Questa suddivisione delle allocazioni non è visibile all'applicazione. La memoria esistente nel pool di riquadri rimane invariata e i mapping esistenti delle risorse affiancate in quella memoria rimangono intatti.
Quando un pool di riquadri viene ridotto, i riquadri vengono rimossi dalla parte finale. I riquadri vengono rimossi anche al di sotto delle dimensioni di allocazione iniziali, fino a 0, il che significa che non è possibile eseguire nuovi mapping oltre le nuove dimensioni. Tuttavia, i mapping esistenti oltre la fine delle nuove dimensioni rimangono intatti e utilizzabili. Il driver di visualizzazione manterrà la memoria attiva finché rimangano i mapping a qualsiasi parte delle allocazioni utilizzate dal driver per la memoria del pool di tile. Se dopo la compattazione della memoria è stata mantenuta attiva perché i mapping dei riquadri vi puntano e quindi il pool di riquadri viene fatto crescere nuovamente, indipendentemente dalla quantità, la memoria esistente viene riutilizzata prima che si verifichino allocazioni aggiuntive per soddisfare le dimensioni richieste dall'operazione di aumento.
Per poter risparmiare memoria, un'applicazione deve non solo ridurre un pool di riquadri, ma anche rimuovere o rimappare i mapping esistenti che superano la nuova dimensione del pool di riquadri più piccolo.
L'azione di compattazione (e rimozione dei mapping) non produce necessariamente risparmi immediati sulla memoria. Il rilascio della memoria dipende dalla granularità delle allocazioni sottostanti del driver grafico per il pool di tessere. Quando la riduzione è sufficiente a rendere inutilizzata un'allocazione del driver di visualizzazione, il driver può liberare l’allocazione. Se un pool di riquadri è stato ampliato, ridurre alle dimensioni precedenti (e rimuovere/rimappare i riquadri in modo corrispondente) è probabile che comporti un risparmio di memoria, anche se non è garantito nel caso in cui le dimensioni non siano esattamente allineate alle dimensioni di allocazione scelte dal driver di visualizzazione.
Argomenti correlati