Metodo ID3D11DeviceContext2::ResizeTilePool (d3d11_2.h)
Ridimensiona un pool di riquadri.
Sintassi
HRESULT ResizeTilePool(
[in] ID3D11Buffer *pTilePool,
[in] UINT64 NewSizeInBytes
);
Parametri
[in] pTilePool
Tipo: ID3D11Buffer*
Puntatore a un ID3D11Buffer per il pool di riquadri da ridimensionare.
[in] NewSizeInBytes
Tipo: UINT64
Nuova dimensione in byte del pool di riquadri. Le dimensioni devono essere più di 64 KB o 0.
Valore restituito
Tipo: HRESULT
Restituisce S_OK se ha esito positivo; in caso contrario, restituisce uno dei seguenti elementi:
- Restituisce E_INVALIDARG se la nuova dimensione del pool di riquadri non è più di 64 KB o 0.
- Restituisce E_OUTOFMEMORY se la chiamata comporta la necessità di allocare spazio per i nuovi mapping di tabelle di pagina, ma che non eseguono memoria.
- Restituisce DXGI_ERROR_DEVICE_REMOVED se la scheda video è stata rimossa fisicamente dal sistema o si è verificato un aggiornamento del driver per la scheda video.
Commenti
ResizeTilePool aumenta o riduce le dimensioni del pool di riquadri a seconda che l'app richieda un set di lavoro più o meno funzionante per le risorse riquadri mappate. Un'app può allocare pool di riquadri aggiuntivi per le nuove risorse riquadri, ma se qualsiasi singola risorsa a riquadri necessita di più spazio rispetto all'inizio disponibile nel pool di riquadri, l'app può aumentare le dimensioni del pool di riquadri della risorsa. Una risorsa riquadri non può avere mapping in più pool di riquadri contemporaneamente.
Quando si aumentano le dimensioni di un pool di riquadri, vengono aggiunti altri riquadri alla fine del pool di riquadri tramite una o più nuove allocazioni dal driver; l'app non riesce a rilevare la suddivisione nelle nuove allocazioni. La memoria esistente nel pool di riquadri rimane invariata e i mapping delle risorse riquadri esistenti rimangono intatti.
Quando si riducono le dimensioni di un pool di riquadri, i riquadri vengono rimossi dalla fine (questo è consentito anche al di sotto delle dimensioni iniziali di allocazione, fino a 0). Ciò significa che i nuovi mapping non possono essere fatti oltre le nuove dimensioni. Tuttavia, i mapping esistenti oltre la fine della nuova dimensione rimangono intatti e utilizzabili. La memoria viene mantenuta attiva finché i mapping a qualsiasi parte delle allocazioni usate per la memoria del pool di riquadri rimangono. Se dopo la diminuzione, alcune risorse di memoria sono state mantenute attive perché i mapping dei riquadri puntano a esso e il pool di riquadri viene nuovamente incrementato (per qualsiasi quantità), la memoria esistente viene riutilizzata prima che si verifichino allocazioni aggiuntive per il servizio delle dimensioni dell'aumento.
Per salvare la memoria, un'app deve non solo ridurre un pool di riquadri, ma anche rimuovere e rimapare i mapping esistenti fino alla fine del nuovo pool di riquadri più piccolo.
L'atto di riduzione (e rimozione di mapping) non produce necessariamente risparmi immediati sulla memoria. Il liberamento della memoria dipende dalla modalità di allocazione granulare delle allocazioni sottostanti del driver per il pool di riquadri. Quando una riduzione delle dimensioni di un pool di riquadri è sufficiente per rendere inutilizzata un'allocazione del driver, il driver può liberare l'allocazione. Se un pool di riquadri è stato aumentato e, se si riducono le dimensioni precedenti (e si rimuove e riapplicano i mapping dei riquadri in modo corrispondente), è più probabile che si restituisca un risparmio di memoria. Tuttavia, questo scenario non è garantito nel caso in cui le dimensioni non siano esattamente allineate alle dimensioni di allocazione sottostanti scelte dal driver.
Per altre informazioni sulle risorse riquadri, vedere Risorse riquadri.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8.1 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 R2 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | d3d11_2.h |
Libreria | D3D11.lib |