[PATCH] Don't set TILE_SPLIT flags if surface.tile_split == 0.
michel at daenzer.net
Sun Jun 21 23:48:59 PDT 2015
On 22.06.2015 07:09, Mario Kleiner wrote:
> On pre-Evergreen hw, libdrm's r6_surface_best() helper
> for the surface managers radeon_surface_best() routine
> is a no-op and therefore doesn't assign any tile_split
> settings to created surfaces, so it leaves
> surface.tile_split on its "undefined" value of 0.
> Mesa's DRI3/Present backend creates DRI3 Pixmaps via
> the DRIImage extension and the radeon gallium driver
> implementation of that extension uses the libdrm
> surface manager for backing bo creation and treats
> an undefined surface.tile_split==0, as returned by
> the surface manager for pre-evergreen, as a signal
> to not assign any tile_split flags to the DRI3 Pixmaps
> The ddx also uses libdrm surface manager to create the
> x-screen pixmap, but so far treated the returned undefined
> surface.tile_split==0 by mapping it to eg_tile_split()'s
> default tile_split flags, which are different from Mesa's
> tiling flags for DRI3 pixmaps. Under DRI3/Present this
> causes a mismatch of src pixmap and destination root
> pixmaps tiling flags and thereby prevents page flipping
> for pixmap presents.
> Change the ddx code to treat surface.tile_split==0 the
> same way as the radeon gallium driver to avoid mismatched
> tiling flags and thereby allow DRI3/Present page-flip to
> work on pre-Evergreen hw.
> Tested on RV730 and Evergreen "Juniper".
> Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com>
Reviewed and pushed, thanks!
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the xorg-driver-ati