summaryrefslogtreecommitdiff
path: root/src/glamo-dri2.c
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2009-07-23 16:04:36 +0100
committerThomas White <taw@bitwiz.org.uk>2009-07-23 16:04:36 +0100
commit51690ae5c51e24b6bc0da95a067a3ac4bcda6350 (patch)
treef027eadadd954b622e5665b48fcdf5b3413168d6 /src/glamo-dri2.c
parentfa0b953a1a137a9706b9bea15aa7e30a67d0a086 (diff)
Just backing up progress
Diffstat (limited to 'src/glamo-dri2.c')
-rw-r--r--src/glamo-dri2.c121
1 files changed, 60 insertions, 61 deletions
diff --git a/src/glamo-dri2.c b/src/glamo-dri2.c
index fccf2ed..f6915fc 100644
--- a/src/glamo-dri2.c
+++ b/src/glamo-dri2.c
@@ -1,4 +1,11 @@
/*
+ * DRI for the SMedia Glamo3362 X.org Driver
+ *
+ * Modified: 2009 by Thomas White <taw@bitwiz.org.uk>
+ *
+ * Based on dri2.c from xf86-video-modesetting, to which the following
+ * notice applies:
+ *
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
* All Rights Reserved.
*
@@ -26,6 +33,7 @@
* Author: Alan Hourihane <alanh@tungstengraphics.com>
*
*/
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -33,96 +41,87 @@
#include "xf86.h"
#include "xf86_OSproc.h"
-#include "driver.h"
-
-#include "dri2.h"
+#include "glamo.h"
+#include "glamo-dri2.h"
-extern unsigned int
-driGetPixmapHandle(PixmapPtr pPixmap, unsigned int *flags);
+extern unsigned int driGetPixmapHandle(PixmapPtr pPixmap, unsigned int *flags);
-void
-driLock(ScreenPtr pScreen)
+void driLock(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- GlamoPtr pGlamo = GlamoPTR(pScrn);
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ GlamoPtr pGlamo = GlamoPTR(pScrn);
- if (!pGlamo->lock_held)
- DRM_LOCK(pGlamo->drm_fd, pGlamo->lock, pGlamo->context, 0);
+ if (!pGlamo->lock_held)
+ DRM_LOCK(pGlamo->drm_fd, pGlamo->lock, pGlamo->context, 0);
- pGlamo->lock_held = 1;
+ pGlamo->lock_held = 1;
}
-void
-driUnlock(ScreenPtr pScreen)
+void driUnlock(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- GlamoPtr pGlamo = GlamoPTR(pScrn);
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ GlamoPtr pGlamo = GlamoPTR(pScrn);
- if (pGlamo->lock_held)
- DRM_UNLOCK(pGlamo->drm_fd, pGlamo->lock, pGlamo->context);
+ if (pGlamo->lock_held)
+ DRM_UNLOCK(pGlamo->drm_fd, pGlamo->lock, pGlamo->context);
- pGlamo->lock_held = 0;
+ pGlamo->lock_held = 0;
}
-static void
-driBeginClipNotify(ScreenPtr pScreen)
+static void driBeginClipNotify(ScreenPtr pScreen)
{
- driLock(pScreen);
+ driLock(pScreen);
}
-static void
-driEndClipNotify(ScreenPtr pScreen)
+static void driEndClipNotify(ScreenPtr pScreen)
{
- driUnlock(pScreen);
+ driUnlock(pScreen);
}
struct __DRILock
{
- unsigned int block_header;
- drm_hw_lock_t lock;
- unsigned int next_id;
+ unsigned int block_header;
+ drm_hw_lock_t lock;
+ unsigned int next_id;
};
#define DRI2_SAREA_BLOCK_HEADER(type, size) (((type) << 16) | (size))
#define DRI2_SAREA_BLOCK_LOCK 0x0001
-void
-driScreenInit(ScreenPtr pScreen)
+void driScreenInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- GlamoPtr pGlamo = GlamoPTR(pScrn);
- DRI2InfoRec dri2info;
- const char *driverName;
- unsigned int sarea_handle;
- struct __DRILock *DRILock;
- void *p;
-
- dri2info.version = 1;
- dri2info.fd = pGlamo->drm_fd;
- dri2info.driverSareaSize = sizeof(struct __DRILock);
- dri2info.driverName = "i915"; /* FIXME */
- dri2info.getPixmapHandle = driGetPixmapHandle;
- dri2info.beginClipNotify = driBeginClipNotify;
- dri2info.endClipNotify = driEndClipNotify;
-
- p = DRI2ScreenInit(pScreen, &dri2info);
- if (!p)
- return;
-
- DRILock = p;
- DRILock->block_header =
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ GlamoPtr pGlamo = GlamoPTR(pScrn);
+ DRI2InfoRec dri2info;
+ const char *driverName;
+ unsigned int sarea_handle;
+ struct __DRILock *DRILock;
+ void *p;
+
+ dri2info.version = 1;
+ dri2info.fd = pGlamo->drm_fd;
+ dri2info.driverSareaSize = sizeof(struct __DRILock);
+ dri2info.driverName = "i915"; /* FIXME */
+ dri2info.getPixmapHandle = driGetPixmapHandle;
+ dri2info.beginClipNotify = driBeginClipNotify;
+ dri2info.endClipNotify = driEndClipNotify;
+
+ p = DRI2ScreenInit(pScreen, &dri2info);
+ if (!p) return;
+
+ DRILock = p;
+ DRILock->block_header =
DRI2_SAREA_BLOCK_HEADER(DRI2_SAREA_BLOCK_LOCK, sizeof *DRILock);
- pGlamo->lock = &DRILock->lock;
- pGlamo->context = 1;
- DRILock->next_id = 2;
- driLock(pScreen);
+ pGlamo->lock = &DRILock->lock;
+ pGlamo->context = 1;
+ DRILock->next_id = 2;
+ driLock(pScreen);
- DRI2Connect(pScreen, &pGlamo->drm_fd, &driverName, &sarea_handle);
+ DRI2Connect(pScreen, &pGlamo->drm_fd, &driverName, &sarea_handle);
}
-void
-driCloseScreen(ScreenPtr pScreen)
+void driCloseScreen(ScreenPtr pScreen)
{
- driUnlock(pScreen);
- DRI2CloseScreen(pScreen);
+ driUnlock(pScreen);
+ DRI2CloseScreen(pScreen);
}