diff options
Diffstat (limited to 'xc/lib/GL/mesa/src/drv/mach64/mach64_screen.c')
-rw-r--r-- | xc/lib/GL/mesa/src/drv/mach64/mach64_screen.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/xc/lib/GL/mesa/src/drv/mach64/mach64_screen.c b/xc/lib/GL/mesa/src/drv/mach64/mach64_screen.c index 4a9c3a233..2ed4b21ac 100644 --- a/xc/lib/GL/mesa/src/drv/mach64/mach64_screen.c +++ b/xc/lib/GL/mesa/src/drv/mach64/mach64_screen.c @@ -54,6 +54,22 @@ mach64CreateScreen( __DRIscreenPrivate *driScreen ) mach64Screen->IsPCI = serverInfo->IsPCI; + { + drmMach64GetParam gp; + int ret; + + gp.param = MACH64_PARAM_IRQ_NR; + gp.value = &mach64Screen->irq; + + ret = drmCommandWriteRead( driScreen->fd, DRM_MACH64_GETPARAM, + &gp, sizeof(gp)); + if (ret) { + fprintf(stderr, "DRM_MACH64_GETPARAM (MACH64_PARAM_IRQ_NR): %d\n", ret); + FREE( mach64Screen ); + return NULL; + } + } + mach64Screen->mmio.handle = serverInfo->regs; mach64Screen->mmio.size = serverInfo->regsSize; if ( drmMap( driScreen->fd, @@ -137,6 +153,9 @@ mach64DestroyScreen( __DRIscreenPrivate *driScreen ) { mach64ScreenRec *mach64Screen = (mach64ScreenRec *) driScreen->private; + if ( !mach64Screen ) + return; + if ( MACH64_DEBUG & DEBUG_VERBOSE_DRI ) fprintf( stderr, "mach64DestroyScreen\n" ); |