summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gallium/state_trackers/xorg/xorg_driver.c18
-rw-r--r--src/gallium/state_trackers/xorg/xorg_tracker.h2
2 files changed, 17 insertions, 3 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c
index 6b6e2009fe..a7e57634ae 100644
--- a/src/gallium/state_trackers/xorg/xorg_driver.c
+++ b/src/gallium/state_trackers/xorg/xorg_driver.c
@@ -80,7 +80,8 @@ typedef enum
OPTION_2D_ACCEL,
OPTION_DEBUG_FALLBACK,
OPTION_THROTTLE_SWAP,
- OPTION_THROTTLE_DIRTY
+ OPTION_THROTTLE_DIRTY,
+ OPTION_3D_ACCEL
} drv_option_enums;
static const OptionInfoRec drv_options[] = {
@@ -89,6 +90,7 @@ static const OptionInfoRec drv_options[] = {
{OPTION_DEBUG_FALLBACK, "DebugFallback", OPTV_BOOLEAN, {0}, FALSE},
{OPTION_THROTTLE_SWAP, "SwapThrottling", OPTV_BOOLEAN, {0}, FALSE},
{OPTION_THROTTLE_DIRTY, "DirtyThrottling", OPTV_BOOLEAN, {0}, FALSE},
+ {OPTION_3D_ACCEL, "3DAccel", OPTV_BOOLEAN, {0}, FALSE},
{-1, NULL, OPTV_NONE, {0}, FALSE}
};
@@ -315,7 +317,8 @@ drv_init_resource_management(ScrnInfoPtr pScrn)
return TRUE;
if (ms->api) {
- ms->screen = ms->api->create_screen(ms->api, ms->fd);
+ ms->screen = ms->no3D ? NULL :
+ ms->api->create_screen(ms->api, ms->fd);
if (ms->screen)
return TRUE;
@@ -646,12 +649,21 @@ drv_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
CustomizerPtr cust = ms->cust;
MessageType from_st;
MessageType from_dt;
+ MessageType from_3D;
+ Bool use3D;
if (!drv_init_drm(pScrn)) {
FatalError("Could not init DRM");
return FALSE;
}
+ use3D = cust ? !cust->no_3d : TRUE;
+ from_3D = xf86GetOptValBool(ms->Options, OPTION_3D_ACCEL,
+ &use3D) ?
+ X_CONFIG : X_PROBED;
+
+ ms->no3D = !use3D;
+
if (!drv_init_resource_management(pScrn)) {
FatalError("Could not init resource management (!pipe_screen && !libkms)");
return FALSE;
@@ -764,7 +776,7 @@ drv_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Fallback debugging is %s\n",
ms->debug_fallback ? "enabled" : "disabled");
#ifdef DRI2
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "3D Acceleration is %s\n",
+ xf86DrvMsg(pScrn->scrnIndex, from_3D, "3D Acceleration is %s\n",
ms->screen ? "enabled" : "disabled");
#else
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "3D Acceleration is disabled\n");
diff --git a/src/gallium/state_trackers/xorg/xorg_tracker.h b/src/gallium/state_trackers/xorg/xorg_tracker.h
index 25da9b1a3b..df56ad1b15 100644
--- a/src/gallium/state_trackers/xorg/xorg_tracker.h
+++ b/src/gallium/state_trackers/xorg/xorg_tracker.h
@@ -76,6 +76,7 @@ typedef struct _CustomizerRec
{
Bool dirty_throttling;
Bool swap_throttling;
+ Bool no_3d;
Bool (*winsys_screen_init)(struct _CustomizerRec *cust, int fd);
Bool (*winsys_screen_close)(struct _CustomizerRec *cust);
Bool (*winsys_enter_vt)(struct _CustomizerRec *cust);
@@ -104,6 +105,7 @@ typedef struct _modesettingRec
Bool swapThrottling;
Bool dirtyThrottling;
CloseScreenProcPtr CloseScreen;
+ Bool no3D;
/* Broken-out options. */
OptionInfoPtr Options;