Condividi tramite


Novità per Windows 10 driver di visualizzazione e grafica

Questa pagina descrive le novità dei driver di visualizzazione e grafica per Windows 10 versione 2004 (WDDM 2.7). Per visualizzare le funzionalità aggiunte nelle versioni precedenti di WDDM 2.X, vedere Novità delle versioni precedenti di WDDM 2.X.

Shader mesh

Gli shader mesh sono un mezzo per aumentare la flessibilità e le prestazioni della pipeline grafica di Direct3D 12 quando si usa la rasterizzazione. Fungono da nuova sostituzione per l'assembler di input, in particolare le fasi del vertex shader e geometry shader, sostituendo alcuni dei comportamenti a funzione fissa dell'assembler di input con un comportamento di funzione flessibile. Con gli shader mesh, le applicazioni possono applicare il culling in precedenza e quindi in modo più efficiente rispetto all'assembler di input. Le primitive possono essere replicate senza che i dati dell'indice vengano elaborati dalla GPU, che è estremamente vantaggioso, poiché si noterà che i conteggi primitivi delle applicazioni 3D aumentano nel tempo.

Nel caso in cui sia collegato un pixel shader, l'output delle primitive da uno shader mesh verrà inserito direttamente nella fase del pixel shader.

La funzionalità mesh shader introduce la fase dello shader mesh insieme a una nuova fase: l'amplificazione shader. Gli shader di amplificazione sostituiscono la fase a mosaico della GPU. Le applicazioni configurano lo shader di amplificazione per richiamare uno shader mesh in base alle esigenze. Gli shader di amplificazione sono un passaggio facoltativo che consente a un'applicazione di controllare dinamicamente i livelli di dettaglio geometrico.

La funzionalità mesh shader prevede nuovi costrutti del linguaggio di ombreggiatura e modifiche di MESSAGGISTICA unificata. Per la funzionalità di creazione di report dei dispositivi degli shader mesh, è presente un campo denominato MeshShaderTier segnalato tramite D3D12DDI_D3D12_OPTIONS_DATA_0073. Inoltre, poiché introduce due nuove fasi dello shader, sono disponibili due nuovi campi in D3D12DDIARG_CREATE_PIPELINE_STATE_0075, hMeshShader e hAmplificationShader. Per avviare le operazioni, è presente l'elenco di comandi PFND3D12DDI_DISPATCH_MESH_0074 DDI e anche D3D12DDI_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH per l'invio indiretto.

DirectX Raytracing (DXR) 1.1

WDDM 2.7 offre alcune nuove funzionalità e miglioramenti che si basano sulla versione iniziale di DXR in Direct3D 12.

  • Il raytracing inline è una forma alternativa di raytracing che non usa shader dinamici o tabelle shader separate. Offre agli sviluppatori flessibilità e praticità in tutti i casi in cui gli shader che usano il raytracing DXR 1.0, li chiamano "raytracing basato su dynamic-shader", non si adattano. Il raytracing inline è disponibile in qualsiasi fase dello shader, inclusi gli shader di calcolo, i pixel shader e così via. Questa operazione viene menzionata qui come un elemento disponibile con WDDM 2.7, anche se non corrisponde a una modifica DDI.

  • Le applicazioni possono chiamare DispatchRays tramite ExecuteIndirect, consentendo la configurazione del lavoro raytracing nella GPU. Ciò può essere utile per le applicazioni che cercano di ridurre, ordinare o regolare il lavoro di raytracing e usano shader per farlo. A questo scopo, è ora disponibile un valore di enumerazione D3D12DDI_INDIRECT_ARGUMENT_TYPE. Quando si usa l'invio di raytracing indiretto, ogni elemento del buffer indiretto di esecuzione è di tipo D3D12DDIARG_DISPATCH_RAYS_0054.

  • L'overhead della creazione dello stato della pipeline per tenere conto di diverse combinazioni di shader è uno di questi problemi difficili nella grafica computer 3D. DXR 1.1 include qualcosa che può essere utile: add-to-state-object. AddToStateObject(), come viene esposto nell'API, consente alle applicazioni di aggiungere shader a un oggetto di stato esistente con overhead della CPU proporzionale solo a ciò che viene aggiunto. Oltre a questo, sono disponibili due funzioni DDI del dispositivo: PFND3D12DDI_ADD_TO_STATE_OBJECT_0072 e PFND3D12DDI_CALC_PRIVATE_ADD_TO_STATE_OBJECT_SIZE_0072.

Per la creazione di report sulle funzionalità generali, è disponibile un nuovo valore di enumerazione D3D12DDI_RAYTRACING_TIER_1_1 usato per il livello di report 1.1.

Feedback del campionatore

Sampler Feedback è una funzionalità Direct3D 12 per l'acquisizione e la registrazione di informazioni e posizioni di campionamento delle trame. Senza feedback del campionatore, questi dettagli sarebbero opachi per lo sviluppatore. Questa funzionalità offre alle applicazioni la possibilità di non solo sapere quale mip è stato campionato, ma per sapere dove sono presenti tali mip. Le applicazioni potrebbero essere interessate a informazioni di campionamento, ad esempio:

  • sapere con precisione cosa caricare successivamente in un sistema di streaming delle trame o
  • sapere con precisione cosa deve essere ombreggiato in un sistema di rendering con ombreggiatura dello spazio delle trame.

Il feedback delle operazioni di esempio viene scritto in una "mappa di feedback" che funge da tipo di risorsa opaca che deve essere transcodificata per ottenere informazioni controllabili dall'applicazione. Per quanto riguarda la scrittura del feedback stesso, esistono costrutti HLSL nel modello di shader 6_5. La semantica è molto simile alla semantica per l'esempio di Texture2D e le relative varianti.

Anche se il feedback del campionatore usa i nuovi costrutti del linguaggio di ombreggiatura, comporta anche modifiche UMD. Per il controllo delle funzionalità di dispositivo, è presente un limite denominato SamplerFeedbackTier segnalato tramite D3D12DDI_D3D12_OPTIONS_DATA_0073. La creazione di risorse è stata modificata per accettare un nuovo campo, l'area mip del feedback del campionatore, di tipo D3D12DDI_MIP_REGION_0075. Oltre a questo, è disponibile anche un nuovo metodo di creazione del descrittore, PFND3D12DDI_CREATE_SAMPLER_FEEDBACK_UNORDERED_ACCESS_VIEW_0075.

Protezione del contenuto

Il supporto facoltativo delle risorse protette è stato aggiunto alle operazioni video Direct3D 12 in WDDM 2.7. In background, le risorse protette esistevano prima di WDDM 2.7, ma erano disponibili solo per la condivisione tra API e grafica o calcolo, non per i video.

Il supporto per le risorse protette non viene segnalato dal driver come elemento globale; si tratta di un'operazione per ogni operazione. Se un driver segnala il supporto di risorse protette per una determinata operazione, significa che l'operazione può leggere e scrivere risorse protette e supporta la condivisione tra API se il tipo di risorsa lo consente. Un altro aspetto da ricordare è che se un driver richiede il supporto delle risorse protette per un particolare formato, deve supportare anche tale formato come risorsa non protetta.

Con WDDM 2.7, i metodi di creazione delle risorse vengono modificati per accettare un'istanza di D3D12DDI_HPROTECTEDRESOURCESESSION facoltativa. Ai driver viene assegnato questo parametro al momento della creazione di oggetti per informare la configurazione e le allocazioni. Inoltre, i controlli del budget di memoria vengono rivisti per indicare se l'operazione userà o meno risorse protette. Quando il parametro protected-resource-session è diverso da NULL, indica che l'operazione scriverà nelle risorse protette. Per scrivere in una risorsa non protetta, è necessario ricreare l'oggetto operazione.

I riferimenti di stima del decodificatore e del movimento devono essere risorse protette quando l'output è una risorsa protetta. L'elaborazione video può essere letta da una combinazione di risorse protette e non protette durante la scrittura in una risorsa protetta.

Prima di registrare una o più operazioni che scrivono in una risorsa protetta, PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 devono essere chiamate con una sessione di risorse protetta non NULL. La chiamata PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 con NULL è necessaria prima di registrare una o più operazioni che scrivono in risorse non protette.

Per altre informazioni oltre alla presentazione guidata precedente delle modifiche DDI per la protezione del contenuto in WDDM 2.7, vedere D3D12DDI_VIDEO_DECODE_PROTECTED_RESOURCES_DATA_0072 come punto di partenza.

Miglioramento della creazione di report del buffer della cronologia per gli strumenti

WDDM 2.7 introduce una modifica DDI che consente agli strumenti di debug GPU di usare buffer di cronologia. Con questa modifica, un singolo invio del buffer dei comandi può contenere operazioni corrispondenti a più elenchi di comandi anziché a un solo elenco di comandi alla volta. Questa modifica consente agli strumenti di debug GPU di segnalare in modo più accurato le caratteristiche delle prestazioni delle applicazioni.

Questa funzionalità viene segnalata tramite D3D12DDICAPS_TYPE_0073_SUPPORT_BATCHED_MARKERS. Esiste una nuova D3DDDI_MARKERLOGTYPE di valore di enumerazione D3DDDIMLT_BATCHED, che corrisponde a D3DDDI_BATCHEDMARKERDATA. Le strutture dei dati degli eventi ETW sono state rivvedete per contenere un certo numero di elementi D3DDDI_BATCHEDMARKERDATA quando sono di tipo D3DDDIMLT_BATCHED.

DisplayPort (DP) AUX/I2C

Il canale DP Auxiliary (AUX) fornisce l'accesso a DP Configuration Data (DPCD), ovvero un file di registro per dispositivo usato per leggere le funzionalità del dispositivo DP, il training dei collegamenti, l'individuazione della topologia, l'accesso al bus I2C e così via. Vedere DXGK_DP_INTERFACE come punto di partenza.