2010-05-30 4 views
5

Je dois exécuter une application wpf dans un environnement qui a tous les mêmes dell-pc avec une puce graphique intel gma 3000 (onbard, Q963/Q965). L'application rend seulement le rendu logiciel (le dit si le RenderCapability.Tier -property et aussi Perforator de la boîte à outils de performance montre que.Comment savoir si une carte graphique fournit un rendu matériel pour wpf

Sur toutes ces machines, DirectX 9c est installé et déclare DXDiag sur un grand nombre, mais pas sur tout cela machines, que Direct-3D et Direct-Draw-accélération est activée.J'ai également vérifié le registre si la configuration de ces machines désactivé wpf-hw rendu mais ce n'est pas le cas.Aussi sur une machine j'ai également mis à jour le pilote vidéo et dx

Si j'interprète correctement les ressources, alors sur un PC sur lequel DirectX 9c est installé (et l'accélération D3D est active), le rendu matériel wpf a également lieu. h Cependant, il n'y a pas de rendu hw. Selon la spécification fournie par la poste de Daniel Bern, je pense aussi qu'au moins rendre sur le niveau 1 doit être possible et actif. La seule chose dont je ne parle pas est la mémoire, car le système graphique alloue dynamiquement de la mémoire système et n'a pas de mémoire propre. Comment puis-je savoir si une puce graphique spécifique doit prendre en charge le rendu matériel pour wpf ou non. Est-ce le cas avec le DirectX 9c actif, le rendu des logiciels est également pris en charge ou y a-t-il d'autres exigences qui doivent être complétées pour aller au-delà de ce que nécessite dx9c? La deuxième question est, si wpf rend via dx, est-ce fait par direct-3d ou est-dessiné direct utilisé. Y a-t-il une bonne documentation sur ce sujet?


Il est avéré que le client PC l'accélération directe 3d a été actif (DXDIAG), Howewer ne fonctionne pas. Les programmes de test pour tester 3d direct se terminaient toujours par des erreurs. Cela rend le problème à un problème de support et je vais ouvrir un ticket dans le département de soutien aux entreprises impliquées.

La question sur le composant de dx utilisé pour le rendu de wpf dans le matériel peut être résolue comme suit: Le rendu est effectué via la couche d'intégration de média (MIL). Si DirectX (version appropriée) est disponible et utilisable, MIL écrit toutes les commandes de rendu directement sur D3D. De plus, DirectShow (ou son successeur) est utilisé pour traiter des vidéos. La couche d'intégration de médias est un code non géré et il semble y avoir très peu de documentation sur. Les faits ci-dessus m'ont conduit à la perception, qu'un DirectX9c actif est un indicateur clair que hw-rendu pour wpf peut et aura lieu. Par conséquent, la question de savoir quelle puce prend en charge le rendu hw peut être résolue en vérifiant si la puce prend en charge dx9c (pour le rendu de niveau 2). La spécification des exigences peut être trouvée here (merci à Daniel Bern).

MISE À JOUR

La raison pour laquelle D3D et le rendu matériel ne fonctionne pas dans le cas ci-dessus était une application qui a enregistré un pilote vidéo miroir pour fournir des services terminaux à distance tels que la réunion net fait (il est un logiciel de la service de support utilisé pour administrer à distance les ordinateurs clients). La désactivation de ce pilote miroir a conduit à une 3D directe fonctionnelle et donc le rendu matériel WPF a eu lieu. Cependant, le niveau de rendu était seulement de niveau 1 (je pense à cause de la limitation de la mémoire vidéo).

J'espère que cet article aidera d'autres personnes qui ont un problème similaire.

Voici quelques liens pour entrer dans le sujet:

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

Répondre

Questions connexes