Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The driver is currently set up (via EXA) to handle all pixmap allocations itself, and it passes them to GEM. However, running non-3D apps tends to generate a large number of small pixmap allocations that we're never going to pass to GL, and it is expensive and pointless to send them through GEM in this case. To solve this, fbturbo and my earlier armsoc work for r3p2 strips out EXA, falling back to X's fast default implementation of pixmap allocation in the fb layer, then we would migrate such pixmaps to GEM the first time DRI2 interaction is requested. However, especially with growing interest in using the CPU cache for a future performance increase, EXA's PrepareAccess and FinishAccess hooks are looking more and more useful. In order to use them, we also have to take over allocation of all pixmaps, but we can do it better: we can use usage_hint to determine which pixmaps are backing buffers for windows (hence likely candidates for DRI2 interaction) and which aren't. The only remaining complication is to detect which pixmap is going to be used for scanout, this is a bit hacky but it seems to always be the first pixmap created after ScreenInit. Performance differences (at 1080p): | BEFORE BEFORE | AFTER AFTER | RAW X MUTTER | RAW X MUTTER ----------------+-------------------+---------------- glxgears (fps) | 148 140 | 148 137 es2gears (fps) | 313 290 | 313 295 glmark-es2 | 91 68 | 91 73 gtkperf (time) | 10.7 13.6 | 7.3 9.7
- Loading branch information
Showing
5 changed files
with
167 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters