1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
From 1baf53e2b345ae7d883d4fa6c74f09188ea53b51 Mon Sep 17 00:00:00 2001
From: Alexandre Courbot <acourbot@nvidia.com>
Date: Fri, 25 Sep 2015 14:37:01 +0900
Subject: [PATCH 2/7] [HACK] enable GLX with DRI3
---
glamor/glamor_egl.c | 5 ++++-
hw/xfree86/dri2/dri2.c | 5 ++++-
hw/xfree86/drivers/modesetting/dri2.c | 5 +++--
3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index b6941f2..8d25171 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -724,6 +724,7 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
glamor_ctx->make_current = glamor_egl_make_current;
#ifdef DRI3
+ xf86Msg(X_INFO, "DRI3 capable: %d\n", glamor_egl->dri3_capable);
if (glamor_egl->dri3_capable) {
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
/* Tell the core that we have the interfaces for import/export
@@ -740,7 +741,9 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
/* To do DRI3 device FD generation, we need to open a new fd
* to the same device we were handed in originally.
*/
- glamor_egl->device_path = drmGetDeviceNameFromFd(glamor_egl->fd);
+ //glamor_egl->device_path = drmGetDeviceNameFromFd(glamor_egl->fd);
+ glamor_egl->device_path = "/dev/dri/renderD128";
+ xf86Msg(X_INFO, "DRI3 device name: %s %d\n", glamor_egl->device_path, glamor_egl->fd);
if (!dri3_screen_init(screen, &glamor_dri3_info)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index d55be19..00c5c61 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -1334,9 +1334,12 @@ DRI2Connect(ClientPtr client, ScreenPtr pScreen,
return FALSE;
*driverName = ds->driverNames[driver_id];
- *deviceName = ds->deviceName;
+ //*deviceName = ds->deviceName;
+ *deviceName = "/dev/dri/renderD128";
*fd = ds->fd;
+ xf86Msg(X_INFO, "%s: %s %s %d\n", __func__, *driverName, *deviceName, *fd);
+
if (client) {
DRI2ClientPtr dri2_client;
dri2_client = dri2ClientPrivate(client);
diff --git a/hw/xfree86/drivers/modesetting/dri2.c b/hw/xfree86/drivers/modesetting/dri2.c
index 83cb3e0..3834a01 100644
--- a/hw/xfree86/drivers/modesetting/dri2.c
+++ b/hw/xfree86/drivers/modesetting/dri2.c
@@ -831,9 +831,10 @@ ms_dri2_screen_init(ScreenPtr screen)
}
memset(&info, '\0', sizeof(info));
- info.fd = ms->fd;
+ info.fd = gbm_device_get_fd(ms->drmmode.gbm);
+ //info.fd = ms->fd;
info.driverName = NULL; /* Compat field, unused. */
- info.deviceName = drmGetDeviceNameFromFd(ms->fd);
+ info.deviceName = drmGetDeviceNameFromFd(info.fd);
info.version = 4;
info.CreateBuffer = ms_dri2_create_buffer;
--
2.9.3
|