glx: Fix config chooser logic for 'mask' matching
authorKristian Høgsberg <krh@bitplanet.net>
Fri, 9 Apr 2010 02:09:11 +0000 (22:09 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 9 Apr 2010 19:15:28 +0000 (15:15 -0400)
commitedb5253dfa0751e451dca7c9a494be4609390545
treeedc90e5e4898645023b023f843ee37429f668db9
parentba81b0743efd978509b1931d7b4b93f37e8aeb5e
glx: Fix config chooser logic for 'mask' matching

When matching attributes using the 'mask' matching criteria, the spec
says that

  "Only GLXFBConfigs for which the set bits of attribute include all
   the bits that are set in the requested value are
   considered. (Additional bits might be set in the attribute)."

The current test returns true if the two bit masks have bits in
common, specifically it matches even if the requested value has bits
set that are not set in the fbconfig attribute.  For example, an
application asking for

  GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT | GLX_PBUFFER_BIT,

as glxpbdemo does, will match fbconfigs that don't support pbuffer
rendering, as long as they support pixmap rendering.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/glx/glxcmds.c