From 0f03f7b4359fcbcde651bc1554ddff4fe10bc53b Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 13 Jul 2012 10:35:27 +0100 Subject: [PATCH] sna: Only try to enable DRI2 if the module is available at runtime Blatantly cribbed from Michel Danzer's patch for ati... Signed-off-by: Chris Wilson --- src/sna/sna.h | 3 ++- src/sna/sna_driver.c | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/sna/sna.h b/src/sna/sna.h index abb010ce..01e256ab 100644 --- a/src/sna/sna.h +++ b/src/sna/sna.h @@ -252,7 +252,8 @@ struct sna { } render_state; uint32_t have_render; - Bool directRenderingOpen; + bool dri_available; + bool dri_open; char *deviceName; /* Broken-out options. */ diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c index 14339718..0eefa359 100644 --- a/src/sna/sna_driver.c +++ b/src/sna/sna_driver.c @@ -549,8 +549,7 @@ static Bool sna_pre_init(ScrnInfoPtr scrn, int flags) /* Set display resolution */ xf86SetDpi(scrn, 0, 0); - /* Load the dri2 module if requested. */ - xf86LoadSubModule(scrn, "dri2"); + sna->dri_available = !!xf86LoadSubModule(scrn, "dri2"); return TRUE; } @@ -767,9 +766,9 @@ static Bool sna_close_screen(CLOSE_SCREEN_ARGS_DECL) free(screen->visuals); - if (sna->directRenderingOpen) { + if (sna->dri_open) { sna_dri_close(sna, screen); - sna->directRenderingOpen = FALSE; + sna->dri_open = false; } if (sna->front) { @@ -941,8 +940,9 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL) xf86DPMSInit(screen, xf86DPMSSet, 0); sna_video_init(sna, screen); - sna->directRenderingOpen = sna_dri_open(sna, screen); - if (sna->directRenderingOpen) + if (sna->dri_available) + sna->dri_open = sna_dri_open(sna, screen); + if (sna->dri_open) xf86DrvMsg(scrn->scrnIndex, X_INFO, "direct rendering: DRI2 Enabled\n");