[Mesa-dev] glFinish Patch 2 of 3 - drm

Bob Gleitsmann rjgleits at bellsouth.net
Sat Jan 1 13:49:39 PST 2011


diff --git a/include/drm/nouveau_drm.h b/include/drm/nouveau_drm.h
index b18cad0..d2ce47e 100644
--- a/include/drm/nouveau_drm.h
+++ b/include/drm/nouveau_drm.h
@@ -49,6 +49,10 @@ struct drm_nouveau_channel_free {
 	int channel;
 };
 
+struct drm_nouveau_channel_wait {
+	int channel;
+};
+
 struct drm_nouveau_grobj_alloc {
 	int      channel;
 	uint32_t handle;
@@ -204,5 +208,6 @@ struct drm_nouveau_sarea {
 #define DRM_NOUVEAU_GEM_CPU_PREP       0x42
 #define DRM_NOUVEAU_GEM_CPU_FINI       0x43
 #define DRM_NOUVEAU_GEM_INFO           0x44
+#define DRM_NOUVEAU_CHANNEL_WAIT       0x45
 
 #endif /* __NOUVEAU_DRM_H__ */
diff --git a/nouveau/nouveau_channel.c b/nouveau/nouveau_channel.c
index 96fa03b..1f03732 100644
--- a/nouveau/nouveau_channel.c
+++ b/nouveau/nouveau_channel.c
@@ -139,4 +139,20 @@ nouveau_channel_free(struct nouveau_channel **chan)
 	free(nvchan);
 }
 
+int
+nouveau_channel_wait(struct nouveau_channel *chan)
+{
+	struct nouveau_channel_priv *nvchan;
+	struct nouveau_device_priv *nvdev;
+	struct drm_nouveau_channel_wait cw;
+	int ret;
+
+	if (!chan)
+		return 0;
+	nvchan = nouveau_channel(chan);
+	nvdev = nouveau_device(nvchan->base.device);
+	cw.channel = chan->id;
+	ret = drmCommandWriteRead(nvdev->fd, DRM_NOUVEAU_CHANNEL_WAIT, &cw, 
sizeof(cw));
+	return ret;
 
+}
diff --git a/nouveau/nouveau_channel.h b/nouveau/nouveau_channel.h
index d61a4c0..f7caf64 100644
--- a/nouveau/nouveau_channel.h
+++ b/nouveau/nouveau_channel.h
@@ -54,4 +54,7 @@ nouveau_channel_alloc(struct nouveau_device *, uint32_t fb, 
uint32_t tt,
 void
 nouveau_channel_free(struct nouveau_channel **);
 
+int
+nouveau_channel_wait(struct nouveau_channel *);
+
 #endif


More information about the mesa-dev mailing list