opengl - Linux - relations between graphics drivers and Mesa -


when install nvidia proprietary driver nvidia opengl implementation used (i don't need mesa). opengl implementation can used open source nvidia driver - nouveau ? nouveau provide opengl implementation or has use mesa opengl implementation ? can use nvidia drivers mesa opengl implementation ? possibilities ?

first things first: open source graphics drivers, of them, use mesa front side opengl interface , state tracking.

let's break down: theoretically opengl implementation can directly talk hardware. nvidia , amd proprietary drivers do.

but in open source world code reuse highly favoured. typical open source graphics driver looks this:

user api frontend (opengl + state tracker) → abstraction layer (gallium3d or device specific internal layer) → kernel backend.

the mesa project encompasses whole chain. opengl part of mesa, (the frontend) can attach different abstraction layers (for example software rasterizer, softpipe/llvm example). mesa project umbrella other parts: userland graphics drivers (nouveau, radeon, intel , on), infrastructure allows userspace processes directly talk graphics driver, bypassing display servers (dri) , kernel interface (drm), kernel modules.

a few weeks ago amd released new kernel module (amdgpu) uses drm api, open source , merged linux kernel. new kernel module there used both proprietary amd opengl drivers , open source mesa drivers. amd pushing open source time , logical next step be, amd ditches own opengl frontend in favor of mesa , providing proprietary driver middle end plug mesa.


can use nvidia drivers mesa opengl implementation ?

that depends. if you're doing indirect opengl on x11 in fact can use mesa libgl.so program, talking through x11 server nvidia backend driver. used way libgl.so merely acts glx conduit. works other way round btw.

however since lacks "direct gl context" capabilities you'll not able use opengl features no indirect opcodes have been defined; opengl-3 or later, sadly. if data highly dynamic there significant bottleneck due serializing command stream (theoretically using syscalls vmsplice of overhead alleviated, though).


Comments