diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2014-04-10 11:43:04 +0900 |
---|---|---|
committer | Michel Dänzer <michel@daenzer.net> | 2014-04-14 17:58:45 +0900 |
commit | 409786a8f780d78a83bf0bddea5d37117ff6fa39 (patch) | |
tree | 3a690895304c2810776a9b529a0dfa2bb1402afd /src | |
parent | aecf1c4e5f4718adcfb85836830d065d3f4f97a5 (diff) |
glamor: Fix test for creating shared pixmaps
The pixmap usage hint is not a bitmask in general. The test for
CREATE_PIXMAP_USAGE_SHARED was incorrectly triggering for a glamor internal
usage hint being added in the xserver tree.
Tested-by: Ed Tomlinson <edtoml@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/radeon.h | 7 | ||||
-rw-r--r-- | src/radeon_glamor.c | 14 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/radeon.h b/src/radeon.h index f364b676..136a430b 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -794,6 +794,13 @@ enum { RADEON_CREATE_PIXMAP_SZBUFFER = 0x80000000, /* for eg */ }; +#define RADEON_CREATE_PIXMAP_TILING_FLAGS \ + (RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE | \ + RADEON_CREATE_PIXMAP_TILING_MACRO | \ + RADEON_CREATE_PIXMAP_TILING_MICRO | \ + RADEON_CREATE_PIXMAP_DEPTH | \ + RADEON_CREATE_PIXMAP_SZBUFFER) + /* Compute log base 2 of val. */ static __inline__ int diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c index 7f1247c9..4aea51d4 100644 --- a/src/radeon_glamor.c +++ b/src/radeon_glamor.c @@ -172,12 +172,14 @@ Bool radeon_glamor_pixmap_is_offscreen(PixmapPtr pixmap) return priv && priv->bo; } -#ifdef CREATE_PIXMAP_USAGE_SHARED -#define RADEON_CREATE_PIXMAP_SHARED (CREATE_PIXMAP_USAGE_SHARED | RADEON_CREATE_PIXMAP_DRI2) -#else -#define RADEON_CREATE_PIXMAP_SHARED RADEON_CREATE_PIXMAP_DRI2 +#ifndef CREATE_PIXMAP_USAGE_SHARED +#define CREATE_PIXMAP_USAGE_SHARED RADEON_CREATE_PIXMAP_DRI2 #endif +#define RADEON_CREATE_PIXMAP_SHARED(usage) \ + (((usage) & ~RADEON_CREATE_PIXMAP_TILING_FLAGS) == RADEON_CREATE_PIXMAP_DRI2 || \ + (usage) == CREATE_PIXMAP_USAGE_SHARED) + static PixmapPtr radeon_glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, unsigned usage) @@ -186,7 +188,7 @@ radeon_glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, struct radeon_pixmap *priv; PixmapPtr pixmap, new_pixmap = NULL; - if (!(usage & RADEON_CREATE_PIXMAP_SHARED)) { + if (!RADEON_CREATE_PIXMAP_SHARED(usage)) { pixmap = glamor_create_pixmap(screen, w, h, depth, usage); if (pixmap) return pixmap; @@ -229,7 +231,7 @@ radeon_glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, return pixmap; fallback_glamor: - if (usage & RADEON_CREATE_PIXMAP_SHARED) { + if (RADEON_CREATE_PIXMAP_SHARED(usage)) { /* XXX need further work to handle the DRI2 failure case. * Glamor don't know how to handle a BO only pixmap. Put * a warning indicator here. |