From: Michel Dänzer <[email protected]>

This brings us closer to amdgpu.

Signed-off-by: Michel Dänzer <[email protected]>
---
 src/drmmode_display.c  | 151 +++++++++++++++++++++++++------------------------
 src/drmmode_display.h  |   1 -
 src/radeon.h           |  14 +++--
 src/radeon_accel.c     |   4 +-
 src/radeon_bo_helper.c |   8 ++-
 src/radeon_dri2.c      |  54 ++++++++++--------
 src/radeon_dri2.h      |   1 -
 src/radeon_dri3.c      |   3 +-
 src/radeon_exa.c       |   4 +-
 src/radeon_glamor.c    |   3 +-
 src/radeon_kms.c       |  70 ++++++++++++-----------
 src/radeon_present.c   |  13 +++--
 12 files changed, 172 insertions(+), 154 deletions(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index dd394ec1d..4b964b7b9 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -272,7 +272,7 @@ int drmmode_get_current_ust(int drm_fd, CARD64 *ust)
 int drmmode_crtc_get_ust_msc(xf86CrtcPtr crtc, CARD64 *ust, CARD64 *msc)
 {
     ScrnInfoPtr scrn = crtc->scrn;
-    RADEONInfoPtr info = RADEONPTR(scrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
     drmVBlank vbl;
     int ret;
 
@@ -280,7 +280,7 @@ int drmmode_crtc_get_ust_msc(xf86CrtcPtr crtc, CARD64 *ust, 
CARD64 *msc)
     vbl.request.type |= radeon_populate_vbl_request_type(crtc);
     vbl.request.sequence = 0;
 
-    ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+    ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
     if (ret) {
        xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                   "get vblank counter failed: %s\n", strerror(errno));
@@ -298,7 +298,7 @@ drmmode_do_crtc_dpms(xf86CrtcPtr crtc, int mode)
 {
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
        ScrnInfoPtr scrn = crtc->scrn;
-       RADEONInfoPtr info = RADEONPTR(scrn);
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
        CARD64 ust;
        int ret;
 
@@ -318,7 +318,7 @@ drmmode_do_crtc_dpms(xf86CrtcPtr crtc, int mode)
                vbl.request.type = DRM_VBLANK_RELATIVE;
                vbl.request.type |= radeon_populate_vbl_request_type(crtc);
                vbl.request.sequence = 0;
-               ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+               ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
                if (ret)
                        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
                                   "%s cannot get last vblank counter\n",
@@ -345,7 +345,7 @@ drmmode_do_crtc_dpms(xf86CrtcPtr crtc, int mode)
                 * Off->On transition: calculate and accumulate the
                 * number of interpolated vblanks while we were in Off state
                 */
-               ret = drmmode_get_current_ust(info->dri2.drm_fd, &ust);
+               ret = drmmode_get_current_ust(pRADEONEnt->fd, &ust);
                if (ret)
                        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
                                   "%s cannot get current time\n", __func__);
@@ -365,7 +365,7 @@ static void
 drmmode_crtc_dpms(xf86CrtcPtr crtc, int mode)
 {
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-       drmmode_ptr drmmode = drmmode_crtc->drmmode;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
 
        /* Disable unused CRTCs */
        if (!crtc->enabled || mode != DPMSModeOn) {
@@ -373,9 +373,9 @@ drmmode_crtc_dpms(xf86CrtcPtr crtc, int mode)
                if (drmmode_crtc->flip_pending)
                        return;
 
-               drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id,
+               drmModeSetCrtc(pRADEONEnt->fd, drmmode_crtc->mode_crtc->crtc_id,
                               0, 0, 0, NULL, 0, NULL);
-               drmmode_fb_reference(drmmode->fd, &drmmode_crtc->fb, NULL);
+               drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb, NULL);
        } else if (drmmode_crtc->dpms_mode != DPMSModeOn)
                crtc->funcs->set_mode_major(crtc, &crtc->mode, crtc->rotation,
                                            crtc->x, crtc->y);
@@ -385,6 +385,7 @@ static PixmapPtr
 create_pixmap_for_fbcon(drmmode_ptr drmmode,
                        ScrnInfoPtr pScrn, int fbcon_id)
 {
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
        RADEONInfoPtr info = RADEONPTR(pScrn);
        PixmapPtr pixmap = info->fbcon_pixmap;
        struct radeon_bo *bo;
@@ -394,7 +395,7 @@ create_pixmap_for_fbcon(drmmode_ptr drmmode,
        if (pixmap)
            return pixmap;
 
-       fbcon = drmModeGetFB(drmmode->fd, fbcon_id);
+       fbcon = drmModeGetFB(pRADEONEnt->fd, fbcon_id);
        if (fbcon == NULL)
                return NULL;
 
@@ -404,7 +405,7 @@ create_pixmap_for_fbcon(drmmode_ptr drmmode,
                goto out_free_fb;
 
        flink.handle = fbcon->handle;
-       if (ioctl(drmmode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
+       if (ioctl(pRADEONEnt->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
                xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                           "Couldn't flink fbcon handle\n");
                goto out_free_fb;
@@ -812,8 +813,9 @@ drmmode_crtc_gamma_do_set(xf86CrtcPtr crtc, uint16_t *red, 
uint16_t *green,
                          uint16_t *blue, int size)
 {
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
 
-       drmModeCrtcSetGamma(drmmode_crtc->drmmode->fd,
+       drmModeCrtcSetGamma(pRADEONEnt->fd,
                            drmmode_crtc->mode_crtc->crtc_id, size, red, green,
                            blue);
 }
@@ -825,6 +827,7 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr 
mode,
        ScrnInfoPtr pScrn = crtc->scrn;
        ScreenPtr pScreen = pScrn->pScreen;
        RADEONInfoPtr info = RADEONPTR(pScrn);
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
        xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
        unsigned scanout_id = 0;
@@ -907,13 +910,13 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr 
mode,
                if (!fb)
                        fb = 
radeon_pixmap_get_fb(pScreen->GetWindowPixmap(pScreen->root));
                if (!fb) {
-                       fb = radeon_fb_create(drmmode->fd, pScrn->virtualX,
+                       fb = radeon_fb_create(pRADEONEnt->fd, pScrn->virtualX,
                                              pScrn->virtualY, pScrn->depth,
                                              pScrn->bitsPerPixel,
                                              pScrn->displayWidth * 
info->pixel_bytes,
                                              info->front_bo->handle);
                        /* Prevent refcnt of ad-hoc FBs from reaching 2 */
-                       drmmode_fb_reference(drmmode->fd, &drmmode_crtc->fb, 
NULL);
+                       drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb, 
NULL);
                        drmmode_crtc->fb = fb;
                }
                if (!fb) {
@@ -923,10 +926,10 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr 
mode,
 
                /* Wait for any pending flip to finish */
                do {} while (drmmode_crtc->flip_pending &&
-                            drmHandleEvent(drmmode->fd,
+                            drmHandleEvent(pRADEONEnt->fd,
                                            &drmmode->event_context) > 0);
 
-               if (drmModeSetCrtc(drmmode->fd,
+               if (drmModeSetCrtc(pRADEONEnt->fd,
                                   drmmode_crtc->mode_crtc->crtc_id,
                                   fb->handle, x, y, output_ids,
                                   output_count, &kmode) != 0) {
@@ -935,7 +938,7 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr 
mode,
                        goto done;
                } else {
                        ret = TRUE;
-                       drmmode_fb_reference(drmmode->fd, &drmmode_crtc->fb, 
fb);
+                       drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb, 
fb);
                }
 
                if (pScreen)
@@ -1006,7 +1009,7 @@ static void
 drmmode_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
 {
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-       drmmode_ptr drmmode = drmmode_crtc->drmmode;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
 
 #if XF86_CRTC_VERSION >= 4 && XF86_CRTC_VERSION < 7
        if (crtc->driverIsPerformingTransform) {
@@ -1016,7 +1019,7 @@ drmmode_set_cursor_position (xf86CrtcPtr crtc, int x, int 
y)
        }
 #endif
 
-       drmModeMoveCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, x, y);
+       drmModeMoveCursor(pRADEONEnt->fd, drmmode_crtc->mode_crtc->crtc_id, x, 
y);
 }
 
 #if XF86_CRTC_VERSION >= 4 && XF86_CRTC_VERSION < 7
@@ -1138,9 +1141,9 @@ drmmode_hide_cursor (xf86CrtcPtr crtc)
        ScrnInfoPtr pScrn = crtc->scrn;
        RADEONInfoPtr info = RADEONPTR(pScrn);
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-       drmmode_ptr drmmode = drmmode_crtc->drmmode;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
 
-       drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, 0,
+       drmModeSetCursor(pRADEONEnt->fd, drmmode_crtc->mode_crtc->crtc_id, 0,
                         info->cursor_w, info->cursor_h);
 
 }
@@ -1151,7 +1154,7 @@ drmmode_show_cursor (xf86CrtcPtr crtc)
        ScrnInfoPtr pScrn = crtc->scrn;
        RADEONInfoPtr info = RADEONPTR(pScrn);
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-       drmmode_ptr drmmode = drmmode_crtc->drmmode;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
        uint32_t handle = drmmode_crtc->cursor_bo->handle;
        static Bool use_set_cursor2 = TRUE;
 
@@ -1191,7 +1194,7 @@ drmmode_show_cursor (xf86CrtcPtr crtc)
            }
 
            ret =
-               drmModeSetCursor2(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id,
+               drmModeSetCursor2(pRADEONEnt->fd, 
drmmode_crtc->mode_crtc->crtc_id,
                                  handle, info->cursor_w, info->cursor_h,
                                  xhot, yhot);
            if (ret == -EINVAL)
@@ -1200,7 +1203,7 @@ drmmode_show_cursor (xf86CrtcPtr crtc)
                return;
        }
 
-       drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle,
+       drmModeSetCursor(pRADEONEnt->fd, drmmode_crtc->mode_crtc->crtc_id, 
handle,
                         info->cursor_w, info->cursor_h);
 }
 
@@ -1347,8 +1350,7 @@ int drmmode_get_crtc_id(xf86CrtcPtr crtc)
 void drmmode_crtc_hw_id(xf86CrtcPtr crtc)
 {
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
-       ScrnInfoPtr pScrn = crtc->scrn;
-       RADEONInfoPtr info = RADEONPTR(pScrn);
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
        struct drm_radeon_info ginfo;
        int r;
        uint32_t tmp;
@@ -1357,7 +1359,7 @@ void drmmode_crtc_hw_id(xf86CrtcPtr crtc)
        ginfo.request = 0x4;
        tmp = drmmode_crtc->mode_crtc->crtc_id;
        ginfo.value = (uintptr_t)&tmp;
-       r = drmCommandWriteRead(info->dri2.drm_fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
+       r = drmCommandWriteRead(pRADEONEnt->fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
        if (r) {
                drmmode_crtc->hw_id = -1;
                return;
@@ -1377,7 +1379,7 @@ drmmode_crtc_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, 
drmModeResPtr mode_res
                return 0;
 
        drmmode_crtc = xnfcalloc(sizeof(drmmode_crtc_private_rec), 1);
-       drmmode_crtc->mode_crtc = drmModeGetCrtc(drmmode->fd, 
mode_res->crtcs[num]);
+       drmmode_crtc->mode_crtc = drmModeGetCrtc(pRADEONEnt->fd, 
mode_res->crtcs[num]);
        drmmode_crtc->drmmode = drmmode;
        drmmode_crtc->dpms_mode = DPMSModeOff;
        drmmode_crtc->pending_dpms_mode = DPMSModeOff;
@@ -1397,11 +1399,11 @@ drmmode_output_detect(xf86OutputPtr output)
 {
        /* go to the hw and retrieve a new output struct */
        drmmode_output_private_ptr drmmode_output = output->driver_private;
-       drmmode_ptr drmmode = drmmode_output->drmmode;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(output->scrn);
        xf86OutputStatus status;
        drmModeFreeConnector(drmmode_output->mode_output);
 
-       drmmode_output->mode_output = drmModeGetConnector(drmmode->fd, 
drmmode_output->output_id);
+       drmmode_output->mode_output = drmModeGetConnector(pRADEONEnt->fd, 
drmmode_output->output_id);
        if (!drmmode_output->mode_output)
                return XF86OutputStatusDisconnected;
 
@@ -1431,7 +1433,7 @@ drmmode_output_get_modes(xf86OutputPtr output)
 {
        drmmode_output_private_ptr drmmode_output = output->driver_private;
        drmModeConnectorPtr koutput = drmmode_output->mode_output;
-       drmmode_ptr drmmode = drmmode_output->drmmode;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(output->scrn);
        int i;
        DisplayModePtr Modes = NULL, Mode;
        drmModePropertyPtr props;
@@ -1442,12 +1444,12 @@ drmmode_output_get_modes(xf86OutputPtr output)
 
        /* look for an EDID property */
        for (i = 0; i < koutput->count_props; i++) {
-               props = drmModeGetProperty(drmmode->fd, koutput->props[i]);
+               props = drmModeGetProperty(pRADEONEnt->fd, koutput->props[i]);
                if (props && (props->flags & DRM_MODE_PROP_BLOB)) {
                        if (!strcmp(props->name, "EDID")) {
                                if (drmmode_output->edid_blob)
                                        
drmModeFreePropertyBlob(drmmode_output->edid_blob);
-                               drmmode_output->edid_blob = 
drmModeGetPropertyBlob(drmmode->fd, koutput->prop_values[i]);
+                               drmmode_output->edid_blob = 
drmModeGetPropertyBlob(pRADEONEnt->fd, koutput->prop_values[i]);
                        }
                }
                if (props)
@@ -1501,7 +1503,7 @@ drmmode_output_dpms(xf86OutputPtr output, int mode)
        drmmode_output_private_ptr drmmode_output = output->driver_private;
        xf86CrtcPtr crtc = output->crtc;
        drmModeConnectorPtr koutput = drmmode_output->mode_output;
-       drmmode_ptr drmmode = drmmode_output->drmmode;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(output->scrn);
 
        if (!koutput)
                return;
@@ -1516,7 +1518,7 @@ drmmode_output_dpms(xf86OutputPtr output, int mode)
                        return;
        }
 
-       drmModeConnectorSetProperty(drmmode->fd, koutput->connector_id,
+       drmModeConnectorSetProperty(pRADEONEnt->fd, koutput->connector_id,
                                    drmmode_output->dpms_enum_id, mode);
 
        if (mode == DPMSModeOn && crtc) {
@@ -1553,7 +1555,7 @@ drmmode_output_create_resources(xf86OutputPtr output)
     RADEONInfoPtr info = RADEONPTR(output->scrn);
     drmmode_output_private_ptr drmmode_output = output->driver_private;
     drmModeConnectorPtr mode_output = drmmode_output->mode_output;
-    drmmode_ptr drmmode = drmmode_output->drmmode;
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(output->scrn);
     drmModePropertyPtr drmmode_prop, tearfree_prop;
     int i, j, err;
 
@@ -1563,7 +1565,7 @@ drmmode_output_create_resources(xf86OutputPtr output)
     
     drmmode_output->num_props = 0;
     for (i = 0, j = 0; i < mode_output->count_props; i++) {
-       drmmode_prop = drmModeGetProperty(drmmode->fd, mode_output->props[i]);
+       drmmode_prop = drmModeGetProperty(pRADEONEnt->fd, 
mode_output->props[i]);
        if (drmmode_property_ignore(drmmode_prop)) {
            drmModeFreeProperty(drmmode_prop);
            continue;
@@ -1657,7 +1659,7 @@ drmmode_output_set_property(xf86OutputPtr output, Atom 
property,
                RRPropertyValuePtr value)
 {
     drmmode_output_private_ptr drmmode_output = output->driver_private;
-    drmmode_ptr drmmode = drmmode_output->drmmode;
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(output->scrn);
     int i;
 
     for (i = 0; i < drmmode_output->num_props; i++) {
@@ -1674,7 +1676,7 @@ drmmode_output_set_property(xf86OutputPtr output, Atom 
property,
                return FALSE;
            val = *(uint32_t *)value->data;
 
-           drmModeConnectorSetProperty(drmmode->fd, drmmode_output->output_id,
+           drmModeConnectorSetProperty(pRADEONEnt->fd, 
drmmode_output->output_id,
                    p->mode_prop->prop_id, (uint64_t)val);
            return TRUE;
        } else if (p->mode_prop->flags & DRM_MODE_PROP_ENUM) {
@@ -1703,7 +1705,7 @@ drmmode_output_set_property(xf86OutputPtr output, Atom 
property,
                            }
                        }
                    } else {
-                       drmModeConnectorSetProperty(drmmode->fd,
+                       drmModeConnectorSetProperty(pRADEONEnt->fd,
                                                    drmmode_output->output_id,
                                                    p->mode_prop->prop_id,
                                                    
p->mode_prop->enums[j].value);
@@ -1876,6 +1878,7 @@ static unsigned int
 drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, drmModeResPtr 
mode_res, int num, int *num_dvi, int *num_hdmi, int dynamic)
 {
        xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
        RADEONInfoPtr info = RADEONPTR(pScrn);
        xf86OutputPtr output;
        drmModeConnectorPtr koutput;
@@ -1887,15 +1890,15 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, drmModeResPtr mode_r
        int i;
        const char *s;
 
-       koutput = drmModeGetConnector(drmmode->fd, mode_res->connectors[num]);
+       koutput = drmModeGetConnector(pRADEONEnt->fd, 
mode_res->connectors[num]);
        if (!koutput)
                return 0;
 
        for (i = 0; i < koutput->count_props; i++) {
-               props = drmModeGetProperty(drmmode->fd, koutput->props[i]);
+               props = drmModeGetProperty(pRADEONEnt->fd, koutput->props[i]);
                if (props && (props->flags & DRM_MODE_PROP_BLOB)) {
                        if (!strcmp(props->name, "PATH")) {
-                               path_blob = drmModeGetPropertyBlob(drmmode->fd, 
koutput->prop_values[i]);
+                               path_blob = 
drmModeGetPropertyBlob(pRADEONEnt->fd, koutput->prop_values[i]);
                                drmModeFreeProperty(props);
                                break;
                        }
@@ -1909,7 +1912,7 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, drmModeResPtr mode_r
        }
 
        for (i = 0; i < koutput->count_encoders; i++) {
-               kencoders[i] = drmModeGetEncoder(drmmode->fd, 
koutput->encoders[i]);
+               kencoders[i] = drmModeGetEncoder(pRADEONEnt->fd, 
koutput->encoders[i]);
                if (!kencoders[i]) {
                        goto out_free_encoders;
                }
@@ -1982,7 +1985,7 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, drmModeResPtr mode_r
        output->possible_clones = 0;
 
        for (i = 0; i < koutput->count_props; i++) {
-               props = drmModeGetProperty(drmmode->fd, koutput->props[i]);
+               props = drmModeGetProperty(pRADEONEnt->fd, koutput->props[i]);
                if (props && (props->flags & DRM_MODE_PROP_ENUM)) {
                        if (!strcmp(props->name, "DPMS")) {
                                drmmode_output->dpms_enum_id = 
koutput->props[i];
@@ -2418,6 +2421,7 @@ static void
 drmmode_flip_handler(xf86CrtcPtr crtc, uint32_t frame, uint64_t usec, void 
*event_data)
 {
        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
        drmmode_flipdata_ptr flipdata = event_data;
 
        /* Is this the event whose info shall be delivered to higher level? */
@@ -2440,7 +2444,7 @@ drmmode_flip_handler(xf86CrtcPtr crtc, uint32_t frame, 
uint64_t usec, void *even
                free(flipdata);
        }
 
-       drmmode_fb_reference(drmmode_crtc->drmmode->fd, &drmmode_crtc->fb,
+       drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb,
                             drmmode_crtc->flip_pending);
        drmmode_clear_pending_flip(crtc);
 }
@@ -2454,23 +2458,26 @@ static void
 drm_wakeup_handler(pointer data, int err, pointer p)
 #endif
 {
-       drmmode_ptr drmmode = data;
+       ScrnInfoPtr scrn = data;
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
+       RADEONInfoPtr info = RADEONPTR(scrn);
+       
 #if !HAVE_NOTIFY_FD
        fd_set *read_mask = p;
 
-       if (err >= 0 && FD_ISSET(drmmode->fd, read_mask))
+       if (err >= 0 && FD_ISSET(pRADEONEnt->fd, read_mask))
 #endif
        {
-               drmHandleEvent(drmmode->fd, &drmmode->event_context);
+               drmHandleEvent(pRADEONEnt->fd, &info->drmmode.event_context);
        }
 }
 
-static Bool drmmode_probe_page_flip_target(drmmode_ptr drmmode)
+static Bool drmmode_probe_page_flip_target(RADEONEntPtr pRADEONEnt)
 {
 #ifdef DRM_CAP_PAGE_FLIP_TARGET
        uint64_t cap_value;
 
-       return drmGetCap(drmmode->fd, DRM_CAP_PAGE_FLIP_TARGET,
+       return drmGetCap(pRADEONEnt->fd, DRM_CAP_PAGE_FLIP_TARGET,
                         &cap_value) == 0 && cap_value != 0;
 #else
        return FALSE;
@@ -2478,13 +2485,12 @@ static Bool drmmode_probe_page_flip_target(drmmode_ptr 
drmmode)
 }
 
 static int
-drmmode_page_flip(drmmode_crtc_private_ptr drmmode_crtc, int fb_id,
+drmmode_page_flip(RADEONEntPtr pRADEONEnt,
+                 drmmode_crtc_private_ptr drmmode_crtc, int fb_id,
                  uint32_t flags, uintptr_t drm_queue_seq)
 {
-       drmmode_ptr drmmode = drmmode_crtc->drmmode;
-
        flags |= DRM_MODE_PAGE_FLIP_EVENT;
-       return drmModePageFlip(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id,
+       return drmModePageFlip(pRADEONEnt->fd, drmmode_crtc->mode_crtc->crtc_id,
                               fb_id, flags, (void*)drm_queue_seq);
 }
 
@@ -2496,17 +2502,16 @@ drmmode_page_flip_target_absolute(RADEONEntPtr 
pRADEONEnt,
 {
 #ifdef DRM_MODE_PAGE_FLIP_TARGET
        if (pRADEONEnt->has_page_flip_target) {
-               drmmode_ptr drmmode = drmmode_crtc->drmmode;
-
                flags |= DRM_MODE_PAGE_FLIP_EVENT | 
DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE;
-               return drmModePageFlipTarget(drmmode->fd,
+               return drmModePageFlipTarget(pRADEONEnt->fd,
                                             drmmode_crtc->mode_crtc->crtc_id,
                                             fb_id, flags, (void*)drm_queue_seq,
                                             target_msc);
        }
 #endif
 
-       return drmmode_page_flip(drmmode_crtc, fb_id, flags, drm_queue_seq);
+       return drmmode_page_flip(pRADEONEnt, drmmode_crtc, fb_id, flags,
+                                drm_queue_seq);
 }
 
 int
@@ -2517,17 +2522,16 @@ drmmode_page_flip_target_relative(RADEONEntPtr 
pRADEONEnt,
 {
 #ifdef DRM_MODE_PAGE_FLIP_TARGET
        if (pRADEONEnt->has_page_flip_target) {
-               drmmode_ptr drmmode = drmmode_crtc->drmmode;
-
                flags |= DRM_MODE_PAGE_FLIP_EVENT | 
DRM_MODE_PAGE_FLIP_TARGET_RELATIVE;
-               return drmModePageFlipTarget(drmmode->fd,
+               return drmModePageFlipTarget(pRADEONEnt->fd,
                                             drmmode_crtc->mode_crtc->crtc_id,
                                             fb_id, flags, (void*)drm_queue_seq,
                                             target_msc);
        }
 #endif
 
-       return drmmode_page_flip(drmmode_crtc, fb_id, flags, drm_queue_seq);
+       return drmmode_page_flip(pRADEONEnt, drmmode_crtc, fb_id, flags,
+                                drm_queue_seq);
 }
 
 Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int cpp)
@@ -2544,7 +2548,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, int cpp)
        xf86CrtcConfigInit(pScrn, &drmmode_xf86crtc_config_funcs);
 
        drmmode->scrn = pScrn;
-       mode_res = drmModeGetResources(drmmode->fd);
+       mode_res = drmModeGetResources(pRADEONEnt->fd);
        if (!mode_res)
                return FALSE;
 
@@ -2594,7 +2598,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, int cpp)
        drmmode->event_context.vblank_handler = radeon_drm_queue_handler;
        drmmode->event_context.page_flip_handler = radeon_drm_queue_handler;
 
-       pRADEONEnt->has_page_flip_target = 
drmmode_probe_page_flip_target(drmmode);
+       pRADEONEnt->has_page_flip_target = 
drmmode_probe_page_flip_target(pRADEONEnt);
 
        drmModeFreeResources(mode_res);
        return TRUE;
@@ -2611,11 +2615,11 @@ void drmmode_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode)
        info->drmmode_inited = TRUE;
        if (pRADEONEnt->fd_wakeup_registered != serverGeneration) {
 #if HAVE_NOTIFY_FD
-               SetNotifyFd(drmmode->fd, drm_notify_fd, X_NOTIFY_READ, drmmode);
+               SetNotifyFd(pRADEONEnt->fd, drm_notify_fd, X_NOTIFY_READ, 
pScrn);
 #else
-               AddGeneralSocket(drmmode->fd);
+               AddGeneralSocket(pRADEONEnt->fd);
                RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
-                               drm_wakeup_handler, drmmode);
+                               drm_wakeup_handler, pScrn);
 #endif
                pRADEONEnt->fd_wakeup_registered = serverGeneration;
                pRADEONEnt->fd_wakeup_ref = 1;
@@ -2636,11 +2640,11 @@ void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode)
        if (pRADEONEnt->fd_wakeup_registered == serverGeneration &&
            !--pRADEONEnt->fd_wakeup_ref) {
 #if HAVE_NOTIFY_FD
-               RemoveNotifyFd(drmmode->fd);
+               RemoveNotifyFd(pRADEONEnt->fd);
 #else
-               RemoveGeneralSocket(drmmode->fd);
+               RemoveGeneralSocket(pRADEONEnt->fd);
                RemoveBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
-                               drm_wakeup_handler, drmmode);
+                               drm_wakeup_handler, pScrn);
 #endif
        }
 
@@ -2682,6 +2686,7 @@ Bool drmmode_set_desired_modes(ScrnInfoPtr pScrn, 
drmmode_ptr drmmode,
                               Bool set_hw)
 {
        xf86CrtcConfigPtr   config = XF86_CRTC_CONFIG_PTR(pScrn);
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
        int c;
 
        for (c = 0; c < config->num_crtc; c++) {
@@ -2694,10 +2699,10 @@ Bool drmmode_set_desired_modes(ScrnInfoPtr pScrn, 
drmmode_ptr drmmode,
                if (!crtc->enabled) {
                        if (set_hw) {
                                drmmode_do_crtc_dpms(crtc, DPMSModeOff);
-                               drmModeSetCrtc(drmmode->fd,
+                               drmModeSetCrtc(pRADEONEnt->fd,
                                               drmmode_crtc->mode_crtc->crtc_id,
                                               0, 0, 0, NULL, 0, NULL);
-                               drmmode_fb_reference(drmmode->fd,
+                               drmmode_fb_reference(pRADEONEnt->fd,
                                                     &drmmode_crtc->fb, NULL);
                        }
                        continue;
@@ -2812,7 +2817,7 @@ radeon_mode_hotplug(ScrnInfoPtr scrn, drmmode_ptr drmmode)
        Bool changed = FALSE;
        int num_dvi = 0, num_hdmi = 0;
 
-       mode_res = drmModeGetResources(drmmode->fd);
+       mode_res = drmModeGetResources(pRADEONEnt->fd);
        if (!mode_res)
                goto out;
 
diff --git a/src/drmmode_display.h b/src/drmmode_display.h
index dde27a009..ba1a7bc89 100644
--- a/src/drmmode_display.h
+++ b/src/drmmode_display.h
@@ -40,7 +40,6 @@
 #endif
 
 typedef struct {
-  int fd;
   struct radeon_bo_manager *bufmgr;
   ScrnInfoPtr scrn;
 #ifdef HAVE_LIBUDEV
diff --git a/src/radeon.h b/src/radeon.h
index febe580b6..ca509561a 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -694,7 +694,9 @@ uint32_t radeon_get_pixmap_tiling(PixmapPtr pPix);
 static inline Bool radeon_set_pixmap_bo(PixmapPtr pPix, struct radeon_bo *bo)
 {
 #ifdef USE_GLAMOR
-    RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(pPix->drawable.pScreen));
+    ScrnInfoPtr scrn = xf86ScreenToScrn(pPix->drawable.pScreen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
+    RADEONInfoPtr info = RADEONPTR(scrn);
 
     if (info->use_glamor) {
        struct radeon_pixmap *priv;
@@ -711,7 +713,7 @@ static inline Bool radeon_set_pixmap_bo(PixmapPtr pPix, 
struct radeon_bo *bo)
                radeon_bo_unref(priv->bo);
            }
 
-           drmmode_fb_reference(info->drmmode.fd, &priv->fb, NULL);
+           drmmode_fb_reference(pRADEONEnt->fd, &priv->fb, NULL);
 
            if (!bo) {
                free(priv);
@@ -831,7 +833,9 @@ radeon_pixmap_create_fb(int drm_fd, PixmapPtr pix)
 static inline struct drmmode_fb*
 radeon_pixmap_get_fb(PixmapPtr pix)
 {
-    RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(pix->drawable.pScreen));
+    ScrnInfoPtr scrn = xf86ScreenToScrn(pix->drawable.pScreen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
+    RADEONInfoPtr info = RADEONPTR(scrn);
 
 #ifdef USE_GLAMOR
     if (info->use_glamor) {
@@ -841,7 +845,7 @@ radeon_pixmap_get_fb(PixmapPtr pix)
            return NULL;
 
        if (!priv->fb)
-           priv->fb = radeon_pixmap_create_fb(info->drmmode.fd, pix);
+           priv->fb = radeon_pixmap_create_fb(pRADEONEnt->fd, pix);
 
        return priv->fb;
     } else
@@ -855,7 +859,7 @@ radeon_pixmap_get_fb(PixmapPtr pix)
            return NULL;
 
        if (!driver_priv->fb)
-           driver_priv->fb = radeon_pixmap_create_fb(info->drmmode.fd, pix);
+           driver_priv->fb = radeon_pixmap_create_fb(pRADEONEnt->fd, pix);
 
        return driver_priv->fb;
     }
diff --git a/src/radeon_accel.c b/src/radeon_accel.c
index 1def2a3fb..fc80ed745 100644
--- a/src/radeon_accel.c
+++ b/src/radeon_accel.c
@@ -94,11 +94,11 @@
 
 static int RADEONDRMGetNumPipes(ScrnInfoPtr pScrn, int *num_pipes)
 {
-    RADEONInfoPtr info = RADEONPTR(pScrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     struct drm_radeon_info np2;
     np2.value = (unsigned long)num_pipes;
     np2.request = RADEON_INFO_NUM_GB_PIPES;
-    return drmCommandWriteRead(info->dri2.drm_fd, DRM_RADEON_INFO, &np2, 
sizeof(np2));
+    return drmCommandWriteRead(pRADEONEnt->fd, DRM_RADEON_INFO, &np2, 
sizeof(np2));
 }
 
 /* Initialize the acceleration hardware */
diff --git a/src/radeon_bo_helper.c b/src/radeon_bo_helper.c
index 933dc7b37..a8ba76185 100644
--- a/src/radeon_bo_helper.c
+++ b/src/radeon_bo_helper.c
@@ -201,7 +201,9 @@ Bool radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t 
*handle)
     struct radeon_bo *bo = radeon_get_pixmap_bo(pixmap);
 #ifdef USE_GLAMOR
     ScreenPtr screen = pixmap->drawable.pScreen;
-    RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(screen));
+    ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
+    RADEONInfoPtr info = RADEONPTR(scrn);
 #endif
 
     if (bo) {
@@ -230,7 +232,7 @@ Bool radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t 
*handle)
        if (fd < 0)
            return FALSE;
 
-       r = drmPrimeFDToHandle(info->dri2.drm_fd, fd, &priv->handle);
+       r = drmPrimeFDToHandle(pRADEONEnt->fd, fd, &priv->handle);
        close(fd);
        if (r == 0) {
            struct drm_radeon_gem_set_tiling args = { .handle = priv->handle };
@@ -238,7 +240,7 @@ Bool radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t 
*handle)
            priv->handle_valid = TRUE;
            *handle = priv->handle;
 
-           if (drmCommandWriteRead(info->dri2.drm_fd,
+           if (drmCommandWriteRead(pRADEONEnt->fd,
                                    DRM_RADEON_GEM_GET_TILING, &args,
                                    sizeof(args)) == 0)
                priv->tiling_flags = args.tiling_flags;
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index cc72bd52d..435bf5397 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -81,7 +81,7 @@ static DevPrivateKeyRec dri2_window_private_key_rec;
 
 /* Get GEM flink name for a pixmap */
 static Bool
-radeon_get_flink_name(RADEONInfoPtr info, PixmapPtr pixmap, uint32_t *name)
+radeon_get_flink_name(RADEONEntPtr pRADEONEnt, PixmapPtr pixmap, uint32_t 
*name)
 {
     struct radeon_bo *bo = radeon_get_pixmap_bo(pixmap);
     struct drm_gem_flink flink;
@@ -90,7 +90,7 @@ radeon_get_flink_name(RADEONInfoPtr info, PixmapPtr pixmap, 
uint32_t *name)
        return radeon_gem_get_kernel_name(bo, name) == 0;
 
     if (radeon_get_pixmap_handle(pixmap, &flink.handle)) {
-       if (drmIoctl(info->dri2.drm_fd, DRM_IOCTL_GEM_FLINK, &flink) != 0)
+       if (drmIoctl(pRADEONEnt->fd, DRM_IOCTL_GEM_FLINK, &flink) != 0)
            return FALSE;
 
        *name = flink.name;
@@ -107,6 +107,7 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen,
                           unsigned int format)
 {
     ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     RADEONInfoPtr info = RADEONPTR(pScrn);
     BufferPtr buffers;
     struct dri2_buffer_priv *privates;
@@ -253,7 +254,7 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen,
            pixmap->refcnt++;
        }
 
-       if (!radeon_get_flink_name(info, pixmap, &buffers->name))
+       if (!radeon_get_flink_name(pRADEONEnt, pixmap, &buffers->name))
            goto error;
     }
 
@@ -523,13 +524,13 @@ static Bool radeon_dri2_get_crtc_msc(xf86CrtcPtr crtc, 
CARD64 *ust, CARD64 *msc)
         drmmode_crtc_get_ust_msc(crtc, ust, msc) != Success) {
        /* CRTC is not running, extrapolate MSC and timestamp */
        ScrnInfoPtr scrn = crtc->scrn;
-       RADEONInfoPtr info = RADEONPTR(scrn);
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
        CARD64 now, delta_t, delta_seq;
 
        if (!drmmode_crtc->dpms_last_ust)
            return FALSE;
 
-       if (drmmode_get_current_ust(info->dri2.drm_fd, &now) != 0) {
+       if (drmmode_get_current_ust(pRADEONEnt->fd, &now) != 0) {
            xf86DrvMsg(scrn->scrnIndex, X_ERROR,
                       "%s cannot get current time\n", __func__);
            return FALSE;
@@ -689,7 +690,9 @@ static Bool
 update_front(DrawablePtr draw, DRI2BufferPtr front)
 {
     PixmapPtr pixmap;
-    RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(draw->pScreen));
+    ScrnInfoPtr scrn = xf86ScreenToScrn(draw->pScreen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
+    RADEONInfoPtr info = RADEONPTR(scrn);
     struct dri2_buffer_priv *priv = front->driverPrivate;
 
     pixmap = get_drawable_pixmap(draw);
@@ -697,7 +700,7 @@ update_front(DrawablePtr draw, DRI2BufferPtr front)
 
     if (!info->use_glamor)
        exaMoveInPixmap(pixmap);
-    if (!radeon_get_flink_name(info, pixmap, &front->name)) {
+    if (!radeon_get_flink_name(pRADEONEnt, pixmap, &front->name)) {
        (*draw->pScreen->DestroyPixmap)(pixmap);
        return FALSE;
     }
@@ -937,7 +940,7 @@ CARD32 radeon_dri2_extrapolate_msc_delay(xf86CrtcPtr crtc, 
CARD64 *target_msc,
 {
     drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
     ScrnInfoPtr pScrn = crtc->scrn;
-    RADEONInfoPtr info = RADEONPTR(pScrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     int nominal_frame_rate = drmmode_crtc->dpms_last_fps;
     CARD64 last_vblank_ust = drmmode_crtc->dpms_last_ust;
     uint32_t last_vblank_seq = drmmode_crtc->dpms_last_seq;
@@ -950,7 +953,7 @@ CARD32 radeon_dri2_extrapolate_msc_delay(xf86CrtcPtr crtc, 
CARD64 *target_msc,
        *target_msc = 0;
        return FALLBACK_SWAP_DELAY;
     }
-    ret = drmmode_get_current_ust(info->dri2.drm_fd, &now);
+    ret = drmmode_get_current_ust(pRADEONEnt->fd, &now);
     if (ret) {
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                   "%s cannot get current time\n", __func__);
@@ -1028,7 +1031,7 @@ CARD32 radeon_dri2_deferred_event(OsTimerPtr timer, 
CARD32 now, pointer data)
     DRI2FrameEventPtr event_info = (DRI2FrameEventPtr)data;
     xf86CrtcPtr crtc = event_info->crtc;
     ScrnInfoPtr scrn;
-    RADEONInfoPtr info;
+    RADEONEntPtr pRADEONEnt;
     CARD64 drm_now;
     int ret;
     CARD64 delta_t, delta_seq, frame;
@@ -1051,13 +1054,13 @@ CARD32 radeon_dri2_deferred_event(OsTimerPtr timer, 
CARD32 now, pointer data)
     }
 
     scrn = crtc->scrn;
-    info = RADEONPTR(scrn);
-    ret = drmmode_get_current_ust(info->dri2.drm_fd, &drm_now);
+    pRADEONEnt = RADEONEntPriv(scrn);
+    ret = drmmode_get_current_ust(pRADEONEnt->fd, &drm_now);
     if (ret) {
        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
                   "%s cannot get current time\n", __func__);
        if (event_info->drm_queue_seq)
-           radeon_drm_queue_handler(info->dri2.drm_fd, 0, 0, 0,
+           radeon_drm_queue_handler(pRADEONEnt->fd, 0, 0, 0,
                                     (void*)event_info->drm_queue_seq);
        else
            radeon_dri2_frame_event_handler(crtc, 0, 0, data);
@@ -1073,7 +1076,7 @@ CARD32 radeon_dri2_deferred_event(OsTimerPtr timer, 
CARD32 now, pointer data)
     delta_seq /= 1000000;
     frame = (CARD64)drmmode_crtc->dpms_last_seq + delta_seq;
     if (event_info->drm_queue_seq)
-       radeon_drm_queue_handler(info->dri2.drm_fd, frame, drm_now / 1000000,
+       radeon_drm_queue_handler(pRADEONEnt->fd, frame, drm_now / 1000000,
                                 drm_now % 1000000,
                                 (void*)event_info->drm_queue_seq);
     else
@@ -1104,7 +1107,7 @@ static int radeon_dri2_schedule_wait_msc(ClientPtr 
client, DrawablePtr draw,
 {
     ScreenPtr screen = draw->pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-    RADEONInfoPtr info = RADEONPTR(scrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
     DRI2FrameEventPtr wait_info = NULL;
     uintptr_t drm_queue_seq = 0;
     xf86CrtcPtr crtc = radeon_dri2_drawable_crtc(draw, TRUE);
@@ -1152,7 +1155,7 @@ static int radeon_dri2_schedule_wait_msc(ClientPtr 
client, DrawablePtr draw,
     vbl.request.type = DRM_VBLANK_RELATIVE;
     vbl.request.type |= radeon_populate_vbl_request_type(crtc);
     vbl.request.sequence = 0;
-    ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+    ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
     if (ret) {
         xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                 "get vblank counter failed: %s\n", strerror(errno));
@@ -1190,7 +1193,7 @@ static int radeon_dri2_schedule_wait_msc(ClientPtr 
client, DrawablePtr draw,
        vbl.request.type |= radeon_populate_vbl_request_type(crtc);
         vbl.request.sequence = target_msc - msc_delta;
         vbl.request.signal = drm_queue_seq;
-        ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+        ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
         if (ret) {
             xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                     "get vblank counter failed: %s\n", strerror(errno));
@@ -1221,7 +1224,7 @@ static int radeon_dri2_schedule_wait_msc(ClientPtr 
client, DrawablePtr draw,
         vbl.request.sequence += divisor;
 
     vbl.request.signal = drm_queue_seq;
-    ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+    ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
     if (ret) {
         xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                 "get vblank counter failed: %s\n", strerror(errno));
@@ -1266,7 +1269,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, 
DrawablePtr draw,
 {
     ScreenPtr screen = draw->pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-    RADEONInfoPtr info = RADEONPTR(scrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
     xf86CrtcPtr crtc = radeon_dri2_drawable_crtc(draw, TRUE);
     uint32_t msc_delta;
     drmVBlank vbl;
@@ -1339,7 +1342,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, 
DrawablePtr draw,
     vbl.request.type = DRM_VBLANK_RELATIVE;
     vbl.request.type |= radeon_populate_vbl_request_type(crtc);
     vbl.request.sequence = 0;
-    ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+    ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
     if (ret) {
         xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                 "first get vblank counter failed: %s\n",
@@ -1387,7 +1390,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, 
DrawablePtr draw,
 
         vbl.request.sequence = *target_msc - msc_delta;
         vbl.request.signal = drm_queue_seq;
-        ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+        ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
         if (ret) {
             xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                     "divisor 0 get vblank counter failed: %s\n",
@@ -1432,7 +1435,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, 
DrawablePtr draw,
     vbl.request.sequence -= flip;
 
     vbl.request.signal = drm_queue_seq;
-    ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+    ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
     if (ret) {
         xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                 "final get vblank counter failed: %s\n",
@@ -1475,6 +1478,7 @@ Bool
 radeon_dri2_screen_init(ScreenPtr pScreen)
 {
     ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     RADEONInfoPtr info = RADEONPTR(pScrn);
     DRI2InfoRec dri2_info = { 0 };
     const char *driverNames[2];
@@ -1483,7 +1487,7 @@ radeon_dri2_screen_init(ScreenPtr pScreen)
     if (!info->dri2.available)
         return FALSE;
 
-    info->dri2.device_name = drmGetDeviceNameFromFd(info->dri2.drm_fd);
+    info->dri2.device_name = drmGetDeviceNameFromFd(pRADEONEnt->fd);
 
     if ( (info->ChipFamily >= CHIP_FAMILY_TAHITI) ) {
         dri2_info.driverName = SI_DRIVER_NAME;
@@ -1496,7 +1500,7 @@ radeon_dri2_screen_init(ScreenPtr pScreen)
     } else {
         dri2_info.driverName = RADEON_DRIVER_NAME;
     }
-    dri2_info.fd = info->dri2.drm_fd;
+    dri2_info.fd = pRADEONEnt->fd;
     dri2_info.deviceName = info->dri2.device_name;
     dri2_info.version = DRI2INFOREC_VERSION;
     dri2_info.CreateBuffer = radeon_dri2_create_buffer;
@@ -1513,7 +1517,7 @@ radeon_dri2_screen_init(ScreenPtr pScreen)
 #ifdef DRM_CAP_VBLANK_HIGH_CRTC
        uint64_t cap_value;
 
-       if (drmGetCap(info->dri2.drm_fd, DRM_CAP_VBLANK_HIGH_CRTC, &cap_value)) 
{
+       if (drmGetCap(pRADEONEnt->fd, DRM_CAP_VBLANK_HIGH_CRTC, &cap_value)) {
            xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "You need a newer kernel "
                       "for VBLANKs on CRTC > 1\n");
            scheduling_works = FALSE;
diff --git a/src/radeon_dri2.h b/src/radeon_dri2.h
index 9ba47c78f..4d3f377b4 100644
--- a/src/radeon_dri2.h
+++ b/src/radeon_dri2.h
@@ -31,7 +31,6 @@
 
 struct radeon_dri2 {
     drmVersionPtr     pKernelDRMVersion;
-    int         drm_fd;
     Bool        available;
     Bool        enabled;
     char       *device_name;
diff --git a/src/radeon_dri3.c b/src/radeon_dri3.c
index fa24abaee..3e689ffd7 100644
--- a/src/radeon_dri3.c
+++ b/src/radeon_dri3.c
@@ -43,6 +43,7 @@
 static int open_master_node(ScreenPtr screen, int *out)
 {
        ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
        RADEONInfoPtr info = RADEONPTR(scrn);
        drm_magic_t magic;
        int fd;
@@ -76,7 +77,7 @@ static int open_master_node(ScreenPtr screen, int *out)
                }
        }
 
-       if (drmAuthMagic(info->dri2.drm_fd, magic) < 0) {
+       if (drmAuthMagic(pRADEONEnt->fd, magic) < 0) {
                close(fd);
                return BadMatch;
        }
diff --git a/src/radeon_exa.c b/src/radeon_exa.c
index d8dd7fdce..d362e5d9b 100644
--- a/src/radeon_exa.c
+++ b/src/radeon_exa.c
@@ -300,7 +300,7 @@ void *RADEONEXACreatePixmap2(ScreenPtr pScreen, int width, 
int height,
 
 void RADEONEXADestroyPixmap(ScreenPtr pScreen, void *driverPriv)
 {
-    RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(pScreen));
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(xf86ScreenToScrn(pScreen));
     struct radeon_exa_pixmap_priv *driver_priv = driverPriv;
 
     if (!driverPriv)
@@ -308,7 +308,7 @@ void RADEONEXADestroyPixmap(ScreenPtr pScreen, void 
*driverPriv)
 
     if (driver_priv->bo)
        radeon_bo_unref(driver_priv->bo);
-    drmmode_fb_reference(info->drmmode.fd, &driver_priv->fb, NULL);
+    drmmode_fb_reference(pRADEONEnt->fd, &driver_priv->fb, NULL);
     free(driverPriv);
 }
 
diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c
index e5e35553a..01ff56094 100644
--- a/src/radeon_glamor.c
+++ b/src/radeon_glamor.c
@@ -74,6 +74,7 @@ radeon_glamor_create_screen_resources(ScreenPtr screen)
 Bool
 radeon_glamor_pre_init(ScrnInfoPtr scrn)
 {
+       RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
        RADEONInfoPtr info = RADEONPTR(scrn);
        pointer glamor_module;
        CARD32 version;
@@ -135,7 +136,7 @@ radeon_glamor_pre_init(ScrnInfoPtr scrn)
                        "Incompatible glamor version, required >= 0.3.0.\n");
                        return FALSE;
                } else {
-                       if (glamor_egl_init(scrn, info->dri2.drm_fd)) {
+                       if (glamor_egl_init(scrn, pRADEONEnt->fd)) {
                                xf86DrvMsg(scrn->scrnIndex, X_INFO,
                                           "glamor detected, initialising EGL 
layer.\n");
                        } else {
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 691fcdf5b..3f14b4620 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -187,6 +187,7 @@ static Bool RADEONGetRec(ScrnInfoPtr pScrn)
 /* Free our private RADEONInfoRec */
 static void RADEONFreeRec(ScrnInfoPtr pScrn)
 {
+    RADEONEntPtr pRADEONEnt;
     RADEONInfoPtr  info;
 
     if (!pScrn || !pScrn->driverPrivate) return;
@@ -196,7 +197,9 @@ static void RADEONFreeRec(ScrnInfoPtr pScrn)
     if (info->fbcon_pixmap)
        pScrn->pScreen->DestroyPixmap(info->fbcon_pixmap);
 
-    if (info->dri2.drm_fd > 0) {
+    pRADEONEnt = RADEONEntPriv(pScrn);
+
+    if (pRADEONEnt->fd > 0) {
         DevUnion *pPriv;
         RADEONEntPtr pRADEONEnt;
         pPriv = xf86GetEntityPrivate(pScrn->entityList[0],
@@ -719,6 +722,7 @@ radeon_prime_scanout_update(PixmapDirtyUpdatePtr dirty)
 {
     ScreenPtr screen = dirty->slave_dst->drawable.pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
     xf86CrtcPtr xf86_crtc = radeon_prime_dirty_to_crtc(dirty);
     drmmode_crtc_private_ptr drmmode_crtc;
     uintptr_t drm_queue_seq;
@@ -748,7 +752,7 @@ radeon_prime_scanout_update(PixmapDirtyUpdatePtr dirty)
     vbl.request.type |= radeon_populate_vbl_request_type(xf86_crtc);
     vbl.request.sequence = 1;
     vbl.request.signal = drm_queue_seq;
-    if (drmWaitVBlank(RADEONPTR(scrn)->dri2.drm_fd, &vbl)) {
+    if (drmWaitVBlank(pRADEONEnt->fd, &vbl)) {
        xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                   "drmWaitVBlank failed for PRIME update: %s\n",
                   strerror(errno));
@@ -772,9 +776,10 @@ static void
 radeon_prime_scanout_flip_handler(xf86CrtcPtr crtc, uint32_t msc, uint64_t 
usec,
                                  void *event_data)
 {
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
     drmmode_crtc_private_ptr drmmode_crtc = event_data;
 
-    drmmode_fb_reference(drmmode_crtc->drmmode->fd, &drmmode_crtc->fb,
+    drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb,
                         drmmode_crtc->flip_pending);
     radeon_prime_scanout_flip_abort(crtc, event_data);
 }
@@ -1012,6 +1017,7 @@ static void
 radeon_scanout_update(xf86CrtcPtr xf86_crtc)
 {
     drmmode_crtc_private_ptr drmmode_crtc = xf86_crtc->driver_private;
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(xf86_crtc->scrn);
     uintptr_t drm_queue_seq;
     ScrnInfoPtr scrn;
     drmVBlank vbl;
@@ -1056,7 +1062,7 @@ radeon_scanout_update(xf86CrtcPtr xf86_crtc)
     vbl.request.type |= radeon_populate_vbl_request_type(xf86_crtc);
     vbl.request.sequence = 1;
     vbl.request.signal = drm_queue_seq;
-    if (drmWaitVBlank(RADEONPTR(scrn)->dri2.drm_fd, &vbl)) {
+    if (drmWaitVBlank(pRADEONEnt->fd, &vbl)) {
        xf86DrvMsg(scrn->scrnIndex, X_WARNING,
                   "drmWaitVBlank failed for scanout update: %s\n",
                   strerror(errno));
@@ -1136,6 +1142,7 @@ static void RADEONBlockHandler_KMS(BLOCKHANDLER_ARGS_DECL)
 {
     SCREEN_PTR(arg);
     ScrnInfoPtr    pScrn   = xf86ScreenToScrn(pScreen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     RADEONInfoPtr  info    = RADEONPTR(pScrn);
     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
     int c;
@@ -1151,7 +1158,7 @@ static void RADEONBlockHandler_KMS(BLOCKHANDLER_ARGS_DECL)
            drmmode_crtc_private_ptr drmmode_crtc =
                xf86_config->crtc[c]->driver_private;
 
-           drmmode_fb_reference(info->drmmode.fd, &drmmode_crtc->fb, NULL);
+           drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb, NULL);
        }
 
        return;
@@ -1183,7 +1190,7 @@ static void RADEONBlockHandler_KMS(BLOCKHANDLER_ARGS_DECL)
 
 static Bool RADEONIsFastFBWorking(ScrnInfoPtr pScrn)
 {
-    RADEONInfoPtr info = RADEONPTR(pScrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     struct drm_radeon_info ginfo;
     int r;
     uint32_t tmp = 0;
@@ -1191,7 +1198,7 @@ static Bool RADEONIsFastFBWorking(ScrnInfoPtr pScrn)
     memset(&ginfo, 0, sizeof(ginfo));
     ginfo.request = RADEON_INFO_FASTFB_WORKING;
     ginfo.value = (uintptr_t)&tmp;
-    r = drmCommandWriteRead(info->dri2.drm_fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
+    r = drmCommandWriteRead(pRADEONEnt->fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
     if (r) {
        return FALSE;
     }
@@ -1202,7 +1209,7 @@ static Bool RADEONIsFastFBWorking(ScrnInfoPtr pScrn)
 
 static Bool RADEONIsFusionGARTWorking(ScrnInfoPtr pScrn)
 {
-    RADEONInfoPtr info = RADEONPTR(pScrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     struct drm_radeon_info ginfo;
     int r;
     uint32_t tmp;
@@ -1210,7 +1217,7 @@ static Bool RADEONIsFusionGARTWorking(ScrnInfoPtr pScrn)
     memset(&ginfo, 0, sizeof(ginfo));
     ginfo.request = RADEON_INFO_FUSION_GART_WORKING;
     ginfo.value = (uintptr_t)&tmp;
-    r = drmCommandWriteRead(info->dri2.drm_fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
+    r = drmCommandWriteRead(pRADEONEnt->fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
     if (r) {
        return FALSE;
     }
@@ -1221,6 +1228,7 @@ static Bool RADEONIsFusionGARTWorking(ScrnInfoPtr pScrn)
 
 static Bool RADEONIsAccelWorking(ScrnInfoPtr pScrn)
 {
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     RADEONInfoPtr info = RADEONPTR(pScrn);
     struct drm_radeon_info ginfo;
     int r;
@@ -1232,7 +1240,7 @@ static Bool RADEONIsAccelWorking(ScrnInfoPtr pScrn)
     else
        ginfo.request = RADEON_INFO_ACCEL_WORKING;
     ginfo.value = (uintptr_t)&tmp;
-    r = drmCommandWriteRead(info->dri2.drm_fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
+    r = drmCommandWriteRead(pRADEONEnt->fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
     if (r) {
         /* If kernel is too old before 2.6.32 than assume accel is working */
         if (r == -EINVAL) {
@@ -1470,7 +1478,6 @@ static int radeon_get_drm_master_fd(ScrnInfoPtr pScrn)
 
 static Bool radeon_open_drm_master(ScrnInfoPtr pScrn)
 {
-    RADEONInfoPtr  info   = RADEONPTR(pScrn);
     RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     drmSetVersion sv;
     int err;
@@ -1478,14 +1485,12 @@ static Bool radeon_open_drm_master(ScrnInfoPtr pScrn)
     if (pRADEONEnt->fd) {
        xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                   " reusing fd for second head\n");
-
-       info->drmmode.fd = info->dri2.drm_fd = pRADEONEnt->fd;
        pRADEONEnt->fd_ref++;
         return TRUE;
     }
 
-    info->dri2.drm_fd = radeon_get_drm_master_fd(pScrn);
-    if (info->dri2.drm_fd == -1)
+    pRADEONEnt->fd = radeon_get_drm_master_fd(pScrn);
+    if (pRADEONEnt->fd == -1)
        return FALSE;
 
     /* Check that what we opened was a master or a master-capable FD,
@@ -1496,24 +1501,23 @@ static Bool radeon_open_drm_master(ScrnInfoPtr pScrn)
     sv.drm_di_minor = 1;
     sv.drm_dd_major = -1;
     sv.drm_dd_minor = -1;
-    err = drmSetInterfaceVersion(info->dri2.drm_fd, &sv);
+    err = drmSetInterfaceVersion(pRADEONEnt->fd, &sv);
     if (err != 0) {
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                   "[drm] failed to set drm interface version.\n");
-       drmClose(info->dri2.drm_fd);
-       info->dri2.drm_fd = -1;
+       drmClose(pRADEONEnt->fd);
+       pRADEONEnt->fd = -1;
 
        return FALSE;
     }
 
-    pRADEONEnt->fd = info->dri2.drm_fd;
     pRADEONEnt->fd_ref = 1;
-    info->drmmode.fd = info->dri2.drm_fd;
     return TRUE;
 }
 
 static Bool r600_get_tile_config(ScrnInfoPtr pScrn)
 {
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     RADEONInfoPtr  info   = RADEONPTR(pScrn);
     struct drm_radeon_info ginfo;
     int r;
@@ -1525,7 +1529,7 @@ static Bool r600_get_tile_config(ScrnInfoPtr pScrn)
     memset(&ginfo, 0, sizeof(ginfo));
     ginfo.request = RADEON_INFO_TILING_CONFIG;
     ginfo.value = (uintptr_t)&tmp;
-    r = drmCommandWriteRead(info->dri2.drm_fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
+    r = drmCommandWriteRead(pRADEONEnt->fd, DRM_RADEON_INFO, &ginfo, 
sizeof(ginfo));
     if (r)
        return FALSE;
 
@@ -1622,6 +1626,7 @@ static Bool r600_get_tile_config(ScrnInfoPtr pScrn)
 static void RADEONSetupCapabilities(ScrnInfoPtr pScrn)
 {
 #ifdef RADEON_PIXMAP_SHARING
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     RADEONInfoPtr  info = RADEONPTR(pScrn);
     uint64_t value;
     int ret;
@@ -1632,7 +1637,7 @@ static void RADEONSetupCapabilities(ScrnInfoPtr pScrn)
     if (info->r600_shadow_fb)
        return;
 
-    ret = drmGetCap(info->dri2.drm_fd, DRM_CAP_PRIME, &value);
+    ret = drmGetCap(pRADEONEnt->fd, DRM_CAP_PRIME, &value);
     if (ret == 0) {
        if (value & DRM_PRIME_CAP_EXPORT)
            pScrn->capabilities |= RR_Capability_SourceOutput | 
RR_Capability_SourceOffload;
@@ -1770,7 +1775,7 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
 
     info->dri2.available = FALSE;
     info->dri2.enabled = FALSE;
-    info->dri2.pKernelDRMVersion = drmGetVersion(info->dri2.drm_fd);
+    info->dri2.pKernelDRMVersion = drmGetVersion(pRADEONEnt->fd);
     if (info->dri2.pKernelDRMVersion == NULL) {
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                   "RADEONDRIGetVersion failed to get the DRM version\n");
@@ -1935,7 +1940,7 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
     {
        struct drm_radeon_gem_info mminfo;
 
-       if (!drmCommandWriteRead(info->dri2.drm_fd, DRM_RADEON_GEM_INFO, 
&mminfo, sizeof(mminfo)))
+       if (!drmCommandWriteRead(pRADEONEnt->fd, DRM_RADEON_GEM_INFO, &mminfo, 
sizeof(mminfo)))
        {
            info->vram_size = mminfo.vram_visible;
            info->gart_size = mminfo.gart_size;
@@ -2075,10 +2080,7 @@ static Bool RADEONSaveScreen_KMS(ScreenPtr pScreen, int 
mode)
 
 static Bool radeon_set_drm_master(ScrnInfoPtr pScrn)
 {
-    RADEONInfoPtr  info  = RADEONPTR(pScrn);
-#ifdef XF86_PDEV_SERVER_FD
     RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
-#endif
     int err;
 
 #ifdef XF86_PDEV_SERVER_FD
@@ -2087,7 +2089,7 @@ static Bool radeon_set_drm_master(ScrnInfoPtr pScrn)
         return TRUE;
 #endif
 
-    err = drmSetMaster(info->dri2.drm_fd);
+    err = drmSetMaster(pRADEONEnt->fd);
     if (err)
         ErrorF("Unable to retrieve master\n");
 
@@ -2096,16 +2098,15 @@ static Bool radeon_set_drm_master(ScrnInfoPtr pScrn)
 
 static void radeon_drop_drm_master(ScrnInfoPtr pScrn)
 {
-    RADEONInfoPtr  info  = RADEONPTR(pScrn);
-#ifdef XF86_PDEV_SERVER_FD
     RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
 
+#ifdef XF86_PDEV_SERVER_FD
     if (pRADEONEnt->platform_dev &&
             (pRADEONEnt->platform_dev->flags & XF86_PDEV_SERVER_FD))
         return;
 #endif
 
-    drmDropMaster(info->dri2.drm_fd);
+    drmDropMaster(pRADEONEnt->fd);
 }
 
 /* Called at the end of each server generation.  Restore the original
@@ -2177,6 +2178,7 @@ void RADEONFreeScreen_KMS(FREE_SCREEN_ARGS_DECL)
 Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
 {
     ScrnInfoPtr    pScrn = xf86ScreenToScrn(pScreen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
     RADEONInfoPtr  info  = RADEONPTR(pScrn);
     int            subPixelOrder = SubPixelUnknown;
     MessageType from;
@@ -2201,9 +2203,9 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
     if (info->r600_shadow_fb == FALSE)
         info->directRenderingEnabled = radeon_dri2_screen_init(pScreen);
 
-    info->surf_man = radeon_surface_manager_new(info->dri2.drm_fd);
+    info->surf_man = radeon_surface_manager_new(pRADEONEnt->fd);
     if (!info->bufmgr)
-        info->bufmgr = radeon_bo_manager_gem_ctor(info->dri2.drm_fd);
+        info->bufmgr = radeon_bo_manager_gem_ctor(pRADEONEnt->fd);
     if (!info->bufmgr) {
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                   "failed to initialise GEM buffer manager");
@@ -2212,7 +2214,7 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
     drmmode_set_bufmgr(pScrn, &info->drmmode, info->bufmgr);
 
     if (!info->csm)
-        info->csm = radeon_cs_manager_gem_ctor(info->dri2.drm_fd);
+        info->csm = radeon_cs_manager_gem_ctor(pRADEONEnt->fd);
     if (!info->csm) {
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                   "failed to initialise command submission manager");
diff --git a/src/radeon_present.c b/src/radeon_present.c
index 635d10861..e637d7868 100644
--- a/src/radeon_present.c
+++ b/src/radeon_present.c
@@ -105,10 +105,11 @@ static Bool
 radeon_present_flush_drm_events(ScreenPtr screen)
 {
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
     drmmode_crtc_private_ptr drmmode_crtc = 
xf86_config->crtc[0]->driver_private;
     drmmode_ptr drmmode = drmmode_crtc->drmmode;
-    struct pollfd p = { .fd = drmmode->fd, .events = POLLIN };
+    struct pollfd p = { .fd = pRADEONEnt->fd, .events = POLLIN };
     int r;
 
     do {
@@ -118,7 +119,7 @@ radeon_present_flush_drm_events(ScreenPtr screen)
     if (r <= 0)
        return 0;
 
-    return drmHandleEvent(drmmode->fd, &drmmode->event_context) >= 0;
+    return drmHandleEvent(pRADEONEnt->fd, &drmmode->event_context) >= 0;
 }
 
 /*
@@ -155,7 +156,7 @@ radeon_present_queue_vblank(RRCrtcPtr crtc, uint64_t 
event_id, uint64_t msc)
     xf86CrtcPtr xf86_crtc = crtc->devPrivate;
     ScreenPtr screen = crtc->pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-    RADEONInfoPtr info = RADEONPTR(scrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
     int crtc_id = drmmode_get_crtc_id(xf86_crtc);
     struct radeon_present_vblank_event *event;
     uintptr_t drm_queue_seq;
@@ -180,7 +181,7 @@ radeon_present_queue_vblank(RRCrtcPtr crtc, uint64_t 
event_id, uint64_t msc)
     vbl.request.sequence = msc;
     vbl.request.signal = drm_queue_seq;
     for (;;) {
-       ret = drmWaitVBlank(info->dri2.drm_fd, &vbl);
+       ret = drmWaitVBlank(pRADEONEnt->fd, &vbl);
        if (!ret)
            break;
        if (errno != EBUSY || !radeon_present_flush_drm_events(screen)) {
@@ -435,11 +436,11 @@ radeon_present_has_async_flip(ScreenPtr screen)
 {
 #ifdef DRM_CAP_ASYNC_PAGE_FLIP
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-    RADEONInfoPtr info = RADEONPTR(scrn);
+    RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
     int ret;
     uint64_t value;
 
-    ret = drmGetCap(info->dri2.drm_fd, DRM_CAP_ASYNC_PAGE_FLIP, &value);
+    ret = drmGetCap(pRADEONEnt->fd, DRM_CAP_ASYNC_PAGE_FLIP, &value);
     if (ret == 0)
        return value == 1;
 #endif
-- 
2.13.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to