David Dawes is maybe the most active XFree86 developer and he is also the lead founder of the project. He works for Tungsten Graphics, which is the main company working on the XFree, DRI and Mesa codebases today. We are happy to host an interview with David, discussing the present and future of XFree86 project. Update: Still confused how a VSYNCed desktop look like? Read here.
Permalink for comment
To read all comments associated with this story, please click here.
As an ex demo coder from many years ago too, I thought I'd clarify the pros and cons of VSYNC.
As you may already know, CRT's redraw themselves between 60-100+ times per second. A "VSYNC write" is made immediately after the CRT gun hits the bottom of the screen, just before the next screen update. Writing to the screen at this very moment reduces the chance that the CRT gun will be in the middle of updating the screen when you issue a screen write.
This method of updating does come at a cost, in that you're creating a bottleneck by forcing screen updates to wait until the gun hits the bottom of the screen. In the old days, this was a way for a hacker to slow things down to guarantee that an animation would proceed at roughly the same rate among different machines.
On my P4 1.8ghz, 512mb 800mhz RDRAM machine with an nVidia Geforce III ti200, here is how I'd describe screen updates when I'm moving around a window wildly:
Screen updates, when they're made, happen instantly. There, however, appears to be a threshold of movement before the screen is updated. So, if I swing my window fast to the right, it only updates dirty rectangles when the window moves every 10 pixels or so. So, from time to time I'll get garbage in newly exposed areas until the dirty rectangles are cleaned up.
In addition, in KDE, I notice that dirty rectangles are cleaned up on a per widget basis. In other words, the menu bar will clean itself up separately from the icon toolbar, or the title, etc. This will create severe performance problems because instead of 1 large memory move to the screen you're dealing with as many as 12 or more smaller moves. Even though these 12 smaller moves are more efficient on a pixel count vs. pixel pixel count basis, an accelerated graphics card will perform better with 1 big screen update.
As an ex demo coder from many years ago too, I thought I'd clarify the pros and cons of VSYNC.
As you may already know, CRT's redraw themselves between 60-100+ times per second. A "VSYNC write" is made immediately after the CRT gun hits the bottom of the screen, just before the next screen update. Writing to the screen at this very moment reduces the chance that the CRT gun will be in the middle of updating the screen when you issue a screen write.
This method of updating does come at a cost, in that you're creating a bottleneck by forcing screen updates to wait until the gun hits the bottom of the screen. In the old days, this was a way for a hacker to slow things down to guarantee that an animation would proceed at roughly the same rate among different machines.
On my P4 1.8ghz, 512mb 800mhz RDRAM machine with an nVidia Geforce III ti200, here is how I'd describe screen updates when I'm moving around a window wildly:
Screen updates, when they're made, happen instantly. There, however, appears to be a threshold of movement before the screen is updated. So, if I swing my window fast to the right, it only updates dirty rectangles when the window moves every 10 pixels or so. So, from time to time I'll get garbage in newly exposed areas until the dirty rectangles are cleaned up.
In addition, in KDE, I notice that dirty rectangles are cleaned up on a per widget basis. In other words, the menu bar will clean itself up separately from the icon toolbar, or the title, etc. This will create severe performance problems because instead of 1 large memory move to the screen you're dealing with as many as 12 or more smaller moves. Even though these 12 smaller moves are more efficient on a pixel count vs. pixel pixel count basis, an accelerated graphics card will perform better with 1 big screen update.
Just some thoughts.