You are not logged in.

Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

hepi

Sage

  • "hepi" started this thread

Posts: 5,364

Location: Heidelberg

  • Send private message

1

Monday, November 16th 2009, 4:10pm

Sind meine XBMC-Pakete mit bestimmten NVIDIA-Treiber-Versionen inkompatibel?

Hallo,

vielleicht habt Ihr Euch ja schon mal gefragt: Gibt es Abhängigkeiten zwischen den von Euch verwendeten XBMC-Paketen und bestimmten Nvidia-Treiber-Versionen? Wird XBMC nur mit dem Nvidia-Treiber richtig rund funktionieren, mit dem es gebaut worden ist - und mit neueren Treibern crashen? (Ähnliche Fragen kann man als VDR-Nutzer übrigens auch bzgl. xinelib stellen, wenn man ein xinelib-basiertes Frontend mit VDPAU verwendet).

Ich will versuchen, das hier zu beantworten, weil die Frage im freevdr-Forum aufkam und meiner Meinung nach [URL=http://www.freevdr.de/forum/index.php/topic,598.msg3344.html#msg3344]dort falsch beantwortet wurde[/URL].

Erstmal haben XBMC-Binary-Pakete natürlich keine direkte Abhängigkeit zum Nvidia-Treiber (oder zur VDPAU-Library), was logisch ist, weil auch Leute ohne Nvidia-GPU XBMC verwenden wollen. Will man XBMC-Pakete mit anschaltbarem VDPAU-Support bauen, ist das XBMC-Sourcepaket jedoch angewiesen auf das Paket libvdpau-dev, welches die Headerfiles (wie vdpau.h und vdpau_x11.h) enthält, die zur Nutzung der VDPAU-Bibliothek libvdpau notwendig sind. Diese Bibliothek kam bisher immer mit den Nvidia-Treibern zusammen, das wird sich aber ändern: Aktuell gibt es Bestrebungen, die Library libvdpau komplett auszukoppeln aus dem Nvidia-Treiberpaket und von Nvidia-GPUs unabhängig zu machen. Das wird momentan auch bei den Distributoren von Debian diskutiert und auch bei Ubuntu. Somit können in Zukunft theoretisch auch Nvidia-Konkurrenten ihre GPU-Beschleunigungsfunktionen über libvdpau ansteuern lassen, wenn sie das wollen.

Nun gibt es die Nvidia-Treiber in vielen unterschiedlichen Versionen, z. B. die 180er-Reihe, die 185er-Reihe, 190er-Reihe. Jedes Nvidia-Treiberpaket, egal aus welcher Reihe, generiert bisher beim Bauen auch die Pakete libvdpau und libvdpau-dev. Wenn Nvidia nun dauernd neue Features und Bugfixes anbietet mit seinen regelmäßigen Treiber-Updates, ist die Frage: Was müssen die XBMC-Entwickler für Verrenkungen machen, damit XBMC mit libvdpau problemlos funktioniert mit all diesen verschiedenen Treiberversionen?

Die Antwort lautet: Bisher gar nichts! Die Library libvdpau hat eine API, die eine Zwischenschicht zwischen Applikationen und dem Grafikkartentreiber einzieht. Und an einer API sollten im Laufe der Zeit so wenig wie möglich inkompatible Änderungen vorgenommen werden, weil sonst alle Applikationen, die diese API verwenden, ständig neu angepasst werden müssten. Glücklicherweise ist dies auch hier der Fall, mir ist nur eine inkompatible API-Änderung bekannt, die mit Treiber-Version 180.16 reingekommen ist.

Source code

1
2
3
180.16: With the NVIDIA 180.16 beta release, the VdpDecoderCreate API has
been broken so all clients such as MPlayer and MythTV will now need to be
rebuilt from source against the revised API.
Ergänzungen der API sind hierbei ok, aber bestehende Elemente dürfen sich nicht ändern (=inkompatibel).

Was heißt das? Das heißt, dass die XBMC-Entwickler sich (bisher) keine Sorgen machen müssen, dass sie ihre VDPAU-Implementierung an unterschiedliche Nvidia-Treiber-Versionen anpassen müssen: Es erscheint ein neuer Nvidia-Treiber? Kein Problem, solange die API von libvdpau (=vdpau.h) sich nicht inkompatibel geändert hat.

Woran könnten die XBMC-Entwickler erkennen, dass sich die API geändert hat? Es gibt in vdpau.h die Konstante VDPAU_VERSION und über VdpGetApiVersion kann man die Version des Backends abfragen. Bisher steht der Wert der Konstanten VDPAU_VERSION in vdpau.h aber immer noch auf Null (0), egal, welchen Nvidia-Treiber (180er,185er,190er) man verwendet.

Neue Treiber-Versionen fixen zwar Bugs, verbessern die Bildqualität und bringen dem User vielleicht eine bessere Performance, aber die bestehende API, mit der entwickelt wird, ändert sich nicht, wird höchstens um neue Dinge ergänzt.

Deshalb kann ein XBMC-Binary, das eine Build-Dependency zu nvidia-180-libvdpau-dev hat (wie mein Jaunty-XBMC-Paket), problemlos auch mit der Nvidia-Treiber-Reihe 180, 185 und 190 verwendet werden, weil die API (siehe vdpau.h in libvdpau-dev) gleich geblieben ist.

Das kann sich natürlich in Zukunft ändern, aber dann werden die XBMC-Entwickler das Problem in ihrem Sourcecode lösen, so dass es mit der alten und der neuen Version funktioniert. Und in den XBMC- Sourcepaketen würde man als Paketbauer normalerweise die jeweils neueste libvdpau-dev Version referenzieren, um in den Genuss neuer Features zu kommen.

Gruß
hepi
Must-read: yaVDR-FAQ | Aktuelle Kanallisten findet Ihr in der Channelpedia | Meine momentan aktive Hardware: VDR1: yaVDR 0.5alpha1 auf Zotac ZBOX ID40 + 2x Technisat Skystar USB HD + Gyration GYR3101 FB & KB + LCD-Display Linux4Media 4243:ee08 | VDR2: yaVDR 0.5.alpha1 auf Acer Aspire Revo 3600 + 2x TechnoTrend S2-3600 DVB-S2 USB | VDR 3: Seagate Goflex Net mit Debian Squeeze + Kernel 3.1.10 + VDR 1.7.22 + HDHomeRun 2x DVB-C

This post has been edited 3 times, last edit by "hepi" (Nov 16th 2009, 4:16pm)


2

Monday, November 16th 2009, 4:50pm

RE: Sind meine XBMC-Pakete mit bestimmten NVIDIA-Treiber-Versionen inkompatibel?

@hepi
Nur als Ergänzung ein Zitat aus known_issues.txt:

--- Linux Specific Issues -----------------------------------------------------
...

*) VDPAU is still a new and experimental feature. It is disabled by default and
will NOT be selected if renderer is set to 'Auto', it must be set manually.
Ensure that the latest drivers from NVidia are installed. As of this writing,
>180.44 is sufficient. It is known that certain subtitles may not be displayed
when VDPAU is enabled.

Und motd2k (xbmc-Entwickler) schrieb in einem Thread im xbmc-Forum:
That commit ups the driver requirement to 185.xx i'm afraid. You'll probably find X is pegging your CPU whilst playing video if you're using 180.xx, hence the UI slowdown.
Asus M3N78EM, X2 5050e, MP-S2 Twin Tuner, GT220, Ubuntu Lucid x86_64,v4l-dvb ngene-test, VDR 1.7.14 (The VDR Team), XBMC pvr-testing2 (hepi)

hepi

Sage

  • "hepi" started this thread

Posts: 5,364

Location: Heidelberg

  • Send private message

3

Monday, November 16th 2009, 5:43pm

RE: Sind meine XBMC-Pakete mit bestimmten NVIDIA-Treiber-Versionen inkompatibel?

semerchet, danke für die Infos!

Quoted

Original von semerchet
>180.44 is sufficient. It is known that certain subtitles may not be displayed
when VDPAU is enabled.
180.44 ist auch glücklicherweise die Version, die man momentan für Ubuntu Jaunty standardmäßig installiert bekommt, was auch erklärt, warum meine Jaunty-Pakete eine Build-Dependency zu nvidia-180-libvdpau-dev haben. Wenn man neuere NVIDIA-Treiber will, muss man auf non-standard Repositories ausweichen.

Quoted

Original von semerchet
Und motd2k (xbmc-Entwickler) schrieb in einem Thread im xbmc-Forum:
That commit ups the driver requirement to 185.xx i'm afraid. You'll probably find X is pegging your CPU whilst playing video if you're using 180.xx, hence the UI slowdown.
Interessant. Wenn ich es richtig verstehe, bietet der Treiber ab 185.19er eine pixmap-bezogene Performance-Optimierung, die motd2k in jenem Commit scharf schaltet. Diese Optimierung hat aber nix mit VDPAU zu tun, sondern mit X. Empfehlung wäre also: Wenn man seine CPU entlasten will, sollte man nicht mehr den 180er-Treiber verwenden bei einer XBMC-trunk-Revision >= 23193.

Gruß
hepi
Must-read: yaVDR-FAQ | Aktuelle Kanallisten findet Ihr in der Channelpedia | Meine momentan aktive Hardware: VDR1: yaVDR 0.5alpha1 auf Zotac ZBOX ID40 + 2x Technisat Skystar USB HD + Gyration GYR3101 FB & KB + LCD-Display Linux4Media 4243:ee08 | VDR2: yaVDR 0.5.alpha1 auf Acer Aspire Revo 3600 + 2x TechnoTrend S2-3600 DVB-S2 USB | VDR 3: Seagate Goflex Net mit Debian Squeeze + Kernel 3.1.10 + VDR 1.7.22 + HDHomeRun 2x DVB-C

4

Monday, November 16th 2009, 8:39pm

hi

Quoted

Nvidia-GPU XBMC verwenden wollen. Will man XBMC-Pakete mit anschaltbarem VDPAU-Support bauen, ist das XBMC-Sourcepaket jedoch angewiesen auf das Paket libvdpau-dev, welches die Headerfiles (wie vdpau.h und vdpau_x11.h) enthält, die zur Nutzung der VDPAU-Bibliothek libvdpau notwendig sind.

stimmt so nicht ist libvdpau-dev nicht instalirt baut xbmc auch wen mann die option --enable-vdpau und in der control nvidia-190-libvdpau-dev weglest
mfg det
Jeder sollte sein Leben so leben können wie er/sie es möchte, frei und
unabhängig, in der Not anderen zur Seite stehend, nie vergessen was man
ist, eben einfach nur Mensch sein mit allen Schwächen und Stärken
Lieber stehend sterben als ewig gebückt leben

Fireblade

Intermediate

Posts: 389

Location: Bremen

  • Send private message

5

Wednesday, November 18th 2009, 11:48pm

Wat nu

N'Abend,
was ist den nun richtig, Abhängig oder nicht?
Das hier steht immer noch im ersten Post:

Quoted

Ich will versuchen, das hier zu beantworten, weil die Frage im freevdr-Forum aufkam und meiner Meinung nach dort falsch beantwortet wurde.
Gruß Axel
Asus P5KPL-1600 Cel.440, 2x TT-S2-1600, OCZ Vertex, Asus GT520 , Gen2VDR V3 Release :]

This post has been edited 1 times, last edit by "Fireblade" (Nov 19th 2009, 12:00am)


hepi

Sage

  • "hepi" started this thread

Posts: 5,364

Location: Heidelberg

  • Send private message

6

Wednesday, November 18th 2009, 11:57pm

RE: Sind meine XBMC-Pakete mit bestimmten NVIDIA-Treiber-Versionen inkompatibel?

Oben schreibe ich:

Quoted

Original von hepi
Deshalb kann ein XBMC-Binary, das eine Build-Dependency zu nvidia-180-libvdpau-dev hat (wie mein Jaunty-XBMC-Paket), problemlos auch mit der Nvidia-Treiber-Reihe 180, 185 und 190 verwendet werden, weil die API (siehe vdpau.h in libvdpau-dev) gleich geblieben ist.
Ist das unklar ausgedrückt?
Must-read: yaVDR-FAQ | Aktuelle Kanallisten findet Ihr in der Channelpedia | Meine momentan aktive Hardware: VDR1: yaVDR 0.5alpha1 auf Zotac ZBOX ID40 + 2x Technisat Skystar USB HD + Gyration GYR3101 FB & KB + LCD-Display Linux4Media 4243:ee08 | VDR2: yaVDR 0.5.alpha1 auf Acer Aspire Revo 3600 + 2x TechnoTrend S2-3600 DVB-S2 USB | VDR 3: Seagate Goflex Net mit Debian Squeeze + Kernel 3.1.10 + VDR 1.7.22 + HDHomeRun 2x DVB-C

hepi

Sage

  • "hepi" started this thread

Posts: 5,364

Location: Heidelberg

  • Send private message

7

Thursday, November 19th 2009, 12:00am

Quoted

Original von det
hi

Quoted

Nvidia-GPU XBMC verwenden wollen. Will man XBMC-Pakete mit anschaltbarem VDPAU-Support bauen, ist das XBMC-Sourcepaket jedoch angewiesen auf das Paket libvdpau-dev, welches die Headerfiles (wie vdpau.h und vdpau_x11.h) enthält, die zur Nutzung der VDPAU-Bibliothek libvdpau notwendig sind.

stimmt so nicht ist libvdpau-dev nicht instalirt baut xbmc auch wen mann die option --enable-vdpau und in der control nvidia-190-libvdpau-dev weglest
mfg det

Hi det,
ich sehe keinen Widerspruch in unseren Aussagen hier.
Gruß
hepi
Must-read: yaVDR-FAQ | Aktuelle Kanallisten findet Ihr in der Channelpedia | Meine momentan aktive Hardware: VDR1: yaVDR 0.5alpha1 auf Zotac ZBOX ID40 + 2x Technisat Skystar USB HD + Gyration GYR3101 FB & KB + LCD-Display Linux4Media 4243:ee08 | VDR2: yaVDR 0.5.alpha1 auf Acer Aspire Revo 3600 + 2x TechnoTrend S2-3600 DVB-S2 USB | VDR 3: Seagate Goflex Net mit Debian Squeeze + Kernel 3.1.10 + VDR 1.7.22 + HDHomeRun 2x DVB-C

Fireblade

Intermediate

Posts: 389

Location: Bremen

  • Send private message

8

Thursday, November 19th 2009, 12:24am

Hallo Henning,
vielen vielen Dank für den äußert freundlichen Hinweis.
Angenehme Nachtruhe
Axel
Asus P5KPL-1600 Cel.440, 2x TT-S2-1600, OCZ Vertex, Asus GT520 , Gen2VDR V3 Release :]

hepi

Sage

  • "hepi" started this thread

Posts: 5,364

Location: Heidelberg

  • Send private message

9

Thursday, November 19th 2009, 2:32pm

Hallo Axel,

Quoted

Original von Fireblade
Hallo Henning,
vielen vielen Dank für den äußert freundlichen Hinweis.
Angenehme Nachtruhe
Axel


vielleicht habe ich Deine Frage nicht verstanden. Du fragtest: "Abhängig oder nicht?". Könntest Du Deine Frage noch etwas präzisieren, damit ich Dir zufriedenstellend antworten kann.

Gruß
hepi
Must-read: yaVDR-FAQ | Aktuelle Kanallisten findet Ihr in der Channelpedia | Meine momentan aktive Hardware: VDR1: yaVDR 0.5alpha1 auf Zotac ZBOX ID40 + 2x Technisat Skystar USB HD + Gyration GYR3101 FB & KB + LCD-Display Linux4Media 4243:ee08 | VDR2: yaVDR 0.5.alpha1 auf Acer Aspire Revo 3600 + 2x TechnoTrend S2-3600 DVB-S2 USB | VDR 3: Seagate Goflex Net mit Debian Squeeze + Kernel 3.1.10 + VDR 1.7.22 + HDHomeRun 2x DVB-C

10

Thursday, November 19th 2009, 6:23pm

RE: Wat nu

Quoted

Original von Fireblade
N'Abend,
was ist den nun richtig, Abhängig oder nicht?


Abhängig sind sie nicht. Du kannst sie updaten usw. Aber es gibt ein Performance-Problem mit der GLX-Erweiterung bei 180.xx .

Gruß Falk
Asus M3N78EM, X2 5050e, MP-S2 Twin Tuner, GT220, Ubuntu Lucid x86_64,v4l-dvb ngene-test, VDR 1.7.14 (The VDR Team), XBMC pvr-testing2 (hepi)

This post has been edited 1 times, last edit by "semerchet" (Nov 19th 2009, 6:24pm)


Fireblade

Intermediate

Posts: 389

Location: Bremen

  • Send private message

11

Thursday, November 19th 2009, 10:22pm

Hi hepi,
nach einigen Recherchen im XBMC-Forum und dem Hinweis von Falk (Danke) kann ich mir das ganze nun erklären, und wahrscheinlich lassen sich die Probleme der verschiedenen Versionen auf defektes Abspielmaterial (zumindest in einem Fall bei mir (m2ts-Format)).
Ob es letztendlich besser läuft wenn nvidia vom X-Server und von XBMC gleich sind werden die nächsten Versionen zeigen, es lässt sich ja aus den sourcen selbstbauen ( oder jemand kennen der es baut)
Gruß Axel
Asus P5KPL-1600 Cel.440, 2x TT-S2-1600, OCZ Vertex, Asus GT520 , Gen2VDR V3 Release :]

12

Tuesday, November 24th 2009, 6:24pm

hi
xbmc.log
17:12:18 T:3078162320 M:1991188480 NOTICE: GL_VENDOR = NVIDIA Corporation
17:12:18 T:3078162320 M:1991188480 NOTICE: GL_RENDERER = GeForce 8400 GS/PCI/SSE2
17:12:18 T:3078162320 M:1991315456 NOTICE: GL_VERSION = 3.2.0 NVIDIA 190.42
mfg det
Jeder sollte sein Leben so leben können wie er/sie es möchte, frei und
unabhängig, in der Not anderen zur Seite stehend, nie vergessen was man
ist, eben einfach nur Mensch sein mit allen Schwächen und Stärken
Lieber stehend sterben als ewig gebückt leben

hepi

Sage

  • "hepi" started this thread

Posts: 5,364

Location: Heidelberg

  • Send private message

13

Wednesday, November 25th 2009, 2:48pm

Da es jetzt seit kurzem den Beta-Treiber 195.22 gibt, will ich anmerken, dass dafür jetzt erstmals die oben angesprochene Konstante VDPAU_VERSION in libvdpau inkrementiert worden ist:

Source code

1
#  Modified vdpau.h to increment VDPAU_VERSION, to reflect the fact that new features have been added in the past. Also, add the new define VDPAU_INTERFACE_VERSION.


Code-Change:

http://cgit.freedesktop.org/~aplattner/l…c657c932fae32e1

Meines Wissens nach wird diese Konstante aber weder in xine-lib noch in XBMC derzeit ausgewertet. Ich bin neugierig, ob sich das jetzt ändert.

Gruß
hepi
Must-read: yaVDR-FAQ | Aktuelle Kanallisten findet Ihr in der Channelpedia | Meine momentan aktive Hardware: VDR1: yaVDR 0.5alpha1 auf Zotac ZBOX ID40 + 2x Technisat Skystar USB HD + Gyration GYR3101 FB & KB + LCD-Display Linux4Media 4243:ee08 | VDR2: yaVDR 0.5.alpha1 auf Acer Aspire Revo 3600 + 2x TechnoTrend S2-3600 DVB-S2 USB | VDR 3: Seagate Goflex Net mit Debian Squeeze + Kernel 3.1.10 + VDR 1.7.22 + HDHomeRun 2x DVB-C