Condividi tramite


Ridimensionamento di un pool di riquadri.

Ridimensionare un pool di riquadri per aumentare le dimensioni di un pool di riquadri se l'applicazione necessita di un set di lavoro maggiore per il mapping delle risorse di streaming oppure per la riduzione se è necessario meno spazio. Un'altra opzione per le applicazioni consiste nell'allocare pool di riquadri aggiuntivi per le nuove risorse di streaming. Tuttavia, se una singola risorsa di streaming richiede più spazio rispetto all'inizio disponibile nel pool di riquadri, l'aumento del pool di riquadri è una buona opzione. Una risorsa di streaming 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 delle risorse di streaming esistenti in tale memoria rimangono intatti.

Quando un pool di riquadri viene ridotto, i riquadri vengono rimossi dalla fine. 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 fino a quando rimangono i mapping a qualsiasi parte delle allocazioni usate dal driver per la memoria del pool di riquadri. Se dopo la compattazione della memoria è stata mantenuta attiva perché i mapping dei riquadri puntano a tale memoria e quindi il pool di riquadri viene nuovamente ingrandita (per qualsiasi quantità), la memoria esistente viene riutilizzata prima che si verifichino allocazioni aggiuntive per il servizio delle dimensioni dell'operazione di ingrandimento.

Per poter risparmiare memoria, un'applicazione deve non solo compattare un pool di riquadri, ma anche rimuovere o rieseguire il mapping dei mapping esistenti oltre la fine della nuova dimensione del pool di riquadri più rimpicciolita.

L'azione di compattazione (e rimozione dei mapping) non produce necessariamente risparmi immediati sulla memoria. Liberare memoria dipende dalla granularità delle allocazioni sottostanti del driver di visualizzazione per il pool di riquadri. Quando la compattazione è sufficiente per rendere inutilizzata un'allocazione del driver di visualizzazione, il driver di visualizzazione può liberarlo. Se un pool di riquadri viene ingrandito, è molto probabile che la riduzione alle dimensioni precedenti (e la rimozione/ripartizione del mapping dei riquadri) produca un risparmio di memoria, anche se non è garantito nel caso in cui le dimensioni non siano esattamente allineate con le dimensioni di allocazione sottostanti scelte dal driver di visualizzazione.

I mapping si trovano in un pool di riquadri