Qual è l'equivalente moderno delle liste di visualizzazione?


9

Gli elenchi di visualizzazione erano una funzionalità OpenGL che, in teoria, poteva accelerare qualsiasi parte dell'API memorizzando un gruppo di comandi per un uso successivo. A mio avviso, ciò ha molto senso per quanto riguarda l'attuale sforzo di riduzione delle spese generali del conducente.

Gli elenchi di visualizzazione sono stati deprecati nella versione 3.1. Qual è l'equivalente API moderno e DirectX espone una funzionalità simile? Se non esiste più tale funzionalità, qual è la logica?

Risposte:


12

Nvidia ha un'estensione per la creazione di buffer di comando in GL moderno .

Il motivo della mancanza di funzionalità simili è che c'è molto stato coinvolto in merito a come eseguire il rendering e l'elenco di visualizzazione è influenzato da molti stati diversi. Ad esempio, cambiare lo stato di fusione richiede l'applicazione di patch allo shader di frammenti su alcuni componenti hardware.

NVidia lo ha risolto acquisendo tutto lo stato e reimpostandolo allo stato dopo una spedizione:

1) Cosa motiva il design?

L'obiettivo principale è quello di poter riutilizzare i buffer di comandi pre-validati. Altre API e proposte hanno affrontato questo problema con varie incarnazioni di elenchi di comandi o oggetti di stato, ma un problema ricorrente è che le interazioni tra le varie fasi della pipeline impediscono questa validazione e il riutilizzo. Queste interazioni sono spesso specifiche dell'hardware (e differiscono da fornitore a fornitore o anche di generazione in generazione) e nuove interazioni sono introdotte da nuove funzionalità che non sono state immaginate al momento della proposta dello schema di validazione.

Tentiamo di risolverlo avendo un oggetto a stato monolitico che racchiude (quasi) l'intero stato della pipeline. Ciò dovrebbe fornire informazioni sufficienti per tutte le implementazioni per eseguire tutte le convalide incrociate necessarie. Cerchiamo di crearli in modo da ridurre al minimo il nuovo footprint dell'API - poiché vogliamo TUTTO lo stato (incluso qualsiasi aggiunto in futuro), lo catturiamo semplicemente dallo stato corrente del contesto.

[...]

23) In quali condizioni è rimasto lo stato, che viene modificato dai token, dopo la chiamata di spedizione?

RISOLTO: lo stato è ripristinato.

(dal testo dell'estensione collegato sopra)

Tuttavia, il vero successore è la funzionalità del buffer di comando in DX12 e vulkan. Questi acquisiranno anche tutto lo stato di rendering in un singolo oggetto da utilizzare durante la creazione e il riempimento del buffer dei comandi. L'estensione NVidia si basa su tale architettura a seguito del coinvolgimento di NVidia nella progettazione di Vulkan.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.