Module Name:    xsrc
Committed By:   macallan
Date:           Sat Dec 10 07:23:38 UTC 2016

Modified Files:
        xsrc/external/mit/xf86-video-glint/dist/src: pm2_exa.c pm3_exa.c

Log Message:
make sure to hand EXA only whole scanlines of off-screen memory
( wait a minute, that sounds familiar... )


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
    xsrc/external/mit/xf86-video-glint/dist/src/pm2_exa.c \
    xsrc/external/mit/xf86-video-glint/dist/src/pm3_exa.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xf86-video-glint/dist/src/pm2_exa.c
diff -u xsrc/external/mit/xf86-video-glint/dist/src/pm2_exa.c:1.2 xsrc/external/mit/xf86-video-glint/dist/src/pm2_exa.c:1.3
--- xsrc/external/mit/xf86-video-glint/dist/src/pm2_exa.c:1.2	Sat Dec 10 07:11:58 2016
+++ xsrc/external/mit/xf86-video-glint/dist/src/pm2_exa.c	Sat Dec 10 07:23:38 2016
@@ -264,7 +264,7 @@ Pm2InitEXA(ScreenPtr pScreen)
 	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
 	GLINTPtr pGlint = GLINTPTR(pScrn);
 	ExaDriverPtr pExa;
-	int stride;
+	int stride, lines;
 
 	ENTER;
 
@@ -279,7 +279,8 @@ Pm2InitEXA(ScreenPtr pScreen)
 
 	pExa->memoryBase = pGlint->FbBase;
 	stride = pScrn->displayWidth * (pScrn->bitsPerPixel >> 3);
-	pExa->memorySize = min(pGlint->FbMapSize, 2047 * stride);
+	lines = min(pGlint->FbMapSize / stride, 2047);
+	pExa->memorySize = lines * stride;
 	DPRINTF(X_ERROR, "stride: %d\n", stride);
 	DPRINTF(X_ERROR, "pprod: %08x\n", pGlint->pprod);
 	pExa->offScreenBase = stride * pScrn->virtualY;
@@ -288,9 +289,7 @@ Pm2InitEXA(ScreenPtr pScreen)
 	pExa->pixmapOffsetAlign = stride;
 	pExa->pixmapPitchAlign = stride;
 
-	pExa->flags = EXA_OFFSCREEN_PIXMAPS
-		      /* | EXA_SUPPORTS_OFFSCREEN_OVERLAPS |*/
-		      | EXA_MIXED_PIXMAPS;
+	pExa->flags = EXA_OFFSCREEN_PIXMAPS;
 
 	pExa->maxX = 2048;
 	pExa->maxY = 2048;
Index: xsrc/external/mit/xf86-video-glint/dist/src/pm3_exa.c
diff -u xsrc/external/mit/xf86-video-glint/dist/src/pm3_exa.c:1.2 xsrc/external/mit/xf86-video-glint/dist/src/pm3_exa.c:1.3
--- xsrc/external/mit/xf86-video-glint/dist/src/pm3_exa.c:1.2	Fri Dec  2 23:16:07 2016
+++ xsrc/external/mit/xf86-video-glint/dist/src/pm3_exa.c	Sat Dec 10 07:23:38 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: pm3_exa.c,v 1.2 2016/12/02 23:16:07 macallan Exp $ */
+/* $NetBSD: pm3_exa.c,v 1.3 2016/12/10 07:23:38 macallan Exp $ */
 
 /*
  * Copyright (c) 2016 Michael Lorenz
@@ -308,7 +308,7 @@ Pm3InitEXA(ScreenPtr pScreen)
 	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
 	GLINTPtr pGlint = GLINTPTR(pScrn);
 	ExaDriverPtr pExa;
-	int stride;
+	int stride, lines;
 
 	ENTER;
 
@@ -323,7 +323,8 @@ Pm3InitEXA(ScreenPtr pScreen)
 
 	pExa->memoryBase = pGlint->FbBase;
 	stride = pScrn->displayWidth * (pScrn->bitsPerPixel >> 3);
-	pExa->memorySize = min(pGlint->FbMapSize, 4095 * stride);
+	lines = min(pGlint->FbMapSize / stride, 4095);
+	pExa->memorySize = lines * stride;
 	xf86Msg(X_ERROR, "stride: %d\n", stride);
 	pExa->offScreenBase = stride * pScrn->virtualY;
 
@@ -331,9 +332,7 @@ Pm3InitEXA(ScreenPtr pScreen)
 	pExa->pixmapOffsetAlign = stride;
 	pExa->pixmapPitchAlign = stride;
 
-	pExa->flags = EXA_OFFSCREEN_PIXMAPS
-		      /* | EXA_SUPPORTS_OFFSCREEN_OVERLAPS |*/
-		      | EXA_MIXED_PIXMAPS;
+	pExa->flags = EXA_OFFSCREEN_PIXMAPS;
 
 	pExa->maxX = 4095;
 	pExa->maxY = 4095;

Reply via email to