# Mesa EGL OpenGL ohne X11 installieren

## alexander_ro

Hallo Mädels ... Jungs ...  :Smile: 

Ich versuche gerade auf meinem Asus eee 901 mesa3D so zu installieren das es mit DRI/DRM ohne X11 funktioniert. Leider bekomme ich das nicht so hin. Wenn ich es mit emerge installiere will er immer auch jede Menge X11 Komponenten mit installiern. Ich habe auch nicht viel an Infos im Netz gefunden. Ein Versuch mit dem USE="-X" hat auch nicht funktioniert.

Grüße

Alexander

----------

## schmidicom

Es korrigiere mich jemand wenn ich jetzt komplett daneben liege aber mesa3d hat doch schon immer direkt mit der Hardware gearbeitet, X11 hin oder her. Die paar x11-libs welche mesa3d verlangt dürften wohl kaum der rede Wert und auch meilenweit von der Installation eines ganzen X11 entfernt sein. Sogar der Weston (reference implementation of a Wayland compositor) hat ein paar x11-libs als Abhängigkeit.

----------

## alexander_ro

Definiere mal "die paar".

Es sind 27-Pakete die mit x11-* anfangen. Meiner Meinung nach mehr als ein paar. Wenn Ihr die Liste braucht müsste ich die mal irgendwie in eine Datei schreiben und dann von dem Rechner kopieren um die hier zu Posten.

----------

## schmidicom

Ich bezog mich dabei auf die Ausgabe von "equery g mesa", was dir vermutlich etwas entgegen springt werden wohl die Abhängigkeiten der Abhängigkeiten sein. Aber selbst wenn du dir jetzt Gedanken darum machst, glaube mir, mit der Zeit legt sich auch das.  :Wink: 

----------

## firefly

Direkte Abhängigkeiten zu x11-* ebuilds sind es nur 14.

Wobei 7 davon aus der kategorie x11-proto sind welche nur headers installieren.

Das haupt problem wieso das mesa ebuild fix abhängigkeit zu x11 libs hat ist der, dass das ebuild glx immer aktiviert.

Und GLX bietet entsprechende APIs an um unter X11 ein OpenGL kontext für ein X11 Fenster zu erzeugen.

----------

## alexander_ro

Hier habe ich jetzt mal die Liste der Paket die ein "emerge mesa" installieren will.

```

[ebuild  N     ] app-eselect/eselect-opengl-1.2.7

[ebuild  N     ] app-eselect/eselect-mesa-0.0.10

[ebuild  N     ] virtual/libudev-215-r1  USE="-static-libs -systemd"

[ebuild  N     ] x11-proto/xproto-7.0.27  USE="-doc"

[ebuild  N     ] x11-proto/xextproto-7.3.0  USE="-doc"

[ebuild  N     ] x11-proto/xf86vidmodeproto-2.3.1-r1

[ebuild  N     ] dev-libs/libpthread-stubs-0.3-r1  USE="-static-libs"

[ebuild  N     ] x11-misc/util-macros-1.19.0

[ebuild  N     ] media-fonts/font-util-1.3.0

[ebuild  N     ] x11-proto/xf86driproto-2.1.1-r1

[ebuild  N     ] x11-proto/glproto-1.4.17

[ebuild  N     ] sys-devel/llvm-3.5.0  USE="libffi ncurses static-analyzer -clang -debug -doc -gold -libedit -multitarget -ocaml -python {-test} -xml" PYTHON_TARGETS="python2_7 (-pypy)" VIDEO_CARDS[ebuild  N     ] x11-proto/dri3proto-1.0

[ebuild  N     ] x11-proto/dri2proto-2.8-r1

[ebuild  N     ] x11-proto/presentproto-1.0

[ebuild  N     ] x11-libs/libpciaccess-0.13.3  USE="zlib -minimal -static-libs"

[ebuild  N     ] x11-proto/kbproto-1.0.6-r1 

[ebuild  N     ] x11-libs/xtrans-1.3.5  USE="-doc"

[ebuild  N     ] x11-proto/inputproto-2.3.1 

[ebuild  N     ] x11-proto/xf86bigfontproto-1.2.0-r1

[ebuild  N     ] x11-proto/damageproto-1.2.1-r1 

[ebuild  N     ] x11-proto/xcb-proto-1.11  PYTHON_TARGETS="python2_7 python3_3 -python3_4"

[ebuild  N     ] x11-libs/libxshmfence-1.2  USE="-static-libs" 

[ebuild  N     ] x11-libs/libdrm-2.4.59  USE="-libkms -static-libs" VIDEO_CARDS="intel nouveau radeon vmware (-exynos) (-freedreno) (-omap) (-tegra)"

[ebuild  N     ] x11-libs/libXau-1.0.8  USE="-static-libs" 

[ebuild  N     ] x11-libs/libXdmcp-1.1.1-r1  USE="-doc -static-libs"

[ebuild  N     ] x11-proto/fixesproto-5.0-r1 

[ebuild  N     ] x11-libs/libxcb-1.11-r1  USE="-doc (-selinux) -static-libs {-test} -xkb"

[ebuild  N     ] x11-libs/libX11-1.6.2  USE="ipv6 -doc -static-libs {-test}" 

[ebuild  N     ] x11-libs/libXext-1.3.3  USE="-doc -static-libs" 

[ebuild  N     ] x11-libs/libXfixes-5.0.1  USE="-static-libs" 

[ebuild  N     ] x11-libs/libXdamage-1.1.4-r1  USE="-static-libs"

[ebuild  N     ] x11-libs/libXxf86vm-1.1.4  USE="-static-libs" 

[ebuild  N     ] media-libs/mesa-10.3.7-r1  USE="bindist classic dri3 egl gallium gbm llvm nptl udev -debug -gles1 -gles2 -opencl -openmax -openvg -osmesa -pax_kernel -pic -r600-llvm-compiler (-sel

```

Ich habe mal versucht das enable-glx auszukommentiern. Das geht so natürlich nicht weil er den Hash übergrüft was ja auch Sinn macht.

----------

## Christian99

mal anders gefragt: wieso ist dir denn das zuviel. du hast llvm aktiviert und llvm alleine braucht hier bei mir über 400MiB. Im vergleich dazu sollten die x11 sachen nicht mehr allzu viel ins gewicht fallen.

----------

## alexander_ro

Ich hab llvm nicht aktiviert das hat was auch immer selbst gemacht. Evtl default Konfiguration?

Wenn ich es recht sehe brauche ich llvm auch nur zum kompilieren der Anwendung. Das macht doch Code Optimierung oder?

Die Erfahrung hat gezeigt das alles was ich nicht brauche und da ist im laufe der Zeit dazu neigt Probleme zu verursachen. Ich weiß es aber auch nicht so genau ob es den Aufwand Wert ist zu versuchen das weg zu bekommen. Genau genommen kann man das auch erst beurteilen wenn man weiß wie es geht und ich weiß es noch nicht. Bisher habe ich auch noch nicht so genau herausgefunden wie man eine grafische Ausgabe mit EGL und OpenGL baut. Leider findet man dazu wenig hilfreiches im Netz.

Was schätzt Du denn was es an Platz braucht?

<edit>

Ich habe das nun mal einfach installiert es baucht ca. 200MB mehr an Platz (also alles zusammen siehe Liste oben). Wenig ist es nicht aber weniger als ich dachte. Soweit mein Test-Programm fertig ist kann man es übersetzen funktionieren tut es nicht. Ich bekomme da eine Warnung: libEGL warning: DRI2: xcb_connect failed.

</edit>

----------

## Christian99

was hast du denn eigentlich vor? Du versuchst eine OpenGL anwendung zu schreiben, wenn ich das richtig sehe?

Eine normale Konsole kann aber keine Grafik ausgeben. Dafür brauchst du einen X11-server (oder neuer: Wayland) oder aber eine framebufferconsole (Stichwort: DirectFB) So wirklich kenn ich mich aber da auch nicht aus...

----------

## alexander_ro

Ja stimmt ich möchte OpenGL Anwendungen schreiben. Ich hatte aber angenommen das ich dazu nicht unbedingt X11 oder Wayland brauche. Wenn ich es bis jetzt richtig verstanden habe kann Mesa über DRM/DRI auf die Grafikhardware zugreifen. EGL übernimmt dabei die Initialisierung eines Grafikkontextes in dem man dann OpenGL benutzen kann. Das Versuche ich gerade so zu installieren und mir mal ein einfaches Beispiel zu bauen. Mit dem Auskennen bin ich da auch noch nicht so wirklich weit ...  :Wink: 

----------

## Christian99

ok, wenn das mit EGL geht scheinst du mehr zu wissen als ich. in dem fall kann ich dir dann aber leider nicht weiterhelfen  :Smile: 

----------

## Schattenschlag

Meinst du das hier mit bezüglich Mesa ?

http://www.computerbase.de/2015-05/linux-wissen-grafik-stack-unter-linux-der-unterbau/

http://de.wikipedia.org/wiki/Mesa_3D

Da steht auch was von ...

```
Die Hardwarebeschleunigung wird über die Direct Rendering Infrastructure (DRI) und deren Kernel-Modul DRM realisiert, wobei ein hardwarebeschleunigtes Backend im Userspace die Verbindung zu Mesa herstellt. Bei Direct Rendering werden die OpenGL-Befehle direkt an den 3D-Treiber übergeben und umgehen dabei den früher noch darin involvierten X-Server.
```

----------

## alexander_ro

Ja genau das meine ich.

----------

## py-ro

Das erfordert dennoch ein gestartetes X, da dieses den Treiber bereitstellt.

Ganz ohne X bräuchtest SDL IMHO.

Bye

Py

----------

## alexander_ro

Doch das geht zumindest mit den OpenSource Treibern. Hier im 10. Posting wird ein Beispiel genannt das habe ich schon mal probiert das funktioniert jetzt bei mir. Ich musste aber noch das USE-Flag gles2 für die Mesa Installation angeben.

Allerdings habe ich jetzt auf meinem Alien M14 ein Problem mit dem USE gles2. Wenn ich das richtig interpretiere brauchen einige Programme OpenGL aber OpenGL und gles2 lassen sich nicht parallel installieren.

Der Befehl:

```

emerge --ask --update --deep --with-bdeps=y --newuse world

```

sagt dann das hier:

```

!!! The ebuild selected to satisfy ">=net-libs/webkit-gtk-2.1.90:3" has unmet requirements.

- net-libs/webkit-gtk-2.4.8::gentoo USE="X egl geoloc gles2 gstreamer introspection jit libsecret opengl spell webgl (-aqua) -coverage -debug -test -wayland" ABI_X86="64"

  The following REQUIRED_USE flag constraints are unsatisfied:

    webgl? ( exactly-one-of ( gles2 opengl ) )

  The above constraints are a subset of the following complete expression:

    geoloc? ( introspection ) introspection? ( gstreamer ) gles2? ( egl ) webgl? ( exactly-one-of ( gles2 opengl ) ) !webgl? ( at-most-one-of ( gles2 opengl ) ) any-of ( aqua wayland X )

(dependency required by "net-libs/gnome-online-accounts-3.14.3::gentoo" [installed])

(dependency required by "gnome-base/gvfs-1.22.3::gentoo[gnome-online-accounts]" [installed])

(dependency required by "xfce-base/thunar-1.6.3::gentoo[dbus,xfce_plugins_trash]" [installed])

(dependency required by "xfce-base/xfdesktop-4.10.2::gentoo[thunar]" [installed])

(dependency required by "xfce-base/xfce4-meta-4.10::gentoo" [installed])

(dependency required by "@selected" [set])

(dependency required by "@world" [argument])

```

----------

## Yamakuzure

 *alexander_ro wrote:*   

> Doch das geht zumindest mit den OpenSource Treibern. Hier im 10. Posting wird ein Beispiel genannt das habe ich schon mal probiert das funktioniert jetzt bei mir. Ich musste aber noch das USE-Flag gles2 für die Mesa Installation angeben.
> 
> Allerdings habe ich jetzt auf meinem Alien M14 ein Problem mit dem USE gles2. Wenn ich das richtig interpretiere brauchen einige Programme OpenGL aber OpenGL und gles2 lassen sich nicht parallel installieren.
> 
> Der Befehl:
> ...

 Moment, du hat ein Dell AlienWare M14 Gamer Notebook und schacherst um ein paar MB? Krass.

Was die Meldung angeht, die kannst du mit USE="-webgl" beheben. Wofür hast du denn überhaupt irgendein WebKit, wenn du nichts hast um damit arbeitende Anwendungen anzuzeigen? WebKit ist riesig. Egal ob GTK oder QT.

Und wie verwendest du denn XFCE ohne X11?

----------

## alexander_ro

 *Quote:*   

> 
> 
> Moment, du hat ein Dell AlienWare M14 Gamer Notebook und schacherst um ein paar MB? Krass.
> 
> 

 

Ja sowas hab ich und das MB schachern betrifft aber nicht den Alien sondern wie im ersten Posting genannt den eee 901 der auch ohne X11 ist. Auf dem Alien läuft ein ganz normal installierter XFCE. Ich möchte aber das mein selbst geschriebenes Programm auf beiden Rechnern laufen kann. Ich nehme mal an Webkit wird vom Firefox benötigt der ist auf dem Alien installiert.

Danke für Deinen Tipp mit dem -webgl aber bei mir ging das leider nicht. Das einzige das sich ändert ist das vor dem webgl? nun noch ein ! steht.

----------

## Klaus Meier

Firefox braucht kein Webkit. Der hat seine eigene Engine. Webkit wird von Browsern und Desktopkomponenten verwendet, die darauf aufsetzen. Chrome und Chromium z.B., alles von Gnome usw.

----------

## Yamakuzure

 *alexander_ro wrote:*   

>  *Quote:*   
> 
> Moment, du hat ein Dell AlienWare M14 Gamer Notebook und schacherst um ein paar MB? Krass.
> 
>  
> ...

 Ach so! Das hatte ich nicht mehr auf der Pfanne, dann ergibt das ja durchaus einen Sinn.  :Wink: 

----------

## alexander_ro

Lustig da ist ein gnome-online-accounts installiert und der braucht den webkit. Ich brauch den aber gar nicht.

Interpretiere ich das richtig das gnome-online-accounts von dem gvfs benötogt wird?

```

emerge --ask --verbose --depclean gnome-online-accounts

Calculating dependencies... done!

  net-libs/gnome-online-accounts-3.14.3 pulled in by:

    gnome-base/gvfs-1.22.3 requires >=net-libs/gnome-online-accounts-3.7.1

>>> No packages selected for removal by depclean

```

Da sind noch mehr gnome Pakete. Ich hatte den mal kurz installiert und dann wieder entfernt. Scheint so das ich nicht alles erwischt habe beim entfernen.

```

gnome-base/dconf

gnome-base/gnome-keyring

gnome-base/gvfs

gnome-base/libglade

gnome-base/libgnome-keyring

gnome-base/librsvg

gnome-extra/polkit-gnome

net-libs/gnome-online-accounts

x11-libs/gnome-pty-helper

x11-themes/gnome-icon-theme

```

----------

## Klaus Meier

Was hast du denn für ein Profil gewählt? Auf alle Fälle hast du das USE-Flag gnome gesetzt. Das solltest du nicht tun.

----------

## alexander_ro

Nein das USE-Flag habe ich nicht gesetzt. Ich habe da -gnome und -kde gesetzt.

Beim Profil ist 4 gewählt: default/linux/amd64/13.0/desktop/gnome ist jetzt natürlich nicht mehr richtig.

Was sollte ich denn da wählen?

vermutlich 3 default/linux/amd64/13.0/desktop

[Edit]

Nachdem ich das Profil 3 ausgewählt habe und mit "emerge --ask --update --deep --with-bdeps=y --newuse world" das System aktualisiert. Sind bis auf einige Gnompakete die so wie es aussieht von vlc, Firefox und Thunderbird benötigt werden die anderen weg. Auch das mit dem USE-Flag gles2 funktioniert jetzt.

```

gnome-base/dconf

gnome-base/gvfs

gnome-base/libglade

gnome-base/librsvg

gnome-extra/polkit-gnome

x11-libs/gnome-pty-helper

x11-themes/gnome-icon-theme

```

Was sich noch hartnäckig meinen Reparatur versuchen wieder setzt ist:

```

alien alex # emerge --ask --update --deep --with-bdeps=y --newuse world

dev-lang/python:2.7

  (dev-lang/python-2.7.9-r1:2.7/2.7::gentoo, ebuild scheduled for merge) conflicts with

    >=dev-lang/python-2.7.5-r2:2.7[threads,sqlite] required by (www-client/firefox-31.7.0:0/0::gentoo, installed)

                                           ^^^^^^ 

    >=dev-lang/python-2.7.5-r2:2.7[threads,sqlite] required by (mail-client/thunderbird-31.7.0:0/0::gentoo, installed)

                                           ^^^^^^ 

```

Das Markierte sqlite ist installiert: dev-db/sqlite-3.8.10.1

Er gibt ja an >= der Version 2.7.5-r2 und die installierte Version 2.7.9-r1 von dem python Paket ist >=

Kann mir da vielleicht jemand einen Tipp geben was mir der sagen will?

[/Edit]

----------

## Yamakuzure

 *alexander_ro wrote:*   

> Was sich noch hartnäckig meinen Reparatur versuchen wieder setzt ist:
> 
> ```
> 
> alien alex # emerge --ask --update --deep --with-bdeps=y --newuse world
> ...

 Nein, das soll heißen, dass firefox und thunderbird python mit sqlite USE flag haben wollen. Du musst also python neu bauen.

----------

## alexander_ro

Hat geholfen. Ich habe irgendwie Talent dafür die Meldungen falsch zu verstehen ...  :Wink: 

Jetzt geht alles wie es soll mit OpenGL ES ohne X11 auf dem eee 901  und auf dem Alien mit und ohne X11. Danke an alle Helfer ...

----------

