From ca9d9c02a260bf7930e04bf64e93cc051893c04e Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 28 Jul 2012 23:08:07 +0100 Subject: sna: Prefer not to create a GPU bo without RENDER acceleration Unless that bo happens to be used on a render chain to the scanout. Signed-off-by: Chris Wilson --- src/sna/sna.h | 5 +++++ src/sna/sna_accel.c | 3 +-- src/sna/sna_glyphs.c | 6 +++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/sna/sna.h b/src/sna/sna.h index 0db6861c..b8099c94 100644 --- a/src/sna/sna.h +++ b/src/sna/sna.h @@ -558,6 +558,11 @@ static inline bool wedged(struct sna *sna) return unlikely(sna->kgem.wedged); } +static inline bool can_render(struct sna *sna) +{ + return likely(!sna->kgem.wedged && sna->have_render); +} + static inline uint32_t pixmap_size(PixmapPtr pixmap) { return (pixmap->drawable.height - 1) * pixmap->devKind + diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 1b8c7c67..f5cfd29d 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -931,7 +931,7 @@ static PixmapPtr sna_create_pixmap(ScreenPtr screen, goto fallback; } - if (wedged(sna)) + if (!can_render(sna)) flags = 0; if (usage == CREATE_PIXMAP_USAGE_SCRATCH) { @@ -957,7 +957,6 @@ static PixmapPtr sna_create_pixmap(ScreenPtr screen, if (usage == CREATE_PIXMAP_USAGE_BACKING_PIXMAP) usage = 0; -force_create: pad = PixmapBytePad(width, depth); if (pad * height <= 4096) { DBG(("%s: small buffer [%d], attaching to shadow pixmap\n", diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c index 918b51c7..ccf64976 100644 --- a/src/sna/sna_glyphs.c +++ b/src/sna/sna_glyphs.c @@ -188,7 +188,7 @@ bool sna_glyphs_create(struct sna *sna) if (sna->render.white_image == NULL) goto bail; - if (sna->kgem.wedged || !sna->have_render) + if (!can_render(sna)) return true; for (i = 0; i < ARRAY_SIZE(formats); i++) { @@ -1675,10 +1675,10 @@ sna_glyphs(CARD8 op, if (REGION_NUM_RECTS(dst->pCompositeClip) == 0) return; - if (FALLBACK || !sna->have_render) + if (FALLBACK) goto fallback; - if (wedged(sna)) { + if (!can_render(sna)) { DBG(("%s: wedged\n", __FUNCTION__)); goto fallback; } -- cgit v1.2.3