Miglioramenti di DXGI 1.4
Le funzionalità seguenti sono state aggiunte o modificate in Microsoft DirectX Graphics Infrastructure (DXGI) 1.4, in gran parte per supportare Direct3D 12.
Enumerazione adapter più economica
Per Direct3D 12, non è più possibile eseguire il backtracking da un dispositivo al IDXGIAdapter usato per crearlo. Non è più possibile fornire D3D_DRIVER_TYPE_WARP in D3D12CreateDevice. Per semplificare lo sviluppo, è possibile usare IDXGIFactory4 per gestire entrambi questi elementi. IDXGIFactory4::EnumAdapterByLuid (progettato per essere associato a ID3D12Device::GetAdapterLuid) consente a un'app di recuperare informazioni sull'adattatore in cui è stato creato un dispositivo Direct3D 12. IDXGIFactory4::EnumWarpAdapter fornisce un adattatore che può essere fornito per D3D12CreateDevice per usare il renderer WARP.
Monitoraggio del budget della memoria video
Gli sviluppatori di applicazioni sono invitati a usare un sistema di prenotazione della memoria video, per informare il sistema operativo della quantità di memoria video fisica che l'app non può andare senza.
La quantità di memoria fisica disponibile per un processo è nota come "budget di memoria video". Il budget può variare notevolmente man mano che i processi in background si riattivano e dormono; e fluttuano notevolmente quando l'utente passa a un'altra applicazione. L'applicazione può ricevere una notifica quando il budget cambia ed esegue il polling sia del budget corrente che della quantità di memoria attualmente utilizzata. Se un'applicazione non rimane entro il proprio budget, il processo verrà bloccato in modo intermittente per consentire l'esecuzione di altre applicazioni e/o le API di creazione restituiranno un errore. L'interfacciaIDXGIAdapter3fornisce i metodi relativi a questa funzionalità, in particolare QueryVideoMemoryInfo e RegisterVideoMemoryBudgetChangeNotificationEvent.
Per altre informazioni, vedere l'argomento Direct3D 12 su Residenza.
Modifiche alla porta di scambio Direct3D 12
Alcune delle funzionalità della porta di scambio Direct3D 11 esistenti sono state deprecate per ottenere le riduzioni del sovraccarico in Direct3D 12. Mentre sono state apportate altre modifiche per allinearsi ai concetti di Direct3D 12 o fornire un supporto migliore per le funzionalità di Direct3D 12.
'identità backbuffer invariante
In Direct3D 11 le applicazioni possono chiamare GetBuffer( 0, ... ) una sola volta. Ogni chiamata a Present ha modificato in modo implicito l'identità della risorsa dell'interfaccia restituita. Direct3D 12 non supporta più la modifica implicita dell'identità delle risorse, a causa del sovraccarico della CPU richiesto e della progettazione flessibile del descrittore di risorse. Di conseguenza, l'applicazione deve chiamare manualmente GetBuffer per ogni buffer creato con la porta di scambio. L'applicazione deve eseguire manualmente il rendering nel buffer successivo nella sequenza dopo aver chiamato Present. Le applicazioni sono incoraggiate a creare una cache di descrittori per ogni buffer, invece di ricreare molti oggetti ogni Present.
di supporto per più adattatori
Quando si crea una porta di scambio in una scheda multi-GPU, i backbuffer vengono tutti creati nel nodo 1 e è supportata una sola coda di comandi. ResizeBuffers1 consente alle applicazioni di creare backbuffer in nodi diversi, consentendo l'uso di una coda di comandi diversa con ognuno di essi. Queste funzionalità consentono l'uso di tecniche AFR (Alternate Frame Rendering) con la swapchain. Fare riferimento a sistemi multi-adattatore.
varie
- Un oggetto coda dei comandi deve essere passato ai metodiCreateSwapChainanziché all'oggetto dispositivo Direct3D 12.
- Sono supportati solo i due effetti di scambio dei modelli flip seguenti:
- DXGI_SWAP_EFFECT_FLIP_DISCARD deve essere preferibile quando le applicazioni eseguono il rendering completo del backbuffer prima di presentarlo o sono interessati a supportare facilmente scenari con più schede.
DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL devono essere usati dalle applicazioni che si basano su ottimizzazioni di presentazione parziali o lette regolarmente dai backbuffer presentati in precedenza. - SetFullscreenState non possiede più esclusivamente lo schermo, quindi gli elementi del sistema operativo avviati dall'utente possono essere visualizzati facilmente davanti all'output dell'applicazione. Le impostazioni del volume sono un esempio di questo.
Argomenti correlati
livelli di funzionalità hardware Direct3D 12
Guida alla programmazione di per dxgi