xf86-video-intel: 4 commits - src/i915_render.c src/intel_uxa.c test/dri2.c uxa/uxa-accel.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Aug 16 13:02:46 PDT 2012


 src/i915_render.c |    8 --
 src/intel_uxa.c   |    3 
 test/dri2.c       |    4 -
 uxa/uxa-accel.c   |  163 +++++++++++++++++++++++++++++-------------------------
 4 files changed, 96 insertions(+), 82 deletions(-)

New commits:
commit b8bc56c12c6fdc559354fbbf96b6e043a491aa8f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Aug 16 21:00:57 2012 +0100

    uxa/gen3: Simply simple fill shader generation
    
    Suggested-by: Zdenek Kabelac <zkabelac at redhat.com>
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/i915_render.c b/src/i915_render.c
index acbd82c..6d3400e 100644
--- a/src/i915_render.c
+++ b/src/i915_render.c
@@ -779,12 +779,8 @@ i915_composite_emit_shader(intel_screen_private *intel, CARD8 op)
 		else
 			i915_fs_texldp(src_reg, FS_S0, FS_T0);
 
-		if (src_reg != FS_OC) {
-			if (dest_is_alpha)
-				i915_fs_mov(FS_OC, i915_fs_operand(src_reg, W, W, W, W));
-			else
-				i915_fs_mov(FS_OC, i915_fs_operand_reg(src_reg));
-		}
+		if (src_reg != FS_OC)
+			i915_fs_mov(FS_OC, i915_fs_operand(src_reg, W, W, W, W));
 	} else {
 		i915_fs_dcl(FS_T1);
 		i915_fs_dcl(FS_S1);
commit 182581edde356a21a0681de526f83884e1a0de5d
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Aug 16 20:59:09 2012 +0100

    uxa/glamor: Check for failed prepares
    
    Reported-by: Zdenek Kabelac <zkabelac at redhat.com>
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c
index 4e5bac3..76425fe 100644
--- a/uxa/uxa-accel.c
+++ b/uxa/uxa-accel.c
@@ -52,12 +52,13 @@ uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n,
 	int off_x, off_y;
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_fill_spans_nf(pDrawable,
-					  pGC, n, ppt, pwidth, fSorted);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_fill_spans_nf(pDrawable,
+						  pGC, n, ppt, pwidth, fSorted);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 
 		if (!ok)
 			goto fallback;
@@ -213,14 +214,14 @@ uxa_put_image(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
 	uxa_screen_t *uxa_screen = uxa_get_screen(pDrawable->pScreen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
-
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_put_image_nf(pDrawable,
-					 pGC, depth, x, y, w, h,
-					 leftPad, format, bits);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		int ok = 0;
 
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_put_image_nf(pDrawable,
+						 pGC, depth, x, y, w, h,
+						 leftPad, format, bits);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 		if (!ok)
 			goto fallback;
 
@@ -375,16 +376,18 @@ uxa_copy_n_to_n(DrawablePtr pSrcDrawable,
 	PixmapPtr pSrcPixmap, pDstPixmap;
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
-
-		uxa_prepare_access(pSrcDrawable, UXA_GLAMOR_ACCESS_RO);
-		uxa_prepare_access(pDstDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_copy_n_to_n_nf(pSrcDrawable, pDstDrawable,
-					   pGC, pbox, nbox, dx, dy,
-					   reverse, upsidedown, bitplane,
-					   closure);
-		uxa_finish_access(pDstDrawable, UXA_GLAMOR_ACCESS_RW);
-		uxa_finish_access(pSrcDrawable, UXA_GLAMOR_ACCESS_RO);
+		int ok = 0;
+
+		if (uxa_prepare_access(pSrcDrawable, UXA_GLAMOR_ACCESS_RO)) {
+			if (uxa_prepare_access(pDstDrawable, UXA_GLAMOR_ACCESS_RW)) {
+				ok = glamor_copy_n_to_n_nf(pSrcDrawable, pDstDrawable,
+							   pGC, pbox, nbox, dx, dy,
+							   reverse, upsidedown, bitplane,
+							   closure);
+				uxa_finish_access(pDstDrawable, UXA_GLAMOR_ACCESS_RW);
+			}
+			uxa_finish_access(pSrcDrawable, UXA_GLAMOR_ACCESS_RO);
+		}
 
 		if (!ok)
 			goto fallback;
@@ -561,11 +564,12 @@ uxa_poly_point(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
 	uxa_screen_t *uxa_screen = uxa_get_screen(pDrawable->pScreen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_poly_point_nf(pDrawable, pGC, mode, npt, ppt);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_poly_point_nf(pDrawable, pGC, mode, npt, ppt);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 
 		if (ok)
 			return;
@@ -611,11 +615,12 @@ uxa_poly_lines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
 	uxa_screen_t *uxa_screen = uxa_get_screen(pDrawable->pScreen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_poly_lines_nf(pDrawable, pGC, mode, npt, ppt);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_poly_lines_nf(pDrawable, pGC, mode, npt, ppt);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 
 		if (ok)
 			return;
@@ -684,11 +689,12 @@ uxa_poly_segment(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pSeg)
 	uxa_screen_t *uxa_screen = uxa_get_screen(pDrawable->pScreen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_poly_segment_nf(pDrawable, pGC, nseg, pSeg);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_poly_segment_nf(pDrawable, pGC, nseg, pSeg);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 
 		if (ok)
 			return;
@@ -758,11 +764,12 @@ uxa_poly_fill_rect(DrawablePtr pDrawable,
 	int n;
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_poly_fill_rect_nf(pDrawable, pGC, nrect, prect);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_poly_fill_rect_nf(pDrawable, pGC, nrect, prect);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 
 		if (!ok)
 			uxa_check_poly_fill_rect(pDrawable, pGC, nrect, prect);
@@ -883,12 +890,13 @@ uxa_get_spans(DrawablePtr pDrawable,
 	uxa_screen_t *uxa_screen = uxa_get_screen(screen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_get_spans_nf(pDrawable, wMax, ppt,
-					 pwidth, nspans, pdstStart);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_get_spans_nf(pDrawable, wMax, ppt,
+						 pwidth, nspans, pdstStart);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 
 		if (!ok)
 			goto fallback;
@@ -908,12 +916,13 @@ uxa_set_spans(DrawablePtr pDrawable, GCPtr gc, char *src,
 	uxa_screen_t *uxa_screen = uxa_get_screen(screen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_set_spans_nf(pDrawable, gc, src,
-					 points, widths, n, sorted);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_set_spans_nf(pDrawable, gc, src,
+						 points, widths, n, sorted);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 
 		if (!ok)
 			goto fallback;
@@ -934,15 +943,17 @@ uxa_copy_plane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
 	uxa_screen_t *uxa_screen = uxa_get_screen(screen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 		RegionPtr region;
 
-		uxa_prepare_access(pDst, UXA_GLAMOR_ACCESS_RW);
-		uxa_prepare_access(pSrc, UXA_GLAMOR_ACCESS_RO);
-		ok = glamor_copy_plane_nf(pSrc, pDst, pGC, srcx, srcy, w, h,
-					   dstx, dsty, bitPlane, &region);
-		uxa_finish_access(pSrc, UXA_GLAMOR_ACCESS_RO);
-		uxa_finish_access(pDst, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDst, UXA_GLAMOR_ACCESS_RW)) {
+			if (uxa_prepare_access(pSrc, UXA_GLAMOR_ACCESS_RO)) {
+				ok = glamor_copy_plane_nf(pSrc, pDst, pGC, srcx, srcy, w, h,
+							  dstx, dsty, bitPlane, &region);
+				uxa_finish_access(pSrc, UXA_GLAMOR_ACCESS_RO);
+			}
+			uxa_finish_access(pDst, UXA_GLAMOR_ACCESS_RW);
+		}
 		if (!ok)
 			goto fallback;
 		return region;
@@ -962,11 +973,12 @@ uxa_image_glyph_blt(DrawablePtr pDrawable, GCPtr pGC,
 	uxa_screen_t *uxa_screen = uxa_get_screen(screen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_image_glyph_blt_nf(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_image_glyph_blt_nf(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 		if (!ok)
 			goto fallback;
 		return;
@@ -985,11 +997,12 @@ uxa_poly_glyph_blt(DrawablePtr pDrawable, GCPtr pGC,
 	uxa_screen_t *uxa_screen = uxa_get_screen(screen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_poly_glyph_blt_nf(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_poly_glyph_blt_nf(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 		if (!ok)
 			goto fallback;
 		return;
@@ -1007,13 +1020,15 @@ uxa_push_pixels(GCPtr pGC, PixmapPtr pBitmap,
 	uxa_screen_t *uxa_screen = uxa_get_screen(screen);
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		int ok;
+		int ok = 0;
 
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		uxa_prepare_access(&pBitmap->drawable, UXA_GLAMOR_ACCESS_RO);
-		ok = glamor_push_pixels_nf(pGC, pBitmap, pDrawable, w, h, x, y);
-		uxa_finish_access(&pBitmap->drawable, UXA_GLAMOR_ACCESS_RO);
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			if (uxa_prepare_access(&pBitmap->drawable, UXA_GLAMOR_ACCESS_RO)) {
+				ok = glamor_push_pixels_nf(pGC, pBitmap, pDrawable, w, h, x, y);
+				uxa_finish_access(&pBitmap->drawable, UXA_GLAMOR_ACCESS_RO);
+			}
+			uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 		if (!ok)
 			goto fallback;
 		return;
@@ -1231,10 +1246,12 @@ uxa_get_image(DrawablePtr pDrawable, int x, int y, int w, int h,
 	Box.y2 = Box.y1 + h;
 
 	if (uxa_screen->info->flags & UXA_USE_GLAMOR) {
-		uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
-		ok = glamor_get_image_nf(pDrawable, x, y, w, h,
-					format, planeMask, d);
-		uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		ok = 0;
+		if (uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW)) {
+			ok = glamor_get_image_nf(pDrawable, x, y, w, h,
+						 format, planeMask, d);
+			uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW);
+		}
 
 		if (!ok)
 			goto fallback;
commit c289b607d1526d8d3625fa84c093552a9f3ea168
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Aug 16 20:54:40 2012 +0100

    uxa: Check for failed mmapping of the scanout
    
    Reported-by: Zdenek Kabelac <zkabelac at redhat.com>
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_uxa.c b/src/intel_uxa.c
index 5aad062..3745ff0 100644
--- a/src/intel_uxa.c
+++ b/src/intel_uxa.c
@@ -1145,7 +1145,8 @@ Bool intel_uxa_create_screen_resources(ScreenPtr screen)
 	if (!uxa_resources_init(screen))
 		return FALSE;
 
-	drm_intel_gem_bo_map_gtt(bo);
+	if (drm_intel_gem_bo_map_gtt(bo))
+		return FALSE;
 
 	pixmap = screen->GetScreenPixmap(screen);
 	intel_set_pixmap_bo(pixmap, bo);
commit 32ec8b979bc8cf7d8ce351ca752b806d42bc1c0f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Aug 16 20:53:08 2012 +0100

    test/dri2: Discard error returns from _XReply
    
    This is only test code, so keep the static analyser quiet
    
    Reported-by: Zdenek Kabelac <zkabelac at redhat.com>
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/test/dri2.c b/test/dri2.c
index 86a0a74..0e2003c 100644
--- a/test/dri2.c
+++ b/test/dri2.c
@@ -475,7 +475,7 @@ DRI2CopyRegion(Display * dpy, XID drawable, XserverRegion region,
    req->dest = dest;
    req->src = src;
 
-   _XReply(dpy, (xReply *) & rep, 0, xFalse);
+   (void) _XReply(dpy, (xReply *) & rep, 0, xFalse);
 
    UnlockDisplay(dpy);
    SyncHandle();
@@ -517,7 +517,7 @@ uint64_t DRI2SwapBuffers(Display *dpy, XID drawable,
     req->drawable = drawable;
     load_swap_req(req, target_msc, divisor, remainder);
 
-    _XReply(dpy, (xReply *)&rep, 0, xFalse);
+    (void) _XReply(dpy, (xReply *)&rep, 0, xFalse);
 
     count = vals_to_card64(rep.swap_lo, rep.swap_hi);
 


More information about the xorg-commit mailing list