Glossario di Direct3D 12
Questi termini sono distintivi di Direct3D 12.
-
Associazione
-
Processo di collegamento della memoria alla pipeline grafica. L'associazione di risorse, ad esempio, implica l'associazione di una risorsa, ad esempio una trama alla pipeline, da usare per il rendering di un oggetto.
-
Buffer
-
Tipo di risorsa D3D sinonimo di allocazione di memoria contigua.
-
Bundle
-
Buffer dei comandi che l'unità di elaborazione grafica (GPU) può eseguire solo direttamente tramite un elenco di comandi diretto. Un bundle eredita tutto lo stato della GPU , ad eccezione dell'oggetto stato della pipeline attualmente impostato e della topologia primitiva.
-
allocatore dei comandi
-
Allocazioni di memoria sottostanti in cui vengono archiviati i comandi GPU. L'oggetto allocatore del comando si applica sia agli elenchi di comandi diretti che ai bundle.
-
elenco di comandi
-
Un elenco di comandi corrisponde a un set di comandi eseguiti dalla GPU. Questi includono comandi come impostare lo stato, disegnare, cancellare e copiare. L'interfaccia dell'elenco di comandi D3D12 è significativamente diversa rispetto all'interfaccia dell'elenco di comandi D3D11. L'interfaccia dell'elenco di comandi D3D12 contiene API simili alle API di rendering del contesto di dispositivo D3D11.
Un elenco di comandi D3D12 non esegue il mapping o l'annullamento del mapping delle risorse, modifica i mapping dei riquadri, ridimensiona i pool di riquadri, recupera i dati delle query, né invia in modo implicito comandi alla GPU per l'esecuzione.
A differenza dei contesti posticipati D3D11, i comandi D3D12 supportano solo due livelli di riferimento indiretto. Un elenco di comandi diretto corrisponde a un buffer di comando che può essere eseguito dalla GPU. Un bundle può essere eseguito solo direttamente tramite un elenco di comandi diretto.
Un elenco di comandi diretti non eredita alcuno stato GPU. Un bundle eredita tutto lo stato della GPU , ad eccezione dell'oggetto stato della pipeline attualmente impostato e della topologia primitiva.
La memoria per un elenco di comandi viene impostata dall'allocatore dei comandi. Lo scopo degli elenchi di comandi è che possono essere inviati a una GPU come singola richiesta di rendering.
-
coda dei comandi
-
Una coda di comandi elenca che la GPU viene eseguita in successione. Le applicazioni devono inviare in modo esplicito elenchi di comandi a una coda di comandi per l'esecuzione. In genere sono presenti tre code di comandi: grafica 3D, calcolo e copia, corrispondenti alla pipeline grafica 3D, al motore di calcolo e a uno o più motori di copia nella GPU.
-
rasterizzazione conservativa
-
La rasterizzazione conservativa è una modalità di funzionamento per la fase di rasterizzazione della pipeline grafica Direct3D. Disabilita la rasterizzazione standard basata su campioni e rasterizzerà invece un pixel coperto da qualsiasi quantità da una primitiva. Una distinzione importante è che, mentre qualsiasi copertura produce un pixel rasterizzato, tale copertura non può essere caratterizzata dall'hardware, quindi la copertura appare sempre binaria in un pixel shader: completamente coperto o non coperto. Viene lasciato al codice pixel shader per determinare analiticamente la copertura effettiva.
La rasterizzazione conservativa può aiutare a risolvere problemi come il rilevamento di collisioni e colpi, il binning e la culling dell'occlusione, in cui il colore di un pixel è più sicuro e i casi limite possono essere eliminati. Vedere Rasterizzazione conservativa.
-
Visualizzazione buffer costante (CBV)
-
I buffer costanti contengono dati costanti dello shader, ad esempio una visualizzazione fotocamera, matrici di proiezione e matrici mondiali. Una "visualizzazione buffer costante" è la visualizzazione specifica del formato del buffer, come illustrato dalla pipeline grafica.
-
heap predefinito
-
Heap in modalità utente incentrato sul supporto di tipi di risorse GPU persistenti, incluse le risorse scritte dalla GPU.
-
Descrittore
-
I descrittori sono l'unità primaria di associazione per una singola risorsa in D3D12. Un descrittore è un blocco di dati relativamente piccolo che descrive completamente un oggetto per la GPU, in un formato specifico della GPU. Esistono molti tipi diversi di descrittori: le visualizzazioni risorse shader (SRV), le viste di accesso non ordinate (UAV), le visualizzazioni del buffer costante (CBV) e gli esempi sono alcuni esempi.
-
heap descrittore
-
Un heap descrittore è una raccolta di allocazioni contigue di descrittori, un'allocazione per ogni descrittore. Il punto principale di un heap descrittore consiste nell'includere la maggior parte dell'allocazione di memoria necessaria per archiviare le specifiche del descrittore dei tipi di oggetto a cui fanno riferimento gli shader per il più grande possibile di una finestra di rendering (idealmente un intero frame di rendering o più).
-
tabella del descrittore
-
Una tabella descrittore è logicamente una matrice di descrittori. Ogni tabella del descrittore archivia i descrittori di uno o più tipi, tra cui SRV, UAVe, CBV e Sampler. Una tabella descrittore non è un'allocazione di memoria, è semplicemente un offset e una lunghezza in un heap del descrittore.
-
elenco di comandi diretti
-
Buffer dei comandi che la GPU può eseguire. Un elenco di comandi diretto non eredita alcuno stato GPU.
-
Recinzione
-
Meccanismo per sincronizzare la GPU e la CPU. Sia la GPU che la CPU possono essere incaricati di attendere un recinto, attendendo in effetti che l'altro processore venga aggiornato. Vedere Sincronizzazione multi-motore.
-
pericolo, rilevamento dei rischi
-
Un rischio si verifica quando una risorsa è stata usata per uno scopo e l'app intende riutilizzarla per un altro scopo. Per usare nuovamente la risorsa, le cache intermedie dovranno essere scaricate o invalidate, i requisiti di compressione dovranno essere coerenti con il secondo utilizzo e la risorsa deve trovarsi nello stato necessario per evitare di leggere la risorsa dopo che è stata scritta e invalidata per lo scopo previsto.
Il processo di gestione delle risorse ed evitare questi problemi di sincronizzazione è noto come rilevamento dei rischi. Se non è presente alcun rilevamento dei pericoli da parte del conducente, l'app è responsabile di questo. Nella maggior parte delle versioni precedenti di DirectX, il rilevamento dei rischi è stato gestito dal conducente. Per migliorare le prestazioni, i metodi senza rilevamento dei rischi sono disponibili in DirectX 12.
-
Linguaggio HLSL (High Level Shader Language)
-
Linguaggio computer, simile ma distinto in molti modi da C, usato per scrivere codice shader. I vertex, pixel, geometry, compute, domain e hull shader sono tutti scritti con HLSL. Un compilatore converte l'origine HLSL in un formato binario da utilizzare per la GPU.
-
multiengine
-
Le diverse istanze e tipi di motori in una singola GPU. I tipi di motori includono: grafica, calcolo e copia.
-
MultiGPU
-
Configurazione hardware in cui sono presenti più schede grafiche. Le schede separate vengono talvolta definite nodi. La presenza di più GPU può rendere l'attività di sincronizzazione con la CPU e l'altra, notevolmente più complessa rispetto a una singola GPU.
-
Oggetto Stato pipeline (PSO)
-
Parte significativa dello stato della GPU. Questo stato include tutti gli shader attualmente impostati e determinati oggetti di stato a funzione fissa. L'unico modo per modificare gli stati contenuti nell'oggetto pipeline consiste nel modificare l'oggetto pipeline attualmente associato.
-
predicazione
-
Predicazione è una funzionalità che consente alla GPU anziché alla CPU di determinare di non disegnare, copiare o inviare un oggetto. Ad esempio, se un rettangolo delimitatore di un oggetto è totalmente occluso da un altro oggetto o la prospettiva ha ridotto l'oggetto a meno delle dimensioni di un pixel, potrebbe non esserci alcun punto nel tentativo di disegnare l'oggetto nascosto. Vedere Predicazione.
-
Visualizzazione ordine rasterizzatore (ROV)
-
Le pipeline grafiche standard potrebbero avere problemi durante la composizione corretta di più trame che contengono trasparenza. Oggetti come recinzioni di filo, fumo, fuoco, vegetazione e vetro colorato utilizzano trasparenza per ottenere l'effetto desiderato. Si verificano problemi quando più trame che contengono trasparenza sono in linea tra loro (fumo davanti a una recinzione davanti a un edificio in vetro contenente vegetazione, ad esempio). Le visualizzazioni ordinate rasterizer (ROV) consentono agli algoritmi OIT (Order Independent Transparency) sottostanti di usare le funzionalità dell'hardware per provare a risolvere correttamente l'ordine di trasparenza. La trasparenza viene gestita dal pixel shader.
Rasterizer Ordered Views (ROV) consente al codice pixel shader di contrassegnare le associazioni UAV (Unordered Access View) con una dichiarazione che modifica i requisiti normali per l'ordine dei risultati della pipeline grafica per gli UAV.
-
heap readback
-
Heap in modalità utente incentrato sul trasferimento dei dati dalla GPU alla CPU.
-
Risorsa
-
Entità che fornisce dati alla pipeline e definisce il rendering durante la scena. Le risorse possono essere caricate dal supporto del gioco o create in modo dinamico in fase di esecuzione. In genere, le risorse includono dati di trama, dati dei vertici e dati shader. La maggior parte delle applicazioni Direct3D crea ed elimina le risorse in modo esteso per tutta la loro durata.
-
barriera di risorse
-
Una barriera di risorse notifica al driver che la sincronizzazione di più accessi a una singola risorsa può essere necessaria, ad esempio la lettura e la scrittura nella stessa trama.
-
associazione di risorse
-
L'associazione di risorse è il processo di collegamento delle risorse (trame, vertex buffer, buffer di indice e così via) alla pipeline grafica, consentendo agli shader della pipeline di elaborare la risorsa corretta.
-
heap delle risorse
-
Gli heap delle risorse sono un termine generico per gli heap che sono buffer di memoria messi da parte per contenere le risorse durante il trasferimento da e verso la GPU. Un trasferimento alla GPU richiede un heap di caricamento, dalla GPU alla CPU richiede un heap di readback e un heap permanente per la GPU da mantenere su più fotogrammi di rendering è denominato heap predefinito.
-
firma radice
-
Le firme radice definiscono tutte le risorse che devono essere associate alla grafica o alle pipeline di calcolo. Una firma radice è configurata dall'app e collega gli elenchi di comandi alle risorse richieste dagli shader In genere, è presente una grafica e una firma radice di calcolo per ogni app.
-
Campionatore
-
Un campionatore è codice che legge da una trama.
-
Visualizzazione risorse shader (SRV)
-
Un modo specifico del formato per esaminare i dati in una risorsa shader, ad esempio una trama.
-
heap statico
-
Heap in modalità utente incentrato su più risorse di sola lettura GPU che vengono in genere usate contemporaneamente e non vengono modificate di frequente.
-
catena di scambio
-
Le catene di scambio controllano la rotazione del buffer nascosto, formando la base dell'animazione grafica. Le catene di scambio vengono gestite dal set di API di basso livello DXGI (vedere DXGI Overview).
-
Swizzle
-
Una tecnica di individuazione dei dati multidimensionali in memoria, in modo che i dati della dimensionalità vicina tendono ad avere indirizzi nelle vicinanze. In particolare, tutti i dati per una riga non si trovano contiguamente prima dei dati per la riga successiva. Un "Swizzle con parametri" descrive un modo standardizzato per descrivere i modelli swizzle.
-
Texture
-
Tipo di risorsa D3D che è multidimensionale e ha un layout di memoria ottimizzato per l'accesso multidimensionale dalla GPU. Le trame spesso contengono l'immagine non elaborata necessaria per il rendering su una superficie, prima che si verifichi l'illuminazione e la fusione, ma può contenere altre forme di dati, ad esempio sfumature di colore e colori di riferimento. Direct3D 12 supporta trame uno, due e tridimensionali.
-
Piastrelle
-
Una pagina di memoria video, simile a una pagina CPU/sistema di memoria. La notazione dei riquadri consente di distinguere il sottosistema di memoria virtuale GPU dal sottosistema di memoria virtuale della CPU. Le GPU offrono funzionalità di memoria virtuale simili a quella della memoria virtuale di sistema. Alcune GPU hanno funzionalità di memoria virtuale condivise, che consentono la condivisione di alcune pagine del sottosistema di memoria virtuale con CPU e GPU.
-
risorse affiancate
-
Le risorse affiancate sono necessarie in modo che meno memoria GPU venga sprecata archiviando aree di superfici a cui l'applicazione sa non sarà accessibile e l'hardware può comprendere come filtrare tra riquadri adiacenti. Le risorse affiancate sono risorse logiche di grandi dimensioni, ma richiedono piccole quantità di memoria fisica.
-
Visualizzazione accesso non ordinato (UAV)
-
Una visualizzazione di accesso non ordinato in una risorsa (che include buffer, trame e matrici di trame, senza campionamento multiplo), consente l'accesso in lettura/scrittura non ordinato temporale da più thread. Ciò significa che questo tipo di risorsa può essere letto/scritto simultaneamente da più thread senza generare conflitti di memoria.
-
upload heap
-
Heap in modalità utente incentrato sul trasferimento dei dati dalla CPU alla GPU.
-
heap in modalità utente
-
Raccolta di allocazioni di memoria contigue di grandi dimensioni riciclate senza consapevolezza del componente kernel: i metodi di allocazione e distruzione del kernel non chiamano metodi di allocazione e distruzione del kernel durante lo stato stabile. Upload, Readback e Default heaps sono varianti degli heap in modalità utente.
-
risorse affiancate del volume
-
Risorse affiancate tridimensionali.