[PATCH 1/9] dri2: Fix can_exchange() to allow page-flipping on new servers.
Michel Dänzer
michel at daenzer.net
Mon Feb 20 02:27:04 PST 2012
On Mon, 2012-02-20 at 05:59 +0100, Mario Kleiner wrote:
> On 02/16/2012 11:04 AM, Michel Dänzer wrote:
> > On Don, 2012-02-16 at 00:45 +0100, Mario Kleiner wrote:
> >> can_exchange() fails on at least Xorg 1.12+. This fixes
> >> it in the same way it was fixed in the ati& intel ddx.
> >>
> >> Signed-off-by: Mario Kleiner<mario.kleiner at tuebingen.mpg.de>
> >> ---
> >> src/nouveau_dri2.c | 2 +-
> >> 1 files changed, 1 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
> >> index 3aa5ec5..5b62425 100644
> >> --- a/src/nouveau_dri2.c
> >> +++ b/src/nouveau_dri2.c
> >> @@ -160,7 +160,7 @@ can_exchange(DrawablePtr draw, PixmapPtr dst_pix, PixmapPtr src_pix)
> >> return ((DRI2CanFlip(draw)&& pNv->has_pageflip))&&
> >> dst_pix->drawable.width == src_pix->drawable.width&&
> >> dst_pix->drawable.height == src_pix->drawable.height&&
> >> - dst_pix->drawable.depth == src_pix->drawable.depth&&
> >> + dst_pix->drawable.bitsPerPixel == src_pix->drawable.bitsPerPixel&&
> >> dst_pix->devKind == src_pix->devKind;
> >> }
> >>
> >
> > Actually, it seems like the pixmap depths really should match, otherwise
> > one could end up with the front pixmap depth not matching the window
> > depth. Not sure that's a real problem right now, but it seems wonky at
> > least...
> >
> > Have you investigated why the depths don't match?
>
> Depends on the meaning of "investigated": One of the pixmaps has depth
> 24 bits (the pixmap of the root window) the other 32 bits (as requested
> from the client via DRI2GetBuffersWithFormat for RGBA8 visuals). Both
> have 32 bpp. I checked what the intel and ati ddx do. The ati ddx always
> checked for matching drawable.bitsPerPixel since kms pageflip support
> was implemented. The intel ddx does the same, but the code and comments
> suggests they tried both and checking for matching depths probably
> didn't work:
>
> cd xorg/drivers/xf86-video-intel/
> git log -p e2615cdeef078dbd2e834b68c437f098a92b941d
>
> So everybody does it like this currently, and it seems to work.
Right. I must have been incorrectly thinking of flipping as changing the
window pixmap.
I still have some doubts — e.g. why is an RGBA visual chosen for a
fullscreen window, and does this really have anything to do with changes
in xserver 1.12, or rather in Mesa — but I think the change itself is
okay.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Debian, X and DRI developer
More information about the xorg-devel
mailing list