2010-05-30 14 views
5

Ich muss eine WPF-App in einer Umgebung, die alle die gleichen Dell-PCs mit einem Intel GMA 3000 Grafikchip (onard, Q963/Q965) hat. Die App macht nur mit Software-Rendering (Angegebene so durch die RenderCapability.Tier -property und auch Perforator der Performance Toolkit, das zeigt.Wie zu wissen, ob eine Grafikkarte Hardware-Rendering für WPF

Auf alle diese Maschinen ist DirectX 9c installiert und DXDiag heißt es auf viele, aber nicht auf alle diese Maschinen, dass Direct-3d und Direct-Draw-Beschleunigung aktiviert ist, habe ich auch die Registrierung überprüft, wenn das Setup dieser Maschinen wpf-hw-Rendering deaktiviert, aber das ist auch nicht der Fall.Auf einem Rechner habe ich auch den Video-Treiber und dx aktualisiert Kein Erfolg

Wenn ich die Ressourcen richtig interpretiere, dann auf einem PC, der DirectX 9c installiert hat (und D3D-acceleration ist aktiv), findet auch wpf hardware rendering statt. Aber auf den oben genannten Maschinen ist DX9c installiert, h egal, es gibt keine hw rendering. Entsprechend der Vorgabe von Daniel Bern denke ich auch, dass zumindest das Rendering auf Tier 1 möglich und aktiv sein muss.

Das einzige, worüber ich mir keine Gedanken mache, ist der Speicher, denn das Grafiksystem weist dynamisch Systemspeicher zu und hat keinen eigenen Speicher. Wie kann ich herausfinden, ob ein bestimmter Grafikchip Hardware-Rendering für wpf unterstützen muss oder nicht. Ist es so, dass mit aktivem DirectX 9c auch das harware rendering unterstützt wird oder mussten auch noch andere Anforderungen erfüllt werden, die weiter gehen, als dx9c benötigt? Die zweite Frage ist, wenn wpf durch dx rendert, wird dies über Direct-3d gemacht oder wird Direct-Draw verwendet. Gibt es eine gute Dokumentation zu diesem Thema?


Es stellte sich heraus, dass auf dem Kunden-PC ist die Direkt 3D-Beschleunigung (in DXDiag) aktiv war, howewer nicht funktionsfähig. Die Testprogramme zum direkten Testen von 3d haben immer zu Fehlern geführt. Dies macht das Problem zu einem Support-Problem und ich werde ein Ticket in der Support-Abteilung der beteiligten Unternehmen öffnen. Die Frage, welche Komponente von dx zum Rendern von wpf in Hardware verwendet wird, kann wie folgt beantwortet werden: Die Rendering erfolgt über den Media Integration Layer (MIL). Wenn DirectX (geeignete Version) verfügbar und funktionsfähig ist, schreibt MIL alle Rendering-Befehle direkt an D3D. Außerdem wird DirectShow (oder sein Nachfolger) zum Verarbeiten von Videos verwendet. Die Medienintegrationsschicht ist nicht verwalteter Code und es scheint nur sehr wenig Dokumentation darüber zu geben.

Die obigen Fakten haben mich zu der Erkenntnis geführt, dass ein aktives DirectX9c ein klarer Indikator dafür ist, dass hw-rendering für wpf stattfinden kann und wird. Daher kann die Frage beantwortet werden, welcher Chip das hw-rendering unterstützt, indem überprüft wird, ob der Chip dx9c unterstützt (für Tier-2-Rendering). Die Anforderungsspezifikation finden Sie unter here (Danke an Daniel Bern).

UPDATE

Der Grund, warum d3d und Hardware-Rendering nicht im obigen Fall ein Antrag war nicht funktioniert, dass ein Spiegel Videotreiber zur Verfügung zu stellen Remote-Terminal-Dienste wie Net-Meeting hat (es war Software von den eingetragenen Support-Abteilung, die zur Remote-Verwaltung der Client-PCs verwendet wurde). Die Deaktivierung dieses Spiegeltreibers führte zu einem funktionalen direkten 3d und somit fand das WPF-Hardware-Rendering statt. Allerdings war der Render-Level nur Tier 1 (ich denke wegen der Video-Speicher-Beschränkung).

Ich hoffe, dieser Beitrag wird anderen Menschen helfen, die ein ähnliches Problem haben.

Hier einige Links in das Thema ein:

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

Antwort

Verwandte Themen