summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
authorDavid Dawes <dawes@xfree86.org>2003-04-24 03:01:40 +0000
committerDavid Dawes <dawes@xfree86.org>2003-04-24 03:01:40 +0000
commit00522cedd6ee3027d2858909d34e862fa21e6e28 (patch)
tree546580556e6e90a6a1844cf4b6ff94eb245726cd /linux
parent9d603b0abe3d1ab2a383ee9f33f27900f9eb1d5e (diff)
Single/dual rasterizer quiescence patch for the glint/gamma DRI driver
(#5685, Sven Luther).
Diffstat (limited to 'linux')
-rw-r--r--linux/gamma.h7
-rw-r--r--linux/gamma_dma.c2
-rw-r--r--linux/gamma_drm.h1
-rw-r--r--linux/gamma_drv.h1
4 files changed, 9 insertions, 2 deletions
diff --git a/linux/gamma.h b/linux/gamma.h
index bff3f909..da8f52bb 100644
--- a/linux/gamma.h
+++ b/linux/gamma.h
@@ -90,8 +90,11 @@
#define __HAVE_DMA_QUIESCENT 1
#define DRIVER_DMA_QUIESCENT() do { \
- /* FIXME ! */ \
- gamma_dma_quiescent_single(dev); \
+ drm_gamma_private_t *dev_priv = \
+ (drm_gamma_private_t *)dev->dev_private; \
+ if (dev_priv->num_rast == 2) \
+ gamma_dma_quiescent_dual(dev); \
+ else gamma_dma_quiescent_single(dev); \
return 0; \
} while (0)
diff --git a/linux/gamma_dma.c b/linux/gamma_dma.c
index baa6b287..691c55a4 100644
--- a/linux/gamma_dma.c
+++ b/linux/gamma_dma.c
@@ -583,6 +583,8 @@ static int gamma_do_init_dma( drm_device_t *dev, drm_gamma_init_t *init )
memset( dev_priv, 0, sizeof(drm_gamma_private_t) );
+ dev_priv->num_rast = init->num_rast;
+
list_for_each(list, &dev->maplist->head) {
drm_map_list_t *r_list = list_entry(list, drm_map_list_t, head);
if( r_list->map &&
diff --git a/linux/gamma_drm.h b/linux/gamma_drm.h
index 0d58b07b..20819ded 100644
--- a/linux/gamma_drm.h
+++ b/linux/gamma_drm.h
@@ -84,6 +84,7 @@ typedef struct drm_gamma_init {
unsigned int mmio2;
unsigned int mmio3;
unsigned int buffers_offset;
+ int num_rast;
} drm_gamma_init_t;
#endif /* _GAMMA_DRM_H_ */
diff --git a/linux/gamma_drv.h b/linux/gamma_drv.h
index 36affa68..3e0e3e65 100644
--- a/linux/gamma_drv.h
+++ b/linux/gamma_drv.h
@@ -40,6 +40,7 @@ typedef struct drm_gamma_private {
drm_map_t *mmio1;
drm_map_t *mmio2;
drm_map_t *mmio3;
+ int num_rast;
} drm_gamma_private_t;
/* gamma_dma.c */