8
votes

Win32: Y a-t-il un remplacement gdi32.dll qui utilise une accélération matérielle?

Est-ce que quelqu'un a créé une version de gdi32.dll qui profite de l'accélération matérielle disponible sur la machine? gdiplus.dll ?

À partir de Windows Vista, GDI n'est plus accéléré dans le matériel. (GDI + n'a jamais été accéléré dans le matériel). Sans Microsoft Fixing GDI (et GDI +) pour pouvoir fonctionner correctement sur l'ordinateur: applications natales (C ++ MFC, Delphi, etc.) et les applications WinForms gérées, continueront à courir mal pour toujours.

Pendant que je pourrait utiliser direct2D pour les applications métier, je ne peux pas contrôler le fait que l'environnement de développement crée toujours des contrôles, avec des décennies de code de support de bibliothèque, qui suppose la présence de GDI.


Compatibilité des applications: Interface de périphérique graphique (GDI) :

Primitives GDI telles que LINETO et Le rectangle est maintenant rendu dans des logiciels plutôt que du matériel vidéo, lequel simplifier énormément les pilotes d'affichage.

Windows et mémoire vidéo

dans XP GDI est un GPU accéléré à divers degrés en fonction de la façon dont la Le système d'exploitation est configuré ou le pilote de périphérique (Pour plus de détails, voir accrochage par rapport à Punking ). En Vista, GDI n'est pas accéléré par le GPU

Comparer Direct2D et GDI

En conséquence, dans Windows Vista, le GDI Le pilote d'affichage DDI a été changé pour être seulement implémenté par un Microsoft Pilote fourni, l'affichage canonique Pilote (CDD). GDI rendu à un système Mémoire bitmap. Les régions sales ont été utilisées Pour mettre à jour la texture de la mémoire vidéo que le gestionnaire de fenêtre utilise pour composite le bureau.


0 commentaires

3 Réponses :


1
votes

Eh bien, oui, GDI est le "Ça marche n'importe où à tout moment" API pour rendu graphique. Il met de très faibles exigences sur le pilote vidéo. Tout le monde a eu ce droit il y a longtemps. Ce qui a pris un certain temps, j'ai eu un souvenir distinct d'une carte vidéo ATI MACH qui ne m'a donné aucune fin des ennuis. Cela m'a arrêté d'acheter des produits ATI pendant un certain temps.

Tout le monde a DirectX à droite il y a moins longtemps. Il est en train de tirer parti du modèle de rendu WPF, il repose complètement sur DirectX pour faire le travail. Milcore est le nom du shim. Vous ne l'obtiendrez pas avant d'acheter dans le modèle de programmation WPF.


4 commentaires

SOOO .... Dites-vous là-bas est une version de GDI qui utilise une accélération matérielle?


Ai-je? Non je n'ai pas fait. L'interface de pilote vidéo GDI permet d'optimiser BitBlt. Cela a été fait.


Eh bien, vous n'avez pas réellement dit d'une manière ou d'une autre, à l'exception du "puits, oui" - qui aurait pu être une réponse à la question "Y a-t-il un remplacement gdi32.dll qui utilise une accélération matérielle". D'abord, vous avez eu les avantages de GDI (travaille n'importe où à tout moment, très bas demandes, tout le monde a raison, ATI n'a pas soutenu). Ensuite, vous avez parlé de DirectX (tout le monde a eu raison, utilise WPF, mis en œuvre à Milcore). Mais vous n'avez pas dit s'il y a une version de GDI qui utilise une accélération matérielle. À partir de Vista GDI n'est plus accéléré: il n'utilise pas la carte vidéo pour dessiner des primitives.


Éteignez Aero pour récupérer l'ancien comportement. Avec cela, les programmes tirent sur la mémoire, pas la carte vidéo. Aucune accélération ne peut être possible pour cela.



1
votes

Que voulez-vous dire par accélération matérielle? Je veux dire, GDI ne fait pas beaucoup d'autre que des blits raster, mais ceux-ci étaient accélérés du matériel. Et, étant donné que Vista et Windows 7 ne sont pas terriblement plus lents avec les applications de bureau, sont toujours.

GDI reçoit toujours les pilotes vidéo de faire tout le levage lourd, de sorte que GDI n'est pas accéléré dans le matériel, puis sa faute des fournisseurs de pilotes, pas de GDI.


2 commentaires

Je veux dire dessiner des lignes, des rectangles, des rectangles de remplissage, un texte de dessin, etc. GDI n'est pas accéléré; Le rendu se produit dans des logiciels sur une surface DirectX hors écran.


Il est plus que évident que GDI n'est pas accéléré dans le matériel. Comme Ian, le rendu GDI se produit dans des logiciels.



3
votes

Il semble que Vista était un cas particulier dans l'histoire de la performance GDI. Les deux articles ci-dessous montrent que l'avenir de GDI est à nouveau brillant.

http://msdn.microsoft.com /en-us/library/ff729480%28vs.85%29.aspx

GDI est le matériel accéléré sur Windows XP et accéléré sous Windows 7 quand Le gestionnaire de fenêtres de bureau est en cours d'exécution et un pilote WDDM 1.1 est utilisé. Direct2D est le matériel accéléré sur presque n'importe quel pilote WDDM et peu importe de savoir si la DWM est en cours d'utilisation. Sur Vista, GDI rendra toujours sur la CPU.

http://blogs.msdn.com/b/e7/archive/2009/04/25/engineering-windows-7-for-graphics-performance.aspx

basé sur une application réelle statistiques, ... nous avons travaillé avec notre Graphiques IHV partenaires à fournir soutien dans leurs conducteurs pour accélérer les opérations GDI les plus couramment utilisées.


2 commentaires

La réponse semble être "Microsoft a créé une version de gdi32.dll qui utilise une accélération matérielle", mais vous avez besoin de pilotes Windows 7 et WDDM 1.1 pour l'obtenir. Pas un mauvais compromis.


Je peux vraiment voir la différence de performance de GDI entre Vista et 7, maintenant que ma machine de développement est Windows 7. Je suis Vraiment Holdy Microsoft prenait le temps d'accélérer à nouveau GDI. Je ne peux qu'espérer que GDI + obtiendra le même amour.