xf86-video-intel: 6 commits - src/sna/sna_dri.c src/sna/sna_glyphs.c src/sna/sna_io.c src/sna/sna_render_inline.h src/sna/sna_trapezoids.c uxa/uxa-accel.c uxa/uxa.c uxa/uxa-glyphs.c uxa/uxa-priv.h uxa/uxa-render.c

Chris Wilson ickle at kemper.freedesktop.org
Wed Dec 28 15:59:58 PST 2011


 src/sna/sna_dri.c           |   11 +-
 src/sna/sna_glyphs.c        |    3 
 src/sna/sna_io.c            |    3 
 src/sna/sna_render_inline.h |   26 ++----
 src/sna/sna_trapezoids.c    |  167 ++++++++++++++++++++++++++++++++------------
 uxa/uxa-accel.c             |   12 +--
 uxa/uxa-glyphs.c            |    1 
 uxa/uxa-priv.h              |    3 
 uxa/uxa-render.c            |   12 +--
 uxa/uxa.c                   |   19 -----
 10 files changed, 153 insertions(+), 104 deletions(-)

New commits:
commit 58cee9d0def82d19f03c840325b6e84c20e77ace
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Dec 28 22:52:58 2011 +0000

    sna/dri: Update set_bo() for change of bo ownership transfer during page-flip
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index d0e7ae7..9a703c2 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -338,16 +338,15 @@ damage_all:
 
 static void set_bo(PixmapPtr pixmap, struct kgem_bo *bo)
 {
-	struct sna_pixmap *priv;
+	struct sna *sna = to_sna_from_pixmap(pixmap);
+	struct sna_pixmap *priv = sna_pixmap(pixmap);
 
-	priv = sna_pixmap(pixmap);
 	sna_damage_all(&priv->gpu_damage,
 		       pixmap->drawable.width,
 		       pixmap->drawable.height);
 	sna_damage_destroy(&priv->cpu_damage);
 
-	assert(priv->gpu_bo->refcnt > 1);
-	priv->gpu_bo->refcnt--;
+	kgem_bo_destroy(&sna->kgem, priv->gpu_bo);
 	priv->gpu_bo = ref(bo);
 }
 
@@ -725,11 +724,11 @@ sna_dri_page_flip(struct sna *sna, struct sna_dri_frame_event *info)
 	if (info->count == 0)
 		return FALSE;
 
-	set_bo(sna->front, bo);
-
 	info->old_front.name = info->front->name;
 	info->old_front.bo = get_private(info->front)->bo;
 
+	set_bo(sna->front, bo);
+
 	info->front->name = info->back->name;
 	get_private(info->front)->bo = bo;
 	return TRUE;
commit f9ee02be269d1658d3a8a5166e9bd2a49ab6dea0
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Dec 28 22:52:44 2011 +0000

    sna: Fix debug message for read-boxes
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_io.c b/src/sna/sna_io.c
index 0386cef..6cdc3fa 100644
--- a/src/sna/sna_io.c
+++ b/src/sna/sna_io.c
@@ -106,9 +106,10 @@ void sna_read_boxes(struct sna *sna,
 		    (box[n].x2 + src_dx) * dst->drawable.bitsPerPixel/8 > src_bo->pitch ||
 		    (box[n].y2 + src_dy) * src_bo->pitch > src_bo->size)
 		{
-			FatalError("source out-of-bounds box[%d]=(%d, %d), (%d, %d) + (%d, %d), pitch=%d, size=%d\n",
+			FatalError("source out-of-bounds box[%d]=(%d, %d), (%d, %d) + (%d, %d), pitch=%d, size=%d\n", n,
 				   box[n].x1, box[n].y1,
 				   box[n].x2, box[n].y2,
+				   src_dx, src_dy,
 				   src_bo->pitch, src_bo->size);
 		}
 	}
commit 698bd43e0f7a59bcce6601b0c96df85935e54bb3
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Dec 28 21:45:12 2011 +0000

    sna: Do not create glyph caches if the gpu is wedged
    
    As these will only be created in normal memory and never used.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index 405af87..95836fe 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -152,6 +152,9 @@ static Bool realize_glyph_caches(struct sna *sna)
 
 	DBG(("%s\n", __FUNCTION__));
 
+	if (sna->kgem.wedged || !sna->have_render)
+		return TRUE;
+
 	for (i = 0; i < ARRAY_SIZE(formats); i++) {
 		struct sna_glyph_cache *cache = &sna->render.glyph[i];
 		PixmapPtr pixmap;
commit 78425a15597079c0549de0fa1bbbdbebcf9eaf28
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Dec 28 15:26:14 2011 +0000

    sna: Refactor common code for testing gpu busyness of a pixmap
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_render_inline.h b/src/sna/sna_render_inline.h
index 58eced0..06d1ba3 100644
--- a/src/sna/sna_render_inline.h
+++ b/src/sna/sna_render_inline.h
@@ -70,14 +70,14 @@ static inline Bool
 is_gpu(DrawablePtr drawable)
 {
 	struct sna_pixmap *priv = sna_pixmap_from_drawable(drawable);
-	return priv && priv->gpu_damage;
-}
 
-static inline Bool
-is_busy_cpu(DrawablePtr drawable)
-{
-	struct sna_pixmap *priv = sna_pixmap_from_drawable(drawable);
-	return priv && priv->cpu_bo && kgem_bo_is_busy(priv->cpu_bo);
+	if (priv == NULL)
+		return false;
+
+	if (priv->gpu_damage)
+		return true;
+
+	return priv->cpu_bo && kgem_bo_is_busy(priv->cpu_bo);
 }
 
 static inline Bool
@@ -88,17 +88,9 @@ is_cpu(DrawablePtr drawable)
 }
 
 static inline Bool
-is_dirty_gpu(DrawablePtr drawable)
-{
-	struct sna_pixmap *priv = sna_pixmap_from_drawable(drawable);
-	return priv && priv->gpu_bo && priv->gpu_damage;
-}
-
-static inline Bool
 too_small(DrawablePtr drawable)
 {
-	return ((uint32_t)drawable->width * drawable->height * drawable->bitsPerPixel <= 8*4096) &&
-		!(is_dirty_gpu(drawable) || is_busy_cpu(drawable));
+	return ((uint32_t)drawable->width * drawable->height * drawable->bitsPerPixel <= 8*4096) && !is_gpu(drawable);
 }
 
 static inline Bool
@@ -106,7 +98,7 @@ picture_is_gpu(PicturePtr picture)
 {
 	if (!picture || !picture->pDrawable)
 		return FALSE;
-	return is_gpu(picture->pDrawable) || is_busy_cpu(picture->pDrawable);
+	return is_gpu(picture->pDrawable);
 }
 
 static inline Bool sna_blt_compare_depth(DrawablePtr src, DrawablePtr dst)
commit 9105b7e03ab7e3602c7200ebdc44e89f873afe1f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Dec 28 13:46:18 2011 +0000

    sna: Perform clip mask compositing inplace
    
    Avoid the extra composite-in pass for simple clipmask construction.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_trapezoids.c b/src/sna/sna_trapezoids.c
index 81d4312..9222f2f 100644
--- a/src/sna/sna_trapezoids.c
+++ b/src/sna/sna_trapezoids.c
@@ -2999,17 +2999,17 @@ struct inplace {
 };
 
 static void
-tor_blt_inplace(struct sna *sna,
-		struct sna_composite_spans_op *op,
-		pixman_region16_t *clip,
-		const BoxRec *box,
-		int coverage)
+tor_blt_src(struct sna *sna,
+	    struct sna_composite_spans_op *op,
+	    pixman_region16_t *clip,
+	    const BoxRec *box,
+	    int coverage)
 {
 	struct inplace *in = (struct inplace *)op;
 	uint8_t *ptr = in->ptr;
 	int h, w;
 
-	coverage = (int)coverage * in->opacity / FAST_SAMPLES_XY;
+	coverage = coverage * in->opacity / FAST_SAMPLES_XY;
 
 	ptr += box->y1 * in->stride + box->x1;
 
@@ -3029,11 +3029,11 @@ tor_blt_inplace(struct sna *sna,
 }
 
 static void
-tor_blt_inplace_clipped(struct sna *sna,
-			struct sna_composite_spans_op *op,
-			pixman_region16_t *clip,
-			const BoxRec *box,
-			int coverage)
+tor_blt_src_clipped(struct sna *sna,
+		    struct sna_composite_spans_op *op,
+		    pixman_region16_t *clip,
+		    const BoxRec *box,
+		    int coverage)
 {
 	pixman_region16_t region;
 	int n;
@@ -3042,33 +3042,100 @@ tor_blt_inplace_clipped(struct sna *sna,
 	RegionIntersect(&region, &region, clip);
 	n = REGION_NUM_RECTS(&region);
 	box = REGION_RECTS(&region);
-	while (n--){
-		tor_blt_inplace(sna, op, NULL,  box, coverage);
-		box++;
+	while (n--)
+		tor_blt_src(sna, op, NULL, box++, coverage);
+	pixman_region_fini(&region);
+}
+
+static void
+tor_blt_src_mono(struct sna *sna,
+		 struct sna_composite_spans_op *op,
+		 pixman_region16_t *clip,
+		 const BoxRec *box,
+		 int coverage)
+{
+	tor_blt_src(sna, op, clip, box,
+		    coverage < FAST_SAMPLES_XY/2 ? 0 : FAST_SAMPLES_XY);
+}
+
+static void
+tor_blt_src_clipped_mono(struct sna *sna,
+			 struct sna_composite_spans_op *op,
+			 pixman_region16_t *clip,
+			 const BoxRec *box,
+			 int coverage)
+{
+	tor_blt_src_clipped(sna, op, clip, box,
+			    coverage < FAST_SAMPLES_XY/2 ? 0 : FAST_SAMPLES_XY);
+}
+
+static void
+tor_blt_in(struct sna *sna,
+	   struct sna_composite_spans_op *op,
+	   pixman_region16_t *clip,
+	   const BoxRec *box,
+	   int coverage)
+{
+	struct inplace *in = (struct inplace *)op;
+	uint8_t *ptr = in->ptr;
+	int h, w, i;
+
+	coverage = coverage * in->opacity / FAST_SAMPLES_XY;
+	if (coverage == 0) {
+		tor_blt_src(sna, op, clip, box, 0);
+		return;
 	}
+
+	ptr += box->y1 * in->stride + box->x1;
+
+	h = box->y2 - box->y1;
+	w = box->x2 - box->x1;
+	do {
+		for (i = 0; i < w; i++)
+			ptr[i] = (ptr[i] * coverage) >> 8;
+		ptr += in->stride;
+	} while (--h);
+}
+
+static void
+tor_blt_in_clipped(struct sna *sna,
+		   struct sna_composite_spans_op *op,
+		   pixman_region16_t *clip,
+		   const BoxRec *box,
+		   int coverage)
+{
+	pixman_region16_t region;
+	int n;
+
+	pixman_region_init_rects(&region, box, 1);
+	RegionIntersect(&region, &region, clip);
+	n = REGION_NUM_RECTS(&region);
+	box = REGION_RECTS(&region);
+	while (n--)
+		tor_blt_in(sna, op, NULL, box++, coverage);
 	pixman_region_fini(&region);
 }
 
 static void
-tor_blt_inplace_mono(struct sna *sna,
-		     struct sna_composite_spans_op *op,
-		     pixman_region16_t *clip,
-		     const BoxRec *box,
-		     int coverage)
+tor_blt_in_mono(struct sna *sna,
+		struct sna_composite_spans_op *op,
+		pixman_region16_t *clip,
+		const BoxRec *box,
+		int coverage)
 {
-	tor_blt_inplace(sna, op, clip, box,
-			coverage < FAST_SAMPLES_XY/2 ? 0 : FAST_SAMPLES_XY);
+	tor_blt_in(sna, op, clip, box,
+		   coverage < FAST_SAMPLES_XY/2 ? 0 : FAST_SAMPLES_XY);
 }
 
 static void
-tor_blt_inplace_clipped_mono(struct sna *sna,
-			     struct sna_composite_spans_op *op,
-			     pixman_region16_t *clip,
-			     const BoxRec *box,
-			     int coverage)
+tor_blt_in_clipped_mono(struct sna *sna,
+			struct sna_composite_spans_op *op,
+			pixman_region16_t *clip,
+			const BoxRec *box,
+			int coverage)
 {
-	tor_blt_inplace_clipped(sna, op, clip, box,
-				coverage < FAST_SAMPLES_XY/2 ? 0 : FAST_SAMPLES_XY);
+	tor_blt_in_clipped(sna, op, clip, box,
+			   coverage < FAST_SAMPLES_XY/2 ? 0 : FAST_SAMPLES_XY);
 }
 
 static bool
@@ -3100,7 +3167,11 @@ trapezoid_span_inplace(CARD8 op, PicturePtr src, PicturePtr dst,
 		return false;
 	}
 
-	if (dst->format != PICT_a8 || op != PictOpSrc ||
+	DBG(("%s: format=%x, op=%d, color=%x\n",
+	     __FUNCTION__, dst->format, op, color));
+
+	if (dst->format != PICT_a8 ||
+	    !(op == PictOpSrc || op == PictOpIn) ||
 	    !sna_picture_is_solid(src, &color)) {
 		DBG(("%s: fallback -- can not perform operation in place\n",
 		     __FUNCTION__));
@@ -3163,16 +3234,30 @@ trapezoid_span_inplace(CARD8 op, PicturePtr src, PicturePtr dst,
 		tor_add_edge(&tor, &t, &t.right, -1);
 	}
 
-	if (dst->pCompositeClip->data) {
-		if (maskFormat ? maskFormat->depth < 8 : dst->polyEdge == PolyEdgeSharp)
-			span = tor_blt_inplace_clipped_mono;
-		else
-			span = tor_blt_inplace_clipped;
+	if (op == PictOpSrc) {
+		if (dst->pCompositeClip->data) {
+			if (maskFormat ? maskFormat->depth < 8 : dst->polyEdge == PolyEdgeSharp)
+				span = tor_blt_src_clipped_mono;
+			else
+				span = tor_blt_src_clipped;
+		} else {
+			if (maskFormat ? maskFormat->depth < 8 : dst->polyEdge == PolyEdgeSharp)
+				span = tor_blt_src_mono;
+			else
+				span = tor_blt_src;
+		}
 	} else {
-		if (maskFormat ? maskFormat->depth < 8 : dst->polyEdge == PolyEdgeSharp)
-			span = tor_blt_inplace_mono;
-		else
-			span = tor_blt_inplace;
+		if (dst->pCompositeClip->data) {
+			if (maskFormat ? maskFormat->depth < 8 : dst->polyEdge == PolyEdgeSharp)
+				span = tor_blt_in_clipped_mono;
+			else
+				span = tor_blt_in_clipped;
+		} else {
+			if (maskFormat ? maskFormat->depth < 8 : dst->polyEdge == PolyEdgeSharp)
+				span = tor_blt_in_mono;
+			else
+				span = tor_blt_in;
+		}
 	}
 
 	region.data = NULL;
@@ -3379,12 +3464,6 @@ sna_composite_trapezoids(CARD8 op,
 		goto fallback;
 	}
 
-	if (!is_gpu(dst->pDrawable)) {
-		if (trapezoid_span_inplace(op, src, dst, maskFormat,
-					   xSrc, ySrc, ntrap, traps))
-			return;
-	}
-
 	if (too_small(dst->pDrawable) && !picture_is_gpu(src)) {
 		DBG(("%s: fallback -- dst is too small, %dx%d\n",
 		     __FUNCTION__,
commit a5583165da0d2ae5eb1e5a2e11ee6e245d4b5aa4
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Dec 28 13:57:09 2011 +0000

    uxa: Remove concept of global FB ownership made obsolete by GEM and KMS
    
    With the introduction of GEM, we can continue to submit batch buffers
    irrespective of ownership of the console, so do so.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c
index 00948b7..53ff24c 100644
--- a/uxa/uxa-accel.c
+++ b/uxa/uxa-accel.c
@@ -65,7 +65,7 @@ uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n,
 		return;
 	}
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback)
+	if (uxa_screen->force_fallback)
 		goto fallback;
 
 	if (pGC->fillStyle != FillSolid)
@@ -133,7 +133,7 @@ uxa_do_put_image(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
 	if (format != ZPixmap || bpp < 8)
 		return FALSE;
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback)
+	if (uxa_screen->force_fallback)
 		return FALSE;
 
 	if (!uxa_screen->info->put_image)
@@ -392,7 +392,7 @@ uxa_copy_n_to_n(DrawablePtr pSrcDrawable,
 		return;
 	}
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback)
+	if (uxa_screen->force_fallback)
 		goto fallback;
 
 	pSrcPixmap = uxa_get_drawable_pixmap(pSrcDrawable);
@@ -541,7 +541,7 @@ uxa_copy_area(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC,
 {
 	uxa_screen_t *uxa_screen = uxa_get_screen(pDstDrawable->pScreen);
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback) {
+	if (uxa_screen->force_fallback) {
 		return uxa_check_copy_area(pSrcDrawable, pDstDrawable, pGC,
 					   srcx, srcy, width, height, dstx,
 					   dsty);
@@ -742,7 +742,7 @@ uxa_poly_fill_rect(DrawablePtr pDrawable,
 	if (!REGION_NUM_RECTS(pReg))
 		goto out;
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback)
+	if (uxa_screen->force_fallback)
 		goto fallback;
 
 	pPixmap = uxa_get_offscreen_pixmap (pDrawable, &xoff, &yoff);
@@ -1108,7 +1108,7 @@ uxa_get_image(DrawablePtr pDrawable, int x, int y, int w, int h,
 		return;
 	}
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback)
+	if (uxa_screen->force_fallback)
 		goto fallback;
 
 	pPix = uxa_get_offscreen_pixmap(pDrawable, &xoff, &yoff);
diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c
index 8e412fd..6172f2f 100644
--- a/uxa/uxa-glyphs.c
+++ b/uxa/uxa-glyphs.c
@@ -1085,7 +1085,6 @@ uxa_glyphs(CARD8 op,
 	}
 
 	if (!uxa_screen->info->prepare_composite ||
-	    uxa_screen->swappedOut ||
 	    uxa_screen->force_fallback ||
 	    !uxa_drawable_is_offscreen(pDst->pDrawable) ||
 	    pDst->alphaMap || pSrc->alphaMap ||
diff --git a/uxa/uxa-priv.h b/uxa/uxa-priv.h
index d6d857f..0de45f5 100644
--- a/uxa/uxa-priv.h
+++ b/uxa/uxa-priv.h
@@ -134,9 +134,6 @@ typedef struct {
 
 	Bool force_fallback;
 	Bool fallback_debug;
-	Bool swappedOut;
-	unsigned disableFbCount;
-	unsigned offScreenCounter;
 
 	uxa_glyph_cache_t glyphCaches[UXA_NUM_GLYPH_CACHE_FORMATS];
 	Bool glyph_cache_initialized;
diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c
index 878b028..877b286 100644
--- a/uxa/uxa-render.c
+++ b/uxa/uxa-render.c
@@ -196,10 +196,8 @@ uxa_print_composite_fallback(const char *func, CARD8 op,
 	       "  op   %s, \n"
 	       "  src  %s, \n"
 	       "  mask %s, \n"
-	       "  dst  %s, \n"
-	       "  screen %s\n",
-	       func, op_to_string (op), srcdesc, maskdesc, dstdesc,
-	       uxa_screen->swappedOut ? "swapped out" : "normal");
+	       "  dst  %s, \n",
+	       func, op_to_string (op), srcdesc, maskdesc, dstdesc);
 }
 
 Bool uxa_op_reads_destination(CARD8 op)
@@ -1581,7 +1579,7 @@ uxa_composite(CARD8 op,
 		return;
 	}
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback)
+	if (uxa_screen->force_fallback)
 		goto fallback;
 
 	if (!uxa_drawable_is_offscreen(pDst->pDrawable))
@@ -1939,7 +1937,7 @@ uxa_trapezoids(CARD8 op, PicturePtr src, PicturePtr dst,
 		return;
 	}
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback) {
+	if (uxa_screen->force_fallback) {
 fallback:
 		uxa_check_trapezoids(op, src, dst, maskFormat, xSrc, ySrc, ntrap, traps);
 		return;
@@ -2168,7 +2166,7 @@ uxa_triangles(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
 		return;
 	}
 
-	if (uxa_screen->swappedOut || uxa_screen->force_fallback) {
+	if (uxa_screen->force_fallback) {
 fallback:
 		uxa_check_triangles(op, pSrc, pDst, maskFormat,
 				    xSrc, ySrc, ntri, tris);
diff --git a/uxa/uxa.c b/uxa/uxa.c
index 5b3d709..d912b03 100644
--- a/uxa/uxa.c
+++ b/uxa/uxa.c
@@ -333,21 +333,6 @@ static RegionPtr uxa_bitmap_to_region(PixmapPtr pPix)
 	return ret;
 }
 
-static void uxa_xorg_enable_disable_fb_access(int index, Bool enable)
-{
-	ScreenPtr screen = screenInfo.screens[index];
-	uxa_screen_t *uxa_screen = uxa_get_screen(screen);
-
-	if (!enable && uxa_screen->disableFbCount++ == 0)
-		uxa_screen->swappedOut = TRUE;
-
-	if (enable && --uxa_screen->disableFbCount == 0)
-		uxa_screen->swappedOut = FALSE;
-
-	if (uxa_screen->SavedEnableDisableFBAccess)
-		uxa_screen->SavedEnableDisableFBAccess(index, enable);
-}
-
 void uxa_set_fallback_debug(ScreenPtr screen, Bool enable)
 {
 	uxa_screen_t *uxa_screen = uxa_get_screen(screen);
@@ -453,7 +438,6 @@ uxa_driver_t *uxa_driver_alloc(void)
 Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver)
 {
 	uxa_screen_t *uxa_screen;
-	ScrnInfoPtr scrn = xf86Screens[screen->myNum];
 
 	if (!uxa_driver)
 		return FALSE;
@@ -533,9 +517,6 @@ Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver)
 	uxa_screen->SavedBitmapToRegion = screen->BitmapToRegion;
 	screen->BitmapToRegion = uxa_bitmap_to_region;
 
-	uxa_screen->SavedEnableDisableFBAccess = scrn->EnableDisableFBAccess;
-	scrn->EnableDisableFBAccess = uxa_xorg_enable_disable_fb_access;
-
 #ifdef RENDER
 	{
 		PictureScreenPtr ps = GetPictureScreenIfSet(screen);


More information about the xorg-commit mailing list