Hello community, here is the log from the commit of package xf86-video-fbdev for openSUSE:Factory checked in at 2018-05-25 21:35:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xf86-video-fbdev (Old) and /work/SRC/openSUSE:Factory/.xf86-video-fbdev.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xf86-video-fbdev" Fri May 25 21:35:27 2018 rev:11 rq:611660 version:0.4.4 Changes: -------- --- /work/SRC/openSUSE:Factory/xf86-video-fbdev/xf86-video-fbdev.changes 2017-06-04 01:45:20.698982697 +0200 +++ /work/SRC/openSUSE:Factory/.xf86-video-fbdev.new/xf86-video-fbdev.changes 2018-05-25 21:35:29.847914666 +0200 @@ -1,0 +2,14 @@ +Wed May 23 11:10:17 UTC 2018 - msta...@suse.com + +- Fix build with Xorg server 1.20 by updating to current Git. + +U_01-Default-to-32bpp-if-the-console-is-8bpp-and-we-weren-t-told-otherwise.patch +U_02-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch +U_03-Pass-the-pci-device-if-any-through-to-fbdevhw-in-probe-and-preinit.patch +U_04-Initialize-pci_dev.patch +U_05-Fix-shadow-fb-allocation-size-v2.patch +U_11-Remove-dead-pix24bpp-variable.patch +U_12-Use-shadowUpdate32to24-at-24bpp.patch +U_13-Use-ifdef-instead-of-if-to-avoid-build-error.patch + +------------------------------------------------------------------- New: ---- U_01-Default-to-32bpp-if-the-console-is-8bpp-and-we-weren-t-told-otherwise.patch U_02-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch U_03-Pass-the-pci-device-if-any-through-to-fbdevhw-in-probe-and-preinit.patch U_04-Initialize-pci_dev.patch U_05-Fix-shadow-fb-allocation-size-v2.patch U_11-Remove-dead-pix24bpp-variable.patch U_12-Use-shadowUpdate32to24-at-24bpp.patch U_13-Use-ifdef-instead-of-if-to-avoid-build-error.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xf86-video-fbdev.spec ++++++ --- /var/tmp/diff_new_pack.V34Ppi/_old 2018-05-25 21:35:30.791880502 +0200 +++ /var/tmp/diff_new_pack.V34Ppi/_new 2018-05-25 21:35:30.791880502 +0200 @@ -1,7 +1,7 @@ # # spec file for package xf86-video-fbdev # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,6 +24,14 @@ Group: System/X11/Servers/XF86_4 Url: http://xorg.freedesktop.org/ Source0: http://xorg.freedesktop.org/releases/individual/driver/%{name}-%{version}.tar.bz2 +Patch1: U_01-Default-to-32bpp-if-the-console-is-8bpp-and-we-weren-t-told-otherwise.patch +Patch2: U_02-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch +Patch3: U_03-Pass-the-pci-device-if-any-through-to-fbdevhw-in-probe-and-preinit.patch +Patch4: U_04-Initialize-pci_dev.patch +Patch5: U_05-Fix-shadow-fb-allocation-size-v2.patch +Patch11: U_11-Remove-dead-pix24bpp-variable.patch +Patch12: U_12-Use-shadowUpdate32to24-at-24bpp.patch +Patch13: U_13-Use-ifdef-instead-of-if-to-avoid-build-error.patch BuildRequires: pkg-config BuildRequires: pkgconfig(fontsproto) BuildRequires: pkgconfig(pciaccess) >= 0.8.0 @@ -51,6 +59,15 @@ %prep %setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 + %build %configure make %{?_smp_mflags} ++++++ U_01-Default-to-32bpp-if-the-console-is-8bpp-and-we-weren-t-told-otherwise.patch ++++++ From: Adam Jackson <a...@redhat.com> Date: Fri Mar 21 12:20:01 2014 -0400 Subject: [PATCH 1/13]Default to 32bpp if the console is 8bpp (and we weren't told otherwise) Patch-mainline: Upstream Git-repo: git://anongit.freedesktop.org/xorg/driver/xf86-video-fbdev Git-commit: dd1cf1028c3f0de77d075c4a169011518baab0f4 References: Signed-off-by: Max Staudt <msta...@suse.de> You can still override this on the command line or in the config file. Without this we'll come up at 8bpp on matroxfb (and probably others), which among other things breaks the default desktop since gnome-shell wants GLX and GLX doesn't support pseudocolor anymore. Signed-off-by: Adam Jackson <a...@redhat.com> --- src/fbdev.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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; ++++++ U_02-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch ++++++ From: Adam Jackson <a...@redhat.com> Date: Wed May 21 09:49:56 2014 -0400 Subject: [PATCH 2/13]Use own thunk functions instead of fbdevHW*Weak Patch-mainline: Upstream Git-repo: git://anongit.freedesktop.org/xorg/driver/xf86-video-fbdev Git-commit: 2673e727063fe28310836f1e6e9eda552930218a References: Signed-off-by: Max Staudt <msta...@suse.de> I plan to remove the Weak functions from a future server. Signed-off-by: Adam Jackson <a...@redhat.com> --- src/fbdev.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 71 insertions(+), 15 deletions(-) diff --git a/src/fbdev.c b/src/fbdev.c index a73565f..5e38da4 100644 --- a/src/fbdev.c +++ b/src/fbdev.c @@ -233,6 +233,35 @@ FBDevIdentify(int flags) xf86PrintChipsets(FBDEV_NAME, "driver for framebuffer", FBDevChipsets); } +static Bool +fbdevSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode) +{ + return fbdevHWSwitchMode(pScrn, mode); +} + +static void +fbdevAdjustFrame(ScrnInfoPtr pScrn, int x, int y) +{ + fbdevHWAdjustFrame(pScrn, x, y); +} + +static Bool +fbdevEnterVT(ScrnInfoPtr pScrn) +{ + return fbdevHWEnterVT(pScrn); +} + +static void +fbdevLeaveVT(ScrnInfoPtr pScrn) +{ + fbdevHWLeaveVT(pScrn); +} + +static ModeStatus +fbdevValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags) +{ + return fbdevHWValidMode(pScrn, mode, verbose, flags); +} #ifdef XSERVER_LIBPCIACCESS static Bool FBDevPciProbe(DriverPtr drv, int entity_num, @@ -258,11 +287,11 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num, pScrn->Probe = FBDevProbe; pScrn->PreInit = FBDevPreInit; pScrn->ScreenInit = FBDevScreenInit; - pScrn->SwitchMode = fbdevHWSwitchModeWeak(); - pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); - pScrn->EnterVT = fbdevHWEnterVTWeak(); - pScrn->LeaveVT = fbdevHWLeaveVTWeak(); - pScrn->ValidMode = fbdevHWValidModeWeak(); + pScrn->SwitchMode = fbdevSwitchMode; + pScrn->AdjustFrame = fbdevAdjustFrame; + pScrn->EnterVT = fbdevEnterVT; + pScrn->LeaveVT = fbdevLeaveVT; + pScrn->ValidMode = fbdevValidMode; xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "claimed PCI slot %d@%d:%d:%d\n", @@ -375,11 +404,11 @@ FBDevProbe(DriverPtr drv, int flags) pScrn->Probe = FBDevProbe; pScrn->PreInit = FBDevPreInit; pScrn->ScreenInit = FBDevScreenInit; - pScrn->SwitchMode = fbdevHWSwitchModeWeak(); - pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); - pScrn->EnterVT = fbdevHWEnterVTWeak(); - pScrn->LeaveVT = fbdevHWLeaveVTWeak(); - pScrn->ValidMode = fbdevHWValidModeWeak(); + pScrn->SwitchMode = fbdevSwitchMode; + pScrn->AdjustFrame = fbdevAdjustFrame; + pScrn->EnterVT = fbdevEnterVT; + pScrn->LeaveVT = fbdevLeaveVT; + pScrn->ValidMode = fbdevValidMode; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "using %s\n", dev ? dev : "default device"); @@ -632,6 +661,17 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) return TRUE; } +static void +fbdevUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) +{ + shadowUpdateRotatePacked(pScreen, pBuf); +} + +static void +fbdevUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) +{ + shadowUpdatePacked(pScreen, pBuf); +} static Bool FBDevCreateScreenResources(ScreenPtr pScreen) @@ -651,7 +691,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen) pPixmap = pScreen->GetScreenPixmap(pScreen); if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ? - shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(), + fbdevUpdateRotatePacked : fbdevUpdatePacked, FBDevWindowLinear, fPtr->rotate, NULL)) { return FALSE; } @@ -675,6 +715,23 @@ FBDevShadowInit(ScreenPtr pScreen) return TRUE; } +static void +fbdevLoadPalette(ScrnInfoPtr pScrn, int num, int *i, LOCO *col, VisualPtr pVis) +{ + fbdevHWLoadPalette(pScrn, num, i, col, pVis); +} + +static void +fbdevDPMSSet(ScrnInfoPtr pScrn, int mode, int flags) +{ + fbdevHWDPMSSet(pScrn, mode, flags); +} + +static Bool +fbdevSaveScreen(ScreenPtr pScreen, int mode) +{ + return fbdevHWSaveScreen(pScreen, mode); +} static Bool FBDevScreenInit(SCREEN_INIT_ARGS_DECL) @@ -909,13 +966,12 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL) return FALSE; } flags = CMAP_PALETTED_TRUECOLOR; - if(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPaletteWeak(), - NULL, flags)) + if(!xf86HandleColormaps(pScreen, 256, 8, fbdevLoadPalette, NULL, flags)) return FALSE; - xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0); + xf86DPMSInit(pScreen, fbdevDPMSSet, 0); - pScreen->SaveScreen = fbdevHWSaveScreenWeak(); + pScreen->SaveScreen = fbdevSaveScreen; /* Wrap the current CloseScreen function */ fPtr->CloseScreen = pScreen->CloseScreen; ++++++ U_03-Pass-the-pci-device-if-any-through-to-fbdevhw-in-probe-and-preinit.patch ++++++ From: Adam Jackson <a...@redhat.com> Date: Mon Aug 11 12:07:54 2014 -0400 Subject: [PATCH 3/13]Pass the pci device (if any) through to fbdevhw in probe and preinit Patch-mainline: Upstream Git-repo: git://anongit.freedesktop.org/xorg/driver/xf86-video-fbdev Git-commit: ae0aeffae6657464f610da13e7b3349d0d97e81b References: Signed-off-by: Max Staudt <msta...@suse.de> Signed-off-by: Adam Jackson <a...@redhat.com> --- src/fbdev.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/fbdev.c b/src/fbdev.c index 5e38da4..dcfed28 100644 --- a/src/fbdev.c +++ b/src/fbdev.c @@ -280,7 +280,7 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num, pScrn->entityInstanceList[0]); device = xf86FindOptionValue(devSection->options, "fbdev"); - if (fbdevHWProbe(NULL, device, NULL)) { + if (fbdevHWProbe(dev, device, NULL)) { pScrn->driverVersion = FBDEV_VERSION; pScrn->driverName = FBDEV_DRIVER_NAME; pScrn->name = FBDEV_NAME; @@ -427,6 +427,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) int default_depth, fbbpp; const char *s; int type; + void *pci_dev; if (flags & PROBE_DETECT) return FALSE; @@ -454,9 +455,14 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) "xf86RegisterResources() found resource conflicts\n"); return FALSE; } +#else + if (fPtr->pEnt->location.type == BUS_PCI) + pci_dev = fPtr->pEnt->location.id.pci; #endif /* open device */ - if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(fPtr->pEnt->device->options,"fbdev"))) + if (!fbdevHWInit(pScrn, pci_dev, + xf86FindOptionValue(fPtr->pEnt->device->options, + "fbdev"))) return FALSE; default_depth = fbdevHWGetDepth(pScrn,&fbbpp); ++++++ U_04-Initialize-pci_dev.patch ++++++ From: Pascal Terjan <pter...@google.com> Date: Fri Jan 22 00:26:22 2016 +0000 Subject: [PATCH 4/13]Initialize pci_dev Patch-mainline: Upstream Git-repo: git://anongit.freedesktop.org/xorg/driver/xf86-video-fbdev Git-commit: 66e7909bfefd93c05aa37d0cadccc5348f0382be References: Signed-off-by: Max Staudt <msta...@suse.de> Else it is read before initialization if XSERVER_LIBPCIACCESS is not defined or location.type is not BUS_PCI. Noticed when I got a segfault where it was 0x1 while doing some tests on arm. Signed-off-by: Pascal Terjan <pter...@google.com> Reviewed-by: Emil Velikov <emil.l.veli...@gmail.com> --- src/fbdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fbdev.c b/src/fbdev.c index dcfed28..2c658fe 100644 --- a/src/fbdev.c +++ b/src/fbdev.c @@ -427,7 +427,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) int default_depth, fbbpp; const char *s; int type; - void *pci_dev; + void *pci_dev = NULL; if (flags & PROBE_DETECT) return FALSE; ++++++ U_05-Fix-shadow-fb-allocation-size-v2.patch ++++++ From: Adam Jackson <a...@redhat.com> Date: Wed Jan 4 10:30:08 2017 -0500 Subject: [PATCH 5/13]Fix shadow fb allocation size (v2) Patch-mainline: Upstream Git-repo: git://anongit.freedesktop.org/xorg/driver/xf86-video-fbdev Git-commit: 2c5eba85740e6a7ced8ada0ee45fdd74e4bca364 References: Signed-off-by: Max Staudt <msta...@suse.de> ->bitsPerPixel is rather obviously eight times too large. v2: Use ->displayWidth - the pitch - not ->virtualX (Keith Packard) Signed-off-by: Adam Jackson <a...@redhat.com> Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> --- src/fbdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fbdev.c b/src/fbdev.c index 2c658fe..4309d76 100644 --- a/src/fbdev.c +++ b/src/fbdev.c @@ -827,8 +827,8 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL) fPtr->fbstart = fPtr->fbmem + fPtr->fboff; if (fPtr->shadowFB) { - fPtr->shadow = calloc(1, pScrn->virtualX * pScrn->virtualY * - pScrn->bitsPerPixel); + fPtr->shadow = calloc(1, pScrn->displayWidth * pScrn->virtualY * + ((pScrn->bitsPerPixel + 7) / 8)); if (!fPtr->shadow) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, ++++++ U_11-Remove-dead-pix24bpp-variable.patch ++++++ From: Adam Jackson <a...@redhat.com> Date: Thu Jan 5 14:14:48 2017 -0500 Subject: [PATCH 11/13]Remove dead pix24bpp variable Patch-mainline: Upstream Git-repo: git://anongit.freedesktop.org/xorg/driver/xf86-video-fbdev Git-commit: 3cf99231199bd5bd9e681e85d9da1f9eb736e3e7 References: Signed-off-by: Max Staudt <msta...@suse.de> Signed-off-by: Adam Jackson <a...@redhat.com> --- src/fbdev.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/fbdev.c b/src/fbdev.c index 4309d76..eaf3aa8 100644 --- a/src/fbdev.c +++ b/src/fbdev.c @@ -76,12 +76,6 @@ enum { FBDEV_ROTATE_NONE=0, FBDEV_ROTATE_CW=270, FBDEV_ROTATE_UD=180, FBDEV_ROTA /* -------------------------------------------------------------------- */ -/* - * This is intentionally screen-independent. It indicates the binding - * choice made in the first PreInit. - */ -static int pix24bpp = 0; - #define FBDEV_VERSION 4000 #define FBDEV_NAME "FBDEV" #define FBDEV_DRIVER_NAME "fbdev" @@ -493,10 +487,6 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) return FALSE; xf86PrintDepthBpp(pScrn); - /* Get the depth24 pixmap format */ - if (pScrn->depth == 24 && pix24bpp == 0) - pix24bpp = xf86GetBppFromDepth(pScrn, 24); - /* color weight */ if (pScrn->depth > 8) { rgb zeros = { 0, 0, 0 }; ++++++ U_12-Use-shadowUpdate32to24-at-24bpp.patch ++++++ From: Adam Jackson <a...@redhat.com> Date: Thu Jan 5 14:36:51 2017 -0500 Subject: [PATCH 12/13]Use shadowUpdate32to24 at 24bpp Patch-mainline: Upstream Git-repo: git://anongit.freedesktop.org/xorg/driver/xf86-video-fbdev Git-commit: e0bce0d017c5e1597aa8269551355e1ddeb3c8fb References: Signed-off-by: Max Staudt <msta...@suse.de> Signed-off-by: Adam Jackson <a...@redhat.com> --- man/fbdev.man | 6 ++++-- src/fbdev.c | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/man/fbdev.man b/man/fbdev.man index bda0ed6..ed73d00 100644 --- a/man/fbdev.man +++ b/man/fbdev.man @@ -47,12 +47,14 @@ are supported: The framebuffer device to use. Default: /dev/fb0. .TP .BI "Option \*qShadowFB\*q \*q" boolean \*q -Enable or disable use of the shadow framebuffer layer. Default: on. +Enable or disable use of the shadow framebuffer layer. Mandatory for 24bpp +framebuffers on newer servers. Default: on. .TP .BI "Option \*qRotate\*q \*q" string \*q Enable rotation of the display. The supported values are "CW" (clockwise, 90 degrees), "UD" (upside down, 180 degrees) and "CCW" (counter clockwise, -270 degrees). Implies use of the shadow framebuffer layer. Default: off. +270 degrees). Implies use of the shadow framebuffer layer. Disabled for 24bpp +framebuffers. Default: off. .SH "SEE ALSO" __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__), fbdevhw(__drivermansuffix__) diff --git a/src/fbdev.c b/src/fbdev.c index eaf3aa8..af1587f 100644 --- a/src/fbdev.c +++ b/src/fbdev.c @@ -41,6 +41,10 @@ /* for xf86{Depth,FbBpp}. i am a terrible person, and i am sorry. */ #include "xf86Priv.h" +#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) > 23 +#define HAVE_SHADOW_3224 +#endif + static Bool debug = 0; #define TRACE_ENTER(str) \ @@ -181,6 +185,7 @@ typedef struct { int lineLength; int rotate; Bool shadowFB; + Bool shadow24; void *shadow; CloseScreenProcPtr CloseScreen; CreateScreenResourcesProcPtr CreateScreenResources; @@ -482,6 +487,15 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) fbbpp = 32; } while (0); + fPtr->shadow24 = FALSE; +#if HAVE_SHADOW_3224 + /* okay but 24bpp is awful */ + if (fbbpp == 24) { + fPtr->shadow24 = TRUE; + fbbpp = 32; + } +#endif + if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp, Support24bppFb | Support32bppFb | SupportConvert32to24 | SupportConvert24to32)) return FALSE; @@ -531,12 +545,18 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) /* use shadow framebuffer by default */ fPtr->shadowFB = xf86ReturnOptValBool(fPtr->Options, OPTION_SHADOW_FB, TRUE); + if (!fPtr->shadowFB && fPtr->shadow24) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "24bpp requires shadow framebuffer, forcing\n"); + fPtr->shadowFB = TRUE; + } debug = xf86ReturnOptValBool(fPtr->Options, OPTION_DEBUG, FALSE); /* rotation */ fPtr->rotate = FBDEV_ROTATE_NONE; - if ((s = xf86GetOptValString(fPtr->Options, OPTION_ROTATE))) + s = xf86GetOptValString(fPtr->Options, OPTION_ROTATE); + if (s && !fPtr->shadow24) { if(!xf86NameCmp(s, "CW")) { @@ -658,6 +678,14 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) } static void +fbdevUpdate32to24(ScreenPtr pScreen, shadowBufPtr pBuf) +{ +#ifdef HAVE_SHADOW_3224 + shadowUpdate32to24(pScreen, pBuf); +#endif +} + +static void fbdevUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) { shadowUpdateRotatePacked(pScreen, pBuf); @@ -676,6 +704,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen) ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); FBDevPtr fPtr = FBDEVPTR(pScrn); Bool ret; + void (*update)(ScreenPtr, shadowBufPtr); pScreen->CreateScreenResources = fPtr->CreateScreenResources; ret = pScreen->CreateScreenResources(pScreen); @@ -686,9 +715,15 @@ FBDevCreateScreenResources(ScreenPtr pScreen) pPixmap = pScreen->GetScreenPixmap(pScreen); - if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ? - fbdevUpdateRotatePacked : fbdevUpdatePacked, - FBDevWindowLinear, fPtr->rotate, NULL)) { + if (fPtr->shadow24) + update = fbdevUpdate32to24; + else if (fPtr->rotate) + update = fbdevUpdateRotatePacked; + else + update = fbdevUpdatePacked; + + if (!shadowAdd(pScreen, pPixmap, update, FBDevWindowLinear, fPtr->rotate, + NULL)) { return FALSE; } ++++++ U_13-Use-ifdef-instead-of-if-to-avoid-build-error.patch ++++++ From: Alan Coopersmith <alan.coopersm...@oracle.com> Date: Sun Mar 4 17:34:06 2018 -0800 Subject: [PATCH 13/13]Use #ifdef instead of #if to avoid build error Patch-mainline: Upstream Git-repo: git://anongit.freedesktop.org/xorg/driver/xf86-video-fbdev Git-commit: 9af7f81534aa03fe01d88786805b00729ac321e9 References: Signed-off-by: Max Staudt <msta...@suse.de> fbdev.c:491:21: error: #if with no expression #if HAVE_SHADOW_3224 ^ Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> Reviewed-by: Adam Jackson <a...@redhat.com> --- src/fbdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fbdev.c b/src/fbdev.c index af1587f..421b26a 100644 --- a/src/fbdev.c +++ b/src/fbdev.c @@ -488,7 +488,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) } while (0); fPtr->shadow24 = FALSE; -#if HAVE_SHADOW_3224 +#ifdef HAVE_SHADOW_3224 /* okay but 24bpp is awful */ if (fbbpp == 24) { fPtr->shadow24 = TRUE;