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 > bo. > > 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 <[email protected]>
Reviewed and pushed, thanks! -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
