On 27/02/2024 13:03, Enrico Weigelt, metux IT consult wrote:

I'm confused: what exactly are you reading back ?

To my understanding, the client renders into some buffer and at some
point tells the Xserver to copy that buffer (or region of it) into the
window. I'm not deep into DRI/GLX, but I'd assume it doens't always
need to compose the whole buffer / window area.


That's not the whole picture, unfortunately.

To start with, what the client wants to draw (CopyArea/Present) is not the same thing as what it has actually modified. It might not have modified anything and only wants to copy from an off-screen Pixmap to a window because of an Expose event.

But the more important part is what happens when the server would like to write to the buffer.

E.g., "draw a line from 5,5 to 200,200". The server currently has no idea if the client has rendered anything to the buffer. So it first has to read back the 5,5 to 200,200 rectangle. Then draw the line. Then write back the same rectangle.

Only then can we be sure the client has seen our new line, and that we didn't use a stale copy of the Pixmap data and reverted any other changes the client did by itself.

Regards
--
Pierre Ossman           Software Development
Cendio AB               https://cendio.com
Teknikringen 8          https://twitter.com/ThinLinc
583 30 Linköping        https://facebook.com/ThinLinc
Phone: +46-13-214600

A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?

Reply via email to