2010-05-30 6 views
5

Devo eseguire un wpf-app in un ambiente che abbia tutti gli stessi pc Dell con un chip grafico intel gma 3000 (onbard, Q963/Q965). L'applicazione rende solo con il rendering software (Detto in modo da RenderCapability.Tier -property e anche Perforator del Performance Toolkit lo dimostra.Come sapere se una scheda grafica fornisce il rendering hardware per wpf

su tutto questo le macchine, è installato DirectX 9c e DXDiag afferma in molti ma non su tutto questo macchine, che Direct-3d e Direct-Draw-acceleration sono attivate Ho controllato anche il registro se la configurazione di queste macchine disabilita il rendering di wpf-hw ma non è così: su una macchina ho anche aggiornato il driver video e dx

Se interpreto correttamente le risorse, su un PC su cui è installato DirectX 9c (e l'accelerazione D3D è attiva), viene eseguito anche il rendering dell'hardware wpf. Ma sulle macchine sopra indicate è installato DX9c, h tuttavia non ci sono rendering hw. Secondo le specifiche fornite dal post di Daniel Bern, penso anche che almeno il rendering sul tier 1 debba essere possibile e attivo.

L'unica cosa di cui non sono sicuro è la memoria, perché il sistema grafico assegna dinamicamente memoria di sistema e non ha memoria. Come posso sapere se uno specifico chip grafico deve supportare il rendering hardware per wpf o meno. È così che con DirectX 9c attivo è supportato anche il rendering harware o c'erano anche altri requisiti che devono essere completati per andare oltre ciò che richiede dx9c? La seconda domanda è, se wpf esegue il rendering tramite dx, è fatto tramite direct-3d o è utilizzato il disegno diretto. C'è qualche buona documentazione su questo argomento?


Si è scoperto che il pc clienti il-3d-accelerazione diretto è stato attivo (in DXDiag), Howewer non funzionale. I testprograms per testare direttamente 3d finivano sempre con errori. Ciò rende il problema un problema di supporto e aprirò un ticket nel dipartimento di supporto delle aziende coinvolte.

La domanda su quale componente di dx viene utilizzato per il rendering di wpf nell'hardware può essere risolta come segue: Il rendering viene eseguito tramite Media Integration Layer (MIL). Se DirectX (versione appropriata) è disponibile e utilizzabile, MIL scrive tutti i comandi di rendering direttamente su D3D. Inoltre, DirectShow (o il suo successore) viene utilizzato per elaborare i video. Il livello di integrazione multimediale è un codice non gestito e sembra esserci una pochissima documentazione.

I fatti di cui sopra mi hanno portato alla percezione che una DirectX9c attiva è un chiaro indicatore che il rendering hw per wpf può e avrà luogo. Quindi la domanda su quale chip supporta hw-rendering può essere risolta controllando se il chip supporta dx9c (per il rendering di livello 2). La specifica dei requisiti può essere trovata here (grazie a Daniel Bern).

UPDATE

Il motivo per cui D3D e il rendering hardware non ha funzionato nel caso di cui sopra è stata un'applicazione che ha registrato un driver video specchio per fornire servizi di terminale remoto come riunione netta fa (era il software dal dipartimento di supporto utilizzato per amministrare da remoto i PC client). La disattivazione di questo driver mirror ha portato a un 3d diretto funzionale e quindi il rendering dell'hardware WPF ha avuto luogo. Tuttavia, il livello di rendering era solo di livello 1 (penso a causa della limitazione della memoria video).

Spero che questo post aiuti altre persone che hanno un problema simile.

Ecco alcuni link per entrare nel tema:

WPF Architecture Overview, Hardware Acceleration in WPF, Introducing Direct2D, Advanced WPF Application Performance Tuning and Analysis, RenderCapability.Tier returns not the render mode

risposta

Problemi correlati