summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fbdev.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/fbdev.c b/src/fbdev.c
index f5a7378..a73565f 100644
--- a/src/fbdev.c
+++ b/src/fbdev.c
@@ -38,6 +38,9 @@
#include <pciaccess.h>
#endif
+/* for xf86{Depth,FbBpp}. i am a terrible person, and i am sorry. */
+#include "xf86Priv.h"
+
static Bool debug = 0;
#define TRACE_ENTER(str) \
@@ -427,6 +430,29 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(fPtr->pEnt->device->options,"fbdev")))
return FALSE;
default_depth = fbdevHWGetDepth(pScrn,&fbbpp);
+
+ if (default_depth == 8) do {
+ /* trust the command line */
+ if (xf86FbBpp > 0 || xf86Depth > 0)
+ break;
+
+ /* trust the config file's Screen stanza */
+ if (pScrn->confScreen->defaultfbbpp > 0 ||
+ pScrn->confScreen->defaultdepth > 0)
+ break;
+
+ /* trust our Device stanza in the config file */
+ if (xf86FindOption(fPtr->pEnt->device->options, "DefaultDepth") ||
+ xf86FindOption(fPtr->pEnt->device->options, "DefaultFbBpp"))
+ break;
+
+ /* otherwise, lol no */
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Console is 8bpp, defaulting to 32bpp\n");
+ default_depth = 24;
+ fbbpp = 32;
+ } while (0);
+
if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp,
Support24bppFb | Support32bppFb | SupportConvert32to24 | SupportConvert24to32))
return FALSE;