[pkg-fso-commits] [SCM] xf86-video-glamo, SMedia Glamo video driver for X.Org branch, master, updated. upstream/0.0.0+20090707.git98c012f7-57-g9918e08

Thomas White taw at bitwiz.org.uk
Fri Jan 8 13:24:39 UTC 2010


The following commit has been merged in the master branch:
commit fa0b953a1a137a9706b9bea15aa7e30a67d0a086
Author: Thomas White <taw at bitwiz.org.uk>
Date:   Thu Jul 23 00:04:49 2009 +0100

    Make glamo-kms-driver.c compile

diff --git a/src/glamo-kms-exa.h b/src/glamo-dri2.h
similarity index 78%
copy from src/glamo-kms-exa.h
copy to src/glamo-dri2.h
index be8e805..8ec99b9 100644
--- a/src/glamo-kms-exa.h
+++ b/src/glamo-dri2.h
@@ -1,5 +1,5 @@
 /*
- * EXA via DRI for the SMedia Glamo3362 X.org Driver
+ * DRI for the SMedia Glamo3362 X.org Driver
  *
  * Copyright 2009 Thomas White <taw at bitwiz.org.uk>
  *
@@ -22,5 +22,7 @@
 
 #include "xf86.h"
 
-extern void *GlamoKMSExaInit(ScrnInfoPtr pScrn);
-extern void GlamoKMSExaClose(ScrnInfoPtr pScrn);
+extern void driScreenInit(ScreenPtr pScreen);
+extern void driCloseScreen(ScreenPtr pScreen);
+extern void driLock(ScreenPtr pScreen);
+extern void driUnlock(ScreenPtr pScreen);
diff --git a/src/glamo-kms-driver.c b/src/glamo-kms-driver.c
index 0c923c0..2741253 100644
--- a/src/glamo-kms-driver.c
+++ b/src/glamo-kms-driver.c
@@ -65,10 +65,12 @@
 #include "xf86str.h"
 #include "xf86RAC.h"
 #include "xf86drm.h"
+#include "micmap.h"
 
 #include "glamo.h"
 #include "glamo-kms-driver.h"
 #include "glamo-kms-exa.h"
+#include "glamo-dri2.h"
 
 
 static const char *fbSymbols[] = {
@@ -78,9 +80,6 @@ static const char *fbSymbols[] = {
 };
 
 
-static int modesettingEntityIndex = -1;
-
-
 /* Return TRUE if KMS can be used */
 Bool GlamoKernelModesettingAvailable()
 {
@@ -106,29 +105,44 @@ Bool GlamoKernelModesettingAvailable()
 }
 
 
+void GlamoKMSAdjustFrame(int scrnIndex, int x, int y, int flags)
+{
+	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+	xf86OutputPtr output = config->output[config->compat_output];
+	xf86CrtcPtr crtc = output->crtc;
+
+	if (crtc && crtc->enabled) {
+		crtc->funcs->mode_set(crtc,
+		                      pScrn->currentMode,
+		                      pScrn->currentMode,
+		                      x, y);
+		crtc->x = output->initial_x + x;
+		crtc->y = output->initial_y + y;
+	}
+}
+
+
 static Bool CreateFrontBuffer(ScrnInfoPtr pScrn)
 {
 	GlamoPtr pGlamo = GlamoPTR(pScrn);
 	ScreenPtr pScreen = pScrn->pScreen;
 	PixmapPtr rootPixmap = pScreen->GetScreenPixmap(pScreen);
-	Bool fbAccessDisabled;
-	int flags;
+	unsigned int flags;
 
-	pGlamo->noEvict = TRUE;
 	pScreen->ModifyPixmapHeader(rootPixmap,
 	                            pScrn->virtualX, pScrn->virtualY,
 	                            pScrn->depth, pScrn->bitsPerPixel,
 	                            pScrn->displayWidth * pScrn->bitsPerPixel/8,
 	                            NULL);
-	pGlamo->noEvict = FALSE;
 
-	drmModeAddFB(ms->fd,
+	drmModeAddFB(pGlamo->drm_fd,
 	             pScrn->virtualX,
 	             pScrn->virtualY,
 	             pScrn->depth,
 	             pScrn->bitsPerPixel,
 	             pScrn->displayWidth * pScrn->bitsPerPixel / 8,
-	             driGetPixmapHandle(rootPixmap, &flags), &ms->fb_id);
+	             driGetPixmapHandle(rootPixmap, &flags), &pGlamo->fb_id);
 
 	pScrn->frameX0 = 0;
 	pScrn->frameY0 = 0;
@@ -143,10 +157,6 @@ static Bool CreateFrontBuffer(ScrnInfoPtr pScrn)
 static Bool crtc_resize(ScrnInfoPtr pScrn, int width, int height)
 {
 	GlamoPtr pGlamo = GlamoPTR(pScrn);
-	ScreenPtr pScreen = pScrn->pScreen;
-	PixmapPtr rootPixmap = pScreen->GetScreenPixmap(pScreen);
-	Bool fbAccessDisabled;
-	CARD8 *fbstart;
 
 	if ( (width == pScrn->virtualX) && (height == pScrn->virtualY) )
 		return TRUE;	/* Nothing to do */
@@ -283,15 +293,45 @@ static Bool GlamoKMSCloseScreen(int scrnIndex, ScreenPtr pScreen)
 }
 
 
+static Bool GlamoKMSCreateScreenResources(ScreenPtr pScreen)
+{
+	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+	GlamoPtr pGlamo = GlamoPTR(pScrn);
+	PixmapPtr rootPixmap;
+	Bool ret;
+	unsigned int flags;
+
+	pScreen->CreateScreenResources = pGlamo->createScreenResources;
+	ret = pScreen->CreateScreenResources(pScreen);
+	pScreen->CreateScreenResources = GlamoKMSCreateScreenResources;
+
+	rootPixmap = pScreen->GetScreenPixmap(pScreen);
+
+	if (!pScreen->ModifyPixmapHeader(rootPixmap, -1, -1, -1, -1, -1, NULL))
+		FatalError("Couldn't adjust screen pixmap\n");
+
+	drmModeAddFB(pGlamo->drm_fd,
+	             pScrn->virtualX,
+	             pScrn->virtualY,
+	             pScrn->depth,
+	             pScrn->bitsPerPixel,
+	             pScrn->displayWidth * pScrn->bitsPerPixel / 8,
+	             driGetPixmapHandle(rootPixmap, &flags), &pGlamo->fb_id);
+
+	GlamoKMSAdjustFrame(pScrn->scrnIndex,
+	                    pScrn->frameX0, pScrn->frameY0,
+	                    0);
+
+	return ret;
+}
+
+
 Bool GlamoKMSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc,
                         char **argv)
 {
 	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
 	GlamoPtr pGlamo = GlamoPTR(pScrn);
 	VisualPtr visual;
-	unsigned long sys_mem;
-	int c;
-	MessageType from;
 
 	/* Deal with server regeneration */
 	if ( pGlamo->drm_fd < 0 ) {
@@ -342,7 +382,7 @@ Bool GlamoKMSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc,
 	fbPictureInit(pScreen, NULL, 0);
 
 	pGlamo->createScreenResources = pScreen->CreateScreenResources;
-	pScreen->CreateScreenResources = CreateScreenResources;
+	pScreen->CreateScreenResources = GlamoKMSCreateScreenResources;
 
 	xf86SetBlackWhitePixels(pScreen);
 
@@ -353,13 +393,6 @@ Bool GlamoKMSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc,
 	xf86SetSilkenMouse(pScreen);
 	miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
 
-	/* Need to extend HWcursor support to handle mask interleave */
-	if (!ms->SWCursor) {
-		xf86_cursors_init(pScreen, 64, 64,
-		                  HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64 |
-		                  HARDWARE_CURSOR_ARGB);
-	}
-
 	/* Must force it before EnterVT, so we are in control of VT and
 	 * later memory should be bound when allocating, e.g rotate_mem */
 	pScrn->vtSema = TRUE;
@@ -391,24 +424,6 @@ Bool GlamoKMSSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
 }
 
 
-void GlamoKMSAdjustFrame(int scrnIndex, int x, int y, int flags)
-{
-	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
-	xf86OutputPtr output = config->output[config->compat_output];
-	xf86CrtcPtr crtc = output->crtc;
-
-	if (crtc && crtc->enabled) {
-		crtc->funcs->mode_set(crtc,
-		                      pScrn->currentMode,
-		                      pScrn->currentMode,
-		                      x, y);
-		crtc->x = output->initial_x + x;
-		crtc->y = output->initial_y + y;
-	}
-}
-
-
 Bool GlamoKMSEnterVT(int scrnIndex, int flags)
 {
 	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
@@ -445,8 +460,6 @@ void GlamoKMSLeaveVT(int scrnIndex, int flags)
 
 		xf86CrtcPtr crtc = config->crtc[o];
 
-		cursor_destroy(crtc);
-
 		if ( crtc->rotatedPixmap || crtc->rotatedData ) {
 			crtc->funcs->shadow_destroy(crtc, crtc->rotatedPixmap,
 			                            crtc->rotatedData);
diff --git a/src/glamo-kms-exa.h b/src/glamo-kms-exa.h
index be8e805..45b8eb7 100644
--- a/src/glamo-kms-exa.h
+++ b/src/glamo-kms-exa.h
@@ -24,3 +24,4 @@
 
 extern void *GlamoKMSExaInit(ScrnInfoPtr pScrn);
 extern void GlamoKMSExaClose(ScrnInfoPtr pScrn);
+extern unsigned int driGetPixmapHandle(PixmapPtr pPixmap, unsigned int *flags);
diff --git a/src/glamo.h b/src/glamo.h
index cf1bf5d..aac39d5 100644
--- a/src/glamo.h
+++ b/src/glamo.h
@@ -135,8 +135,11 @@ typedef struct {
 /* Use hardware acceleration */
     Bool accel;
 
+    /* Things to do with DRI */
     int drm_fd;
     unsigned int SaveGeneration;
+    unsigned int fb_id;
+    CreateScreenResourcesProcPtr createScreenResources;
 
     uint16_t *colormap;
 } GlamoRec, *GlamoPtr;

-- 
xf86-video-glamo, SMedia Glamo video driver for X.Org



More information about the pkg-fso-commits mailing list