[PATCH] modesetting: Fix 16 bit depth/bpp mode

Stefan Agner stefan at agner.ch
Thu Dec 22 14:41:06 UTC 2016


When setting DefaultDepth to 16 in the Screen section, the current
code requests a 32 bpp framebuffer, however the X-Server seems to
assumes 16 bpp.

Fixes commit 21217d02168d ("modesetting: Implement 32->24 bpp
conversion in shadow update")

Signed-off-by: Stefan Agner <stefan at agner.ch>
---
Observed this issue using X-Server/modesetting 1.18.4 and the FSL
DCU DRM driver, but I am pretty sure it is driver independent. Not
sure if the change is properly taking care of the corner case which
was initially targetted, but it makes specifiying DefaultDepth with
values of 16/24/32 and not specifiying it work for me.

 hw/xfree86/drivers/modesetting/driver.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
index 14f80b36c..45804df05 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -832,7 +832,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
                    "Using 24bpp hw front buffer with 32bpp shadow\n");
         defaultbpp = 32;
     } else {
-        ms->drmmode.kbpp = defaultbpp;
+        ms->drmmode.kbpp = 0;
     }
     bppflags = PreferConvert24to32 | SupportConvert24to32 | Support32bppFb;
 
@@ -852,6 +852,8 @@ PreInit(ScrnInfoPtr pScrn, int flags)
         return FALSE;
     }
     xf86PrintDepthBpp(pScrn);
+    if (!ms->drmmode.kbpp)
+        ms->drmmode.kbpp = pScrn->bitsPerPixel;
 
     /* Process the options */
     xf86CollectOptions(pScrn, NULL);
-- 
2.11.0



More information about the xorg-devel mailing list