Installation eines VDR+Plugins nativ auf CoreELEC Boxen

  • machtnix versuch es mal mit diesem patch:

    Oder mit der Änderung die ich oben gepostet hatte.

    Edited once, last by jojo61 (May 4, 2022 at 1:47 PM).

  • Das Clear funktioniert aber wohl auf dem DRM Buffer nicht. Ich könnte das DMA bei der CPU ja weglassen, nur dann ist trotzdem das glBlit noch vorhanden (auch wenn es nicht genutzt wird). Um das weg zu bekommen müsste ich dann wieder einen Compiler #if drum herum bauen und das will ich nicht. Damit müsste man das dann für die CPU extra bauen.

    So ganz verstehe ich nicht, wohin das OSD bei dir gerendert wird und wie da beim odroid die Pipeline ist ;)

    Bei softhddevice-drm (mit GL) wird ein gbm_suface erstellt, auf das OpenGL rendert und drm macht daraus einen framebuffer, der dann auf einem separaten drm plane dargestellt wird, so machts die kmscube Referenz.
    Zum debuggen habe ich mir mal die Mühe gemacht und die Möglichkeit eingebaut, den fertigen output buffer in ein png schreiben zu lassen. Damit könnte man zumindest prüfen, ob die GL Seite schon falsch ist.

    Woher bekämst du denn den DRM Buffer?

    Gruß

    Andreas

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Wenn du dir das osdopengl.cpp anschaust dann sieht du das ich als Framebuffer (bei DMA) eine egIImage anlege und darauf wird dann gerendert.


    Das ganze habe ich im Internet abgeschrieben und deswegen kann ich den genauen Ablauf wie das zu einem glFrameBuffer passt auch nicht sagen.

    Zumindest scheint die Funktion glBlitFramebuffer zu merken das das Zeil hier kein linearer Framebuffer ist. Das ganze funktioniert ja auch mit deinem

    expliziten rendern, nur beim zweiten mal wird der alphakanal immer dunkler. Evtl. muss ich einfach das eglImage immer wieder neu anlegen

  • Wenn du dir das osdopengl.cpp anschaust dann sieht du das ich als Framebuffer (bei DMA) eine egIImage anlege und darauf wird dann gerendert.

    Das hört sich ja richtig an. Ich habe das zu vdpau-Zeiten mit einem eglCreatePbufferSurface gemacht und jetzt halt über ein gbm surface. Aber das Prinzip sollte dasselbe sein.

    Stimmt nur der alpha-Wert nicht, oder wird komplett über das alte OSD gezeichnet?

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Ich rendere komplett über das alte OSD. Aber nur der transparente Teil geht kaputt. Naja kaputt .. es sieht so aus als ob Alpha immer grösser wird und damit wird dann der Alpha Bereich im OSD so langsam schwarz. Nach 3-4 updates/neu rendern des OSD ist der transparente Teil dann schwarz.

  • Ok, ich hatte ein ähnliches Problem auch, aber da wurde das alte OSD bzw. in unserem Fall die alte Textur vorher nicht gelöscht. Aber das betraf dann alle Bereiche, das konnte man gut sehen, wenn man durchs Menü gewandert ist. Markierte Zeilen blieben dann stehen. Sah man aber erst, wenn die Transparenz im VDR OSD relativ hoch war, sonst wars schnell ganz dunkel.

    Wenn das bei dir wirklich nur der transparente Bereich ist, ist das in der Tat merkwürdig aber es wäre interessant, ob der output buffer wirklich richtig ist und später erst was falsch läuft...

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Ich habs gefunden :)

    Ich muss das Blending ausschalten. Sonst blendet er jeden Update ins eglImage über das aktuelle. Löschen kann ich das eglImage wohl nicht.

    Jetzt wird es einfach überschrieben egal was da vorher stand. Ich werde es gleich einchecken.

    Deine Beschreibung mit dem Menü wandern hat mich drauf gebracht. Das habe ich dann auch hier gesehen.

    Bin gespannt ob es nun auch mit der Mali 450 geht.

  • jojo61: Sorry, dass ich Wasser in den Wein gießen muss. Leider funktionieren mit der letzten Änderung die Skins vom Skindesigner nicht mehr, da viele Sachen nicht richtig oder gar nicht dargestellt werden...

    EDIT: Wenn ich im Hauptmenü nach unten scrolle, sieht das Bild für einen kurzen Moment normal aus, dann fehlen wieder Teile, bis ich weiter scrolle.

    Dasselbe gilt auch für die OK-Taste. Hier fehlen Teile, dann blitzt kurz das ganze Bild auf, nur um wieder zu verschwinden. Vielleicht hilft Dir das beim Debuggen...

    Edited 2 times, last by beta (May 4, 2022 at 8:45 PM).

  • jojo61 Fehlt vielleicht das flush oder finish?

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Und täglich grüßt der skindesigner :) Ich weiss gar nicht warum man ein so überladenes OSD haben will :)

    beta ich habe den Fehler gefunden und nun eingecheckt. Danke für das Feedback.

    Kann mal jemand mit einer Mali 450 feedback geben ob es nun geht.

  • Nur kurz zur Info. Ich habe ein neues Release erstellt. Darin ist einiges aufgeräumt worden, Updates für verschiedene Plugins und ein paar Fixes. Die Version ist 0.2.0.

    Zur Info, ich habe nun keine Probleme mehr beim erstellen der Images mit ./build-local.sh -9, vielen Dank für die tolle Arbeit. Jetzt teste ich das Image mit einem Tanix TX3. :)

    Hard- + Software Konfiguration:

    Matrix-Case: Matrix-ARM-Board + FF HD 6400 + Unicable

    Debian-Buster - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad


    RaspberryPi3b+
    raspbian - vdr-2.5.6 + device.patch

    Plugins: rpihddevice - skinnopacity - osdteletext - epgsearch - markad

    Tuner: USB DVBSky S960 DVB-S2 Tuner

    Am basteln:

    Pine H64 Modell B + Sundtek USB Dual DVB-S2 @Unicable

    RasberryOS - vdr-2.5.6 - Plugins: softhddevice-drm (rella) - skinnopacity - osdteletext - epgsearch

    ——

    RockPro64 Board mit softhddevice-drm mit DD Max-S8 (8Tuner) über Unicable auf armbian - vdr-2.5.6

    Plugins: softhddevice-drm (zillerbaer) - skinnopacity - epgsearch - osdteletext

    ————————————

    Am basteln:

    Compute Module 4 on IO-Board - FF-HD-6400 über PCIe Extender + Unicable

    RasberryOS - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad

  • Hallo,

    leider kommt jetzt bei der Mali450 ein anderer Fehler:

    May 06 14:25:03 CoreELEC vdr[3936]: [3936] loading plugin: /usr/local/lib/vdr/libvdr-softhdodroid.so.2.6.1

    May 06 14:25:03 CoreELEC vdr[3936]: [3936] ERROR: /usr/local/lib/vdr/libvdr-softhdodroid.so.2.6.1: undefined symbol: glGenVertexArrays

    YaVDR ansible focal UHD :naenae

  • Aus meiner Sicht ist das ein libmali-Problem. Den Fehler hatte ich gestern in meiner chroot-Umgebung, nachdem ich mir die libmali zerschossen hatte.

    Wahrscheinlich wäre der schnellste Weg, um zu schauen, ob das auf Deiner Box läuft, ein UBUNTU im chroot aufzusetzen, VDR und softhdodroid zu kompilieren und zu schauen, ob es dann startet. Falls ja, könnte man die libmali ersetzen....

  • Ein libmali Problem insofern, als dass der blob nur striktes OpenGL/ES 2.0 kann.

    Das Problem ist, dass das aktuelle openglosd.cpp für OpenGL geschrieben wurde und Funktionen enthält, die OpenGL/ES 2.0 nicht kennt. glGenVertexArrays, glBindVertexArray sind z.B. welche davon.

    Es ist nicht allzu aufwendig, das an gles anzupassen, aber man muss sich halt durchwursteln. Ich habe das vor langer Zeit schon für libmali gemacht. Die Shader haben damals nicht gepasst und GL_RED oder GL_CLAMP_TO_BORDER gabs auch nicht.Falls sich jemand damit beschäftigen will, kann ich ihm gerne meinen Code zur Verfügung stellen.

    Unabhängig davon wärs wirklich zu überlegen, ob ihr nicht auf den blob verzichten könnt und stattdessen mainline mesa nutzt...

    Gruß

    Andreas

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Unabhängig davon wärs wirklich zu überlegen, ob ihr nicht auf den blob verzichten könnt und stattdessen mainline mesa nutzt...

    Das verstehe ich nicht ganz. Wir reden hier doch von der libMali.so Wie hängt das mit mainline mesa zusammen ?


    Im übrigen habe ich nicht die Fähigkeiten das openglosd umzuschreiben um nur noch OpenGL 2.0 zu nutzen. Wer das kann und Lust dazu hat kann mir gerne einen Patch schicken. Ob sich das lohnt ist mir aber unklar. Die Mali 450 ist ja nun mal schon sehr alt. Und evtl. gibt es ja auch eine Lösung mit mainline mesa.

  • Die libmali.so kommt doch vom Boardhersteller? Die ist closed source und enthält nur GLES 2.0 Funktionen.

    Mesa stellt genauso wie die libmali.so die GL Funktionen zur Verfügung.

    Seit geraumer Zeit gibts in mesa die Unterstützung für Mali400/450 und über mesa wird teilweise opengl angeboten.

    Ich brings deshalb ins Spiel, weils einfach open source ist...

    Wenn sich das jemand ansehen möchte, kann man hier einen Commit finden, der die Umstellung auf gles beschreibt oder sich an meinem aktuellen fork entlang hangeln - der macht reines gles 2.0

    Allzu viel ist es eigentlich nicht - die vdpau Geschichten kann man ignorieren.

    Ich könnts machen, allerdings wird das testen schwierig, da mir die Hardware fehlt.

    Gruß Andreas

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • https://github.com/Zabrimus/CoreE…-ng/options#L84 gibt an, welche gl Variante gewählt wird.

    Bei anderen steht das z.B. auf mesa, aber keine Ahnung, ob das so einfach geht.

    Man müsste evtl. verschiedene Devices anlegen...

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!