/media/sda-magnetic/david/Dok-15-2023-11-27/informatik/betriebssysteme/apt-und-gpg/begriffe/begriffe20240415.txt


Graphik


Wayland
explicit sync
Wayland benutzt NVIDIAS proprietären Treiber
Ein Merge
Ein Merge mit explicit sync

2024 ist das Jahr von wayland

Ablösung von X11

Display Flackern
fallen gelassene Frames
Artefakte, Freeze

technik namens explicit sync

Wayland-Protokoll

ins Wayland Protokoll integrieren

NVIDIA Treiber 555

Commits für die Integration in Compositoren

Compositoren wie Mutter und KWin

Kompatibilitätsschicht Xwayland

KDE Plasma

Rendern

https://zamundaaa.github.io/wayland/2024/04/05/explicit-sync.html

KDE Entwickler Xaver Hugl

Zusammenspiel von CPU, GPU und anfordernden Applikation

Synchronisation

Wenn eine Anwendung das Rendern  von graphischen Inhalts anfordert, schickt die CPU diesen Auftrag an die GPU
Diese rendert nicht jeden Auftrag seperat, sondern sammelt diese und führt sie zu einem ihr genehmen Zeitpunkt aus
Würde jede Rendering Anforderung sofort ausgeführt würden CPU und GPU die meiste Zeit aufeinander warten

implizit und explicit

1.) implicit sync
2.) explicit sync

Bisheriges Modell: implicit sync ohne Beteiligung der Anwendung

explicit Sync: Anwendung beteiligt

Wenn nicht beteiligt: Kann versehentlich und unwissentlich mit GPU-Befehle synchronisiert


https://de.wikipedia.org/wiki/Grafikprozessor

https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-ref

https://stackoverflow.com/questions/56564582/what-does-a-program-the-assembly-that-uses-a-gpu-even-look-like



https://llvm.org/docs/AMDGPUInstructionSyntax.html

CUDA!!!!

Merge-Request

Xwayland
Mutter
KWin
Mesa



https://de.wikipedia.org/wiki/Wayland_(Display-Server-Protokoll)
Wayland ist ein Display Server Protokoll

Display Server Protokoll: Fenstersystem

Liste von Fenstersystemen:
    GEM
    PC/GEOS
    Fresco/Berlin
    FBUI
    Qt Extended
    Quartz Compositor
    X Window System
    Wayland
    Mir
    Windows Presentation Foundation
    XSynth
    Twin

Compositions-Manager
    kompmgr
    xcompmgr
    compiz
    kwin
    metacity

Compiz, KWin und Metacity auch Fenstermanager.

Metacity war der Standard-Fenstermanager der Desktop-Umgebung Gnome.


KWin ist der Fenstermanager und auch Wayland Compositor der Desktopumgebung von KDE. Er ist seit K Desktop Environment 2.0 Teil der Desktopumgebung und hat den älteren KWM abgelöst. KWin wird im Zusammenhang mit der KDE Software Compilation weiterentwickelt.[2]


Kernel
    Wayland Compositor: weston, mutter, kwin, clayland, enlightment
    Mesa 3D: EGL OpenGL|ES OpenVG, Graphics device drivers: libGL mesa DRI

        KDE Plasma
        Qt 5.3: libwayland-client

        Inkscape: libwayland-client

        Clutter 1.17.4: libwayland-client

Schnittstellen:
    KMS
    DRM libDRM


Das Wayland-Display-Server-Protokoll definiert, dass Clients via EGL direkt in den Framebuffer zeichnen.


Der Framebuffer oder Bildspeicher (englisch frame – Einzelbild, buffer – Zwischenspeicher) ist Teil des Grafikspeichers von Computern und entspricht einer digitalen Kopie des Monitorbildes. Das heißt, jedem Bildschirmpixel kann genau ein bestimmter Bereich des Framebuffers zugewiesen werden, der dessen digital übersetzten Farbwert enthält. Seit den 1990er-Jahren befindet sich der Framebuffer vorwiegend auf der Grafikkarte.


Die minimal benötigte Größe des Framebuffers ist abhängig von zwei Faktoren: der verwendeten Farbtiefe (genauer: Pixelformat) und der verwendeten Bildauflösung.


Farbtiefe

Die Farbtiefe des Framebuffers definiert die Maximalzahl der gleichzeitig auf dem Bildschirm angezeigten Farben oder Farbnuancen. Im Bereich der IBM-PC-kompatiblen Computer waren und sind die in der folgenden Aufstellung angegebenen Größen üblich. Die angegebenen Pixelformate geben an, wie viele Bits pro Pixel auf die einzelnen Farbkanäle (rot, grün, blau, Alphakanal) vergeben werden – bei Farbmodi, die indizierte Farben (Paletten) benutzen, fehlt diese Angabe, weil sie keinen Sinn ergibt.

    1 Bit pro Pixel, zwei Farben (normalerweise hell und dunkel bei einem Monochrom-Monitor)
        MDA
    2 Bit pro Pixel, vier Farben
        CGA: Palette mit 4 Farben aus 16 möglichen
    4 Bit pro Pixel, 16 Farben
        EGA: Palette mit 16 Farben aus 64 möglichen
    8 Bit pro Pixel, 256 Farben
        VGA: Palette mit 256 Farben aus 262144 möglichen
    15 Bit pro Pixel, 32768 Farben
        Real Color: Pixelformat 5-5-5, d. h. 5 Bit pro Farbkanal (also 32 Intensitätsabstufungen pro Kanal)
    16 Bit pro Pixel, 65536 Farben
        High Color: Pixelformat 5-6-5, d. h. 5 Bit für Rot und Blau (32 Intensitätsabstufungen) und 6 Bit für Grün (64 Intensitätsabstufungen)
        alternativ auch 4-4-4-4, d. h. 4 Bit pro Farbkanal (16 Intensitätsabstufungen), wobei die letzten vier Bits entweder ungenutzt sind oder als Alphakanal verwendet werden (s. 32 Bit True Color)
    24 Bit pro Pixel: 16777216 Farben
        True Color: Pixelformat 8-8-8, d. h. 8 Bit pro Farbkanal (256 Intensitätsabstufungen)
    32 Bit pro Pixel
        True Color: Pixelformat 8-8-8-8, d. h. 8 Bit pro Farbkanal (256 Intensitätsabstufungen)
        Die gegenüber 24 Bit True Color hinzugekommenen 8 Bit werden normalerweise nicht genutzt; auf Rechnern mit 32-Bit-Architektur ist die Verarbeitung von 32-Bit-Werten aber effizienter als die von 24-Bit-Werten, weil dies genau der Wortbreite des Prozessors entspricht, weswegen trotz des 33 % höheren Speicherbedarfs True-Color-Framebuffer meistens 32 Bit Farbtiefe benutzen.


ypische Framebuffer-Auflösung Auflösung
(in Pixel) 	Pixel-
anzahl 	Seiten-
verhältnis
320 × 200 	64.000 	16:10
640 × 200 	128.000 	32:10⁠a
640 × 480 	307.200 	4:3
800 × 600 	480.000 	4:3
1024 × 768 	786.432 	4:3
1280 × 1024 	1.310.720 	5:4
1440 × 900 	1.296.000 	16:10
1680 × 1050 	1.764.000 	16:10
1600 × 1200 	1.920.000 	4:3
1920 × 1200 	2.304.000 	16:10
2048 × 1536 	3.145.728 	4:3
2560 × 1600 	4.096.000 	16:10

Wayland-Clients schreiben mittels EGL unmittelbar in den Bildspeicher; der Compositor entscheidet über die Ausgabe.

Linux-Kernel
    kms
    drm

wayland compositor -> (ioctl) -> kms
wayland compositor -> (EGL) -> opengles DRI driver
Wayland application -> Wayland Compositor
Wayland application -> (direct rendering, EGL ) -> OpenGLES DRI Driver
OpenGL Application -> OpenGL -> OpenGLES DRI Driver

CUDA (früher auch Compute Unified Device Architecture genannt)

1.) Display controller: MDA CGA: Bildschirm Adapter: ISA-Karte: Video Display Controller: Berechnungen


Display controller
→ Hauptartikel: Video Display Controller

Zur Anbindung eines Bildschirms an einen Computer – etwa über MDA, CGA etc. – benötigt man einen sogenannten Bildschirm-Adapter (analog Netzwerk-Adapter). Der Chip auf der (z. B.) ISA-Karte ist ein vergleichsweise simpler Video Display Controller. Etwaige Berechnungen zur Bildsynthese erfolgen auf der CPU, der Display Controller verpackt diesen Datenstrom lediglich in ein entsprechendes Signal (CGA, EGA, …) für den Bildschirm. Die Karte enthält zusätzlich ein wenig Speicher, den sogenannten Bildschirmpuffer, engl. display buffer.

RAMDAC
→ Hauptartikel: RAMDAC

Der RAMDAC ist zuständig für die Umwandlung von digitalen Daten, welche im Videospeicher/Bildschirmpuffer vorliegen, in ein analoges Bildsignal.

GCA

Das englisch sogenannte Graphics and Compute Array (kurz GCA) oder auch die „3D-Engine“ (aus dem englischen ‚3D engine‘ entlehnt) können auch für Grafik-Berechnungen ausgelegt sein. Das Array besteht zudem aus den sogenannten Shader-Prozessoren, beinhaltet aber auch den Geometry-Prozessor (siehe auch Geometry-Shader).

Shader („Schattierer“ von englisch shade für Schatten) sind Hardware- oder Software-Module, die bestimmte Rendering-Effekte bei der 3D-Computergrafik implementieren.


Bildsynthese oder Rendern (von englisch (to) render, deutsch etwas erbringen, herausgeben, leisten) bezeichnet in der Computergrafik die Erzeugung eines Bildes aus Rohdaten. Rohdaten können geometrische Beschreibungen im 2D- oder 3D-Raum (auch Szene genannt), HTML, SVG etc. sein.

Beim Rendern müssen üblicherweise folgende Aufgaben gelöst werden:

    die Ermittlung der vom virtuellen Betrachter aus sichtbaren Objekte (Verdeckungsberechnung)
    die Simulation des Aussehens von Oberflächen, beeinflusst durch deren Materialeigenschaften (Shading)
    die Berechnung der Lichtverteilung innerhalb der Szene, die sich unter anderem durch die indirekte Beleuchtung zwischen Körpern äußert.

Das Sichtbarkeitsproblem ist beim Rendern in der Computergrafik die Fragestellung, welche Teile von Oberflächen in einer 3D-Szene bei der Projektion auf die zweidimensionale Anzeigefläche sichtbar sind. Als Verdeckungsberechnung oder Sichtbarkeitsentscheid wird dementsprechend ein Vorgehen bezeichnet, mit dem nicht sichtbare Oberflächen erkannt und aussortiert werden und so das Sichtbarkeitsproblem gelöst wird. Das Sichtbarkeitsproblem war eines der ersten wichtigen Probleme der Computergrafik.

Die Verdeckungsberechnung ist zum korrekten Rendern einer 3D-Szene notwendig, weil Oberflächen, die für den Betrachter nicht sichtbar sind, auch nicht dargestellt werden sollten. Viele Verfahren beschleunigen zusätzlich das Rendern, weil nicht sichtbare Oberflächen von der weiteren Verarbeitung durch die Grafikpipeline ausgeschlossen werden können.

Shading oder Schattierung[1] ist ein Begriff aus der 3D-Computergrafik, der im weiten Sinn die Simulation der Oberflächeneigenschaften von Objekten bezeichnet.[2] Im Speziellen bezeichnet Shading die Anwendung eines Interpolationsverfahrens, mit dem der Normalenvektor auf beliebigen Punkten eines Polygonnetzes berechnet wird. Interpolative Shading-Techniken können dazu verwendet werden, um Oberflächen „glatter“ aussehen zu lassen.

Verarbeitungskette

    CPU sendet Steuerbefehle und Geometrie-Daten an die Grafikkarte.
    Im Vertex-Shader werden die Eckpunkte der Geometrie transformiert.
    Im Tessellation-Shader (genauer: Tessellation-Control-Shader und Tessellation-Evaluation-Shader) können die Primitive (z. B. Dreiecke) weiter unterteilt werden.
    Ist ein Geometry-Shader auf dem Grafikchip vorhanden und aktiv, durchlaufen die Geometriedaten nun diesen, hierbei werden weitere Veränderungen an der Szene vorgenommen.
    Nun wird das Primitiv rasterisiert, wobei einzelne Fragmente erstellt werden. Die nur pro Eckpunkt (Vertex) vorliegende Informationen werden hierbei über die Dreiecksfläche interpoliert.
    Im Fragment-Shader (Pixel-Shader) gibt es arithmetische Rechenwerke (Shader Units) und Textur-Einheiten (Texture Mapping Units, TMUs).
    Nachdem die Fragmentberechnung abgeschlossen ist, wird der Test auf Sichtbarkeit (Z-Test) ausgeführt. Bei Sichtbarkeit findet ein Schreibvorgang in den Framebuffer statt. Dieser Schritt kann unter bestimmten Umständen bereits direkt nach der Rasterisierung vorgenommen werden (Early Z-Test).


Graphics and Compute Array (kurz GCA)

Shader werden in speziell dafür vorgesehenen Sprachen geschrieben (in den Anfängen: Assemblersprache, heute: Cg, GLSL, HLSL) un