ubuntuusers.de

Was steckt hinter .cache/mesa_shader_cache?

Status: Ungelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

Purpur

Avatar von Purpur

Anmeldungsdatum:
15. Mai 2005

Beiträge: 378

Hallo Forum,

weil ich neugierig bin, schaue ich ab und zu ein wenig auf meinem Rechner herum.
Dabei sind mir im .cache-Verzeichnis folgende Unterverzeichnisse aufgefallen:

.cache/mesa_shader_cache			2.620 Objekte	7,6 MB
.cache/mesa_shader_cache_db			152 Objekte	4,7 MB
.cache/qtshadercache-x86_64-little_endian-lp64	13 Objekte	91,2 KB

Eine Suche im Netz nach den Begriffen "mesa" und "shading" erbringt u.a.:

https://de.wikipedia.org/wiki/Mesa_3D
https://en.wikipedia.org/wiki/Mesa_(computer_graphics)

https://mesa-docs.readthedocs.io/en/latest/shading.html

https://opengl.org/ http://opengl.org/documentation/https://www.khronos.org/opengl/ und https://www.khronos.org/api/index_2017/opengl

Jetzt weiß ich wenigstens, dass das alles mit 2D- und 3D-Grafik zu tun hat.

Aber was genau wird da gecached?
Warum sind das so viele Ordner/Dateien?
Welche Anwendungen sind dafür verantwortlich?

Kann mir das jemand von euch ein wenig aufdröseln?

Danke für eure Zeit & Grüße

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1245

Hallo Purpur,

ich weiß nicht, ob ich dir komplett weiter helfen kann, denn es macht für mich den Eindruck, dass du bereits eine Menge selbst in Erfahrung gebracht hast. Mein Wissen über OpenGL und Mesa ist über 25 Jahre alt.

Damals wollte man 3D Objekte auf einer 2D Oberfläche (Bildschirm) darstellen. Es gab dann teure SGI Röhren-Monitore, die konnten Linien im Vordergrund etwas dicker als die im Hintergrund darstellen, wenn man 3D Modelle (räumliche Netze) visualisieren wollte. Daraus ist dann meines Wissens die OpenGL API Umgebung entstanden.

Je nach verwendeter Grafikkarte existieren geeignete Bibliotheken, die die OpenGL Calls umsetzten und z.B. Schattierungen auf einem in 2D gerenderten 3D Objekt erzeugen. Die so erstellten Texturen werden im Cache abgelegt, damit sie bei Verschiebungen (Translationen) usw nicht neu berechnet werden müssen. Dies scheint der von dir entdeckte "mesa_shader_cache" zu sein, bin mir aber nicht vollständig sicher (da müsste man in den Quelltexten wühlen).

Du kannst ja mal den Cache löschen und eine Applikation, die OpenGL benutzt (z.B. sich drehender Würfel als Screensaver) aufrufen. Die Zeit beim neu Erstellen des Cache sollte dann bei langsamen Rechnern und alter Grafikkarte messbar langsamer sein als bei einem wiederholten Aufruf, der den Cache nutzt.

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 4792

In Wikipedia gibt es einen Artikel dazu, ist etwas microsoftlastig, aber um eine ungefähre Vorstellung davon zu bekommen, wofür die Schattierer da sind, kann man sich das ja mal durchlesen.

Und Cache (Zwischenspeicher) dürfte doch wohl selbstklärend sein.

Bei Benutzung von Wine kann man übrigens auch die Shader in einem Verzeichnis namens "GLCache" ablegen, damit die Hardware nicht alles immer neu berechnen muss, wenn sich die Möglichkeit ergiebt einen bereits berechneten Shader wiederverwenden zu können. Braucht dann einen Eintrag im Starter vom Spiel, etwa so:

__GL_SHADER_DISK_CACHE=1 __GL_SHADER_DISK_CACHE_PATH=$HOME"/Pfad/zum/Verzeichnis/vom/Windows Game mit Leerzeichen"

Purpur

(Themenstarter)
Avatar von Purpur

Anmeldungsdatum:
15. Mai 2005

Beiträge: 378

@ shiro Doch - du konntest mir durchaus weiterhelfen. Ich verstehe nun etwas mehr über die Hintergründe. Danke für diese Hinweise.

@ trollsportverein Auch dein Hinweis hilft meinem Verständnis.

Btw:
Der Mechanismus scheint mir etwas ähnliches zu tun wie manche Navigations-Programme, die mit Online-Karten arbeiten. Sie zwischenspeichern oft kleine Kartenausschnitte (sog. Kacheln), um beim Verschieben der Karte auf dem Monitor nicht immer wieder alles herunterladen zu müssen. Die benötigten Kacheln können dann schnell aus dem Cache geholt werden.

Allerdings:
Ich habe auf meinen Rechner mit 3D eigentlich nichts zu tun. Keine Software installiert, die 3D-Grafiken erzeugt oder darstellt (wie z.B. FreeCAD oder Blender). Auch kein Wine.

Welche Anwendung also könnte für diese Verzeichnisse/Dateien im Cache verantwortlich sein?

(Und ja - ich weiß, dass ich den Cache gefahrlos löschen kann. 😇 )

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 4792

Also ich hätte da den Gnome in Verdacht. Transparenzeffekte im Terminal zum Beispiel, falls das dem Gnome nicht weg gezüchtet wurde. Ich benutze KDE, da gibt es Transparenzeffekte und Schatteneffekte. Jede Menge Spielerei und Augenschmaus. 😎

Vielteicht ist es aber auch der Firefox. Gibt ja auch animierte Firefox-Themes, ich benutze zur Zeit selbst eines. Da hat sich der Firefox um eine animiert drehende Weltkugel geschlungen. ☺

Antworten |