-
all the functions inside eg libVulcan or libGL, like:
- draw me a line on that surface at cordinates x and y
- draw me a circle
- color that circle red
- …
-
with the X Window System, the X Window Protocoll has messages like:
- darw a circle at x,y
- draw a line at x,y
- you could just send those messages to the Xserver (software) and it would draw that for you
- maybe gui libs like GTK (gui) and Qt (gui) still use those messages, but many applications now use the OpenGL Render Calls and then send the OpenGL Surfaces to the Xserver (software) as a pixbuf to render
- there is the X Protocoll Extension MIT-SHM or XShm to share buffers with the Xserver (software) instead of piping all the pixbuffs over the Socket
-
those functions just forward calls to an eventual driver of the GPU, which knows hot to exactly talk to the gpu through mmap’d registers or PCIe or anything actually
-
Clay (ui lib) gets your ui definition and outputs just a list of Draw Commands