r600: increase performance for DRI PRIME offloading if 2nd GPU is Evergreen+

Graphics / Mesa 3D Graphics Library / Mesa - Mario Kleiner [gmail.com] - 26 August 2016 12:57 UTC

This is a direct port of Marek Olšáks patch "radeonsi: increase performance for DRI PRIME offloading if 2nd GPU is CIK or VI" to r600.

It uses SDMA for the detiling blit from renderoffload VRAM to GTT, as SDMA is much faster for tiled->linear blits from
VRAM to GTT.

Testing on a dual Radeon HD-5770 setup reduced the time for the render offload gpu to get its rendering into system RAM from approximately 16 msecs for simple rendering at 1920x1080 pixel 32 bpp to 5 msecs, a > 3x speedup!

This was measured using ftrace to trace the time the radeon kms driver waited on the dmabuf fence of the renderoffload gpu to complete.

All in all this brought the time for a flip down from 20 msecs to 9 msecs, so the prime setup can display at full 60 fps instead of barely 30 fps vsync'ed.

The current r600 implementation supports SDMA on Evergreen and later, but not R600/R700 due to some bugs apparently present in their SDMA implementation.

2cc880c r600: increase performance for DRI PRIME offloading if 2nd GPU is Evergreen+
src/gallium/drivers/r600/r600_blit.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Upstream: cgit.freedesktop.org


  • Share