summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@freedesktop.org>2009-07-31 14:14:21 -0700
committerJeremy Huddleston <jeremyhu@freedesktop.org>2009-07-31 15:34:03 -0700
commitda0a2747803dbecb1308181176a784e14cf02809 (patch)
tree2e2de77de2fbf62608808e578299d737d22add0f
parent70ac671af2f092471022590cb7a19ef9155c51b4 (diff)
XQuartz: Cleanup the bitmask setting for GLX visuals.
(cherry picked from commit d32c3df258e748958ef997c675dc4fae118c0d7b)
-rw-r--r--hw/xquartz/GL/visualConfigs.c38
1 files changed, 18 insertions, 20 deletions
diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index 64c82919c..46addaf8a 100644
--- a/hw/xquartz/GL/visualConfigs.c
+++ b/hw/xquartz/GL/visualConfigs.c
@@ -56,6 +56,8 @@
#include "capabilities.h"
#include "visualConfigs.h"
+#define MASK(l,h) (((1 << (1 + h - l)) - 1) << l)
+
/* Based originally on code from indirect.c which was based on code from i830_dri.c. */
__GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) {
int numConfigs = 0;
@@ -180,33 +182,29 @@ __GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
}
// Color
- c->redBits = conf->color_buffers[color].r;
- c->greenBits = conf->color_buffers[color].g;
+ c->rgbBits = 0;
+
c->blueBits = conf->color_buffers[color].b;
+ c->blueMask = MASK(c->rgbBits, c->rgbBits + c->blueBits - 1);
+ c->rgbBits += c->blueBits;
+
+ c->greenBits = conf->color_buffers[color].g;
+ c->greenMask = MASK(c->rgbBits, c->rgbBits + c->greenBits - 1);
+ c->rgbBits += c->greenBits;
+
+ c->redBits = conf->color_buffers[color].r;
+ c->redMask = MASK(c->rgbBits, c->rgbBits + c->redBits - 1);
+ c->rgbBits += c->redBits;
if(GLCAPS_COLOR_BUF_INVALID_VALUE != conf->color_buffers[color].a) {
c->alphaBits = conf->color_buffers[color].a;
+ c->alphaMask = MASK(c->rgbBits, c->rgbBits + c->alphaBits - 1);
+ c->rgbBits += c->alphaBits;
} else {
c->alphaBits = 0;
+ c->alphaMask = 0;
}
-
- c->rgbBits = c->redBits + c->blueBits +
- c->blueBits + c->alphaBits;
-
- /*
- * I'm uncertain about these masks.
- * I don't think we actually care what the values are in our
- * libGL, so it doesn't seem to make a difference.
- *
- * These need to match dfb in xprScreen.c or we'll have a default
- * visual without a corresponding GLX visual. This causes
- * http://xquartz.macosforge.org/trac/ticket/287
- */
- c->redMask = 0xff0000;
- c->greenMask = 0x00ff00;
- c->blueMask = 0x0000ff;
- c->alphaMask = 0;
-
+
// Accumulation Buffers
if(conf->total_accum_buffers > 0) {
c->accumRedBits = conf->accum_buffers[accum].r;