summaryrefslogtreecommitdiff
path: root/xc/lib/GL/mesa/src/drv/mach64/mach64_screen.c
diff options
context:
space:
mode:
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.c19
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" );