Moin,
ich habe dem softhddevice eine OpenGL beschleunigte OSD Ausgabe hinzugefügt. Das ganze funktioniert aktuell nur mit VDPAU Ausgabe auf NVidia Karten. Getestet habe ich das ganze nur mit dem NVidia Treiber 340.93, aber ich hoffe, dass es auch mit anderen Treiberversionen keine Probleme gibt. Ich habe hierfür einen Fork auf Github angelegt:
https://github.com/louisbraun/softhddevice-openglosd
Über den Schalter "OPENGLOSD" im Makefile kann die OpenGL OSD Unterstützung eingeschalten werden, in meinem Fork ist das natürlich schon aktiviert Der Fork entspricht dem aktuellen softhddevice Git, wobei ich jedoch die Änderungen der Revision f47ee3a2 "Speedup queuing output surface, when decoder buffers are full" wieder herausnehmen musste, da ansonsten die initiale Ausgabe des OSD stark verzögert wurde. Vielleicht kann Johns da mal schauen, wo es klemmt...
Für die Installation wird die "OpenGL Mathematics" Bibliothek glm benötigt, diese lib muss ggf. vor dem bauen installiert werden.
Das High Level OSD habe ich nach dem Vorbild aus dem rpihddevice implementiert. Vielen Dank an Thomas an dieser Stelle für die schöne Vorlage Den OpenGL Teil musste ich natürlich völlig neu implementieren. Das High Level OSD ist komplett modular ausgelegt, ich habe nur einige kleine Anpassungen an den Schnittstellen im softhddevice selbst vornehmen müssen. Die Ausgabe erfolgt über die OpenGL-VDPAU Interop Schnittstelle von NVidia, über die mit OpenGL gerenderte Texturen auf VDPAU Surfaces gelegt werden können. Prinzipiell würde das OpenGL OSD aus meiner Sicht auch mit VAAPI zusammen funktionieren, es müsste nur die Ausgabe über eine "VAAPI-OpenGL Interop" Schnittstelle erfolgen - falls es sowas gibt. Da ich solche Hardware nicht einsetze, habe ich mich darum nicht gekümmert
Das OpenGL OSD rendert jegliche Ausgabe direkt über OpenGL Befehle "in der GPU" und sollte mit allen verfügbaren Skins zusammenarbeiten. Bei Benutzung eines Skindesigner Skins werden Grafiken (entsprechend den Einstellungen im Skindesigner Setup) beim Starten des Skins bzw. beim ersten Laden der Grafik im GPU Speicher gecacht. Im Softhddevice gibt es eine Setup Option, wieviel GPU Speicher dafür maximal verwendet werden darf. Der Default Wert ist 128MB. Beim Shady kann das schon ein bisschen knapp werden Den Wert sollte jeder seiner Grafikkarte entsprechend einstellen, aus Performancesicht optimal ist es natürlich, wenn die Skin Grafiken komplett in den GPU Speicher geladen werden können.
Ich bin gespannt, wie sich die Erweiterung auf den verschiedenen Systemen verhält. Insbesondere Animationen sind bei mir sowohl auf meinem Dev System mit einer onboard 9300 als auch auf meinemProd System mit einer GT430 schon ein bisschen schicker Aber auch die Ausgabe an sich ist insbesondere bei aufwändigeren Skins merkbar flüssiger.
Jo...ich hoffe auf reges Feedback, viel Spass beim Testen!
Ciao Louis