[Intel-gfx] [PATCH] intel: Add support for server managed fds

Hans de Goede hdegoede at redhat.com
Fri Mar 7 14:13:38 CET 2014


Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
 src/intel_device.c | 19 ++++++-------------
 src/intel_module.c |  4 ++++
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/src/intel_device.c b/src/intel_device.c
index d0c8092..b19884c 100644
--- a/src/intel_device.c
+++ b/src/intel_device.c
@@ -240,19 +240,10 @@ static char *get_path(struct xf86_platform_device *dev)
 #endif
 
 
-#if defined(ODEV_ATTRIB_FD) && 0
+#if defined(ODEV_ATTRIB_FD)
 static int get_fd(struct xf86_platform_device *dev)
 {
-	const char *str;
-
-	if (dev == NULL)
-		return -1;
-
-	str = xf86_get_platform_device_attrib(dev, ODEV_ATTRIB_FD);
-	if (str == NULL)
-		return -1;
-
-	return atoi(str);
+	return xf86_get_platform_device_int_attrib(dev, ODEV_ATTRIB_FD, -1);
 }
 
 #else
@@ -270,7 +261,7 @@ int intel_open_device(int entity_num,
 {
 	struct intel_device *dev;
 	char *local_path;
-	int fd;
+	int fd, init_master_count = 0;
 
 	if (intel_device_key == -1)
 		intel_device_key = xf86AllocateEntityPrivateIndex();
@@ -286,6 +277,8 @@ int intel_open_device(int entity_num,
 	fd = get_fd(platform);
 	if (fd == -1)
 		fd = __intel_open_device(pci, &local_path);
+	else
+		init_master_count = 1; /* Server fd is already master */
 	if (fd == -1)
 		goto err_path;
 
@@ -298,7 +291,7 @@ int intel_open_device(int entity_num,
 
 	dev->fd = fd;
 	dev->open_count = 0;
-	dev->master_count = 0;
+	dev->master_count = init_master_count;
 	dev->master_node = local_path;
 	dev->render_node = find_render_node(fd);
 	if (dev->render_node == NULL)
diff --git a/src/intel_module.c b/src/intel_module.c
index 51de62a..02062d1 100644
--- a/src/intel_module.c
+++ b/src/intel_module.c
@@ -419,6 +419,10 @@ static Bool intel_driver_func(ScrnInfoPtr pScrn,
 #endif
 
 		return TRUE;
+#if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(1,15,99,0,0)
+	case SUPPORTS_SERVER_FDS:
+		return TRUE;	
+#endif
 	default:
 		/* Unknown or deprecated function */
 		return FALSE;
-- 
1.9.0




More information about the Intel-gfx mailing list