What is indirect rendering and what sort of implications does it have on graphics performance?
Also, is it a Linux-specific term or can it be used in the context of other operating systems?
Indirect rendering is when a remote application is rendered on the local computer. It transports the graphics data over the X11 protocol. How it performs depends both on the network connection to transport the data and how good your local gfx card is.
It's applicable on any system with a gfx card and an running X-Server (windows or linux)
Indirect rendering basically means that the entire rendering pipeline runs through GLX/X11. It is a trade-off that usually results in more resource consumption as well as greater latency and occasionally results in lower rendering speed
Simplified for illustration purposes I'll describe it here.
Application --> LibGL --> Driver --> Hardware
Application --> LibGL --> Xorg --> Driver --> Hardware
The advantages of Indirect rendering is it reduces some driver related bugs, doesn't require user level access to the video card (security feature), and it allows rendering over a network.
The disadvantages of Indirect rendering is it has a longer pipeline lantency and it's pipeline uses more resources (particularly memory bandwidth and processor time).
Indirect rendering usually results in lower performance, particularly on applications that have high processor overhead, or are designed to rely on a low-latency rendering pipeline.
In some rare cases direct rendering can be faster in applications that poorly handle the short queue buffer in the direct rendering pipeline. Much like when a print buffer would speeding printing, this can be due to bugs or limitations in applications that rely on the rate at which outgoing asynchronous render calls can be streamed out.
Indirect rendering as opposed to Direct rendering means your using some sort of software rendering instead of using your graphics card GPU. The results are poor 3D rendering.
Indirect rendering means no hardware graphics acceleration.