diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sna/kgem.c | 2 | ||||
-rw-r--r-- | src/sna/sna_accel.c | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 2dff2ed1..cfa46cf1 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -2365,7 +2365,7 @@ unsigned kgem_can_create_2d(struct kgem *kgem, uint32_t pitch, size; unsigned flags = 0; - if (depth < 8 || kgem->wedged) + if (depth < 8) return 0; if (width > MAXSHORT || height > MAXSHORT) diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 2769d4b8..a1798a5e 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -730,6 +730,14 @@ static PixmapPtr sna_create_pixmap(ScreenPtr screen, } assert(width && height); + if (wedged(sna)) { + if (usage == SNA_CREATE_FB) { + flags = KGEM_CAN_CREATE_GPU; + goto force_create; + } + goto fallback; + } + flags = kgem_can_create_2d(&sna->kgem, width, height, depth); if (flags == 0) { DBG(("%s: can not use GPU, just creating shadow\n", @@ -758,6 +766,7 @@ static PixmapPtr sna_create_pixmap(ScreenPtr screen, if (usage == CREATE_PIXMAP_USAGE_GLYPH_PICTURE) goto fallback; +force_create: pad = PixmapBytePad(width, depth); if (pad * height <= 4096) { DBG(("%s: small buffer [%d], attaching to shadow pixmap\n", |