Summary: | x11-drivers/xf86-video-scfb X windows fails to start on recent 12.1-STABLE | ||
---|---|---|---|
Product: | Ports & Packages | Reporter: | Brian Scott <bscott> |
Component: | Individual Port(s) | Assignee: | freebsd-x11 (Nobody) <x11> |
Status: | Closed FIXED | ||
Severity: | Affects Only Me | CC: | bscott, dennis.r.friedrichsen, hsw, jonc, marklmi26-fbsd |
Priority: | --- | Flags: | bugzilla:
maintainer-feedback?
(x11) |
Version: | Latest | ||
Hardware: | Any | ||
OS: | Any |
Description
Brian Scott
2020-05-09 03:02:45 UTC
Additional testing with different versions of packages: 12 release_0 : X works properly 12 release_1 : X works properly 12 quarterly : fails Downgraded the following packages from quarterly to release_1: xorg-server xf86-input-mouse xf86-input-keyboard xf86-video-scfb xf86-input-libinput I had intended to downgrade only xorg-server but needed to match the version numbers. X started and appears to be working correctly. Since very little changed in xf86-video-scfb and xf86-input-* are not likely to be involved, it looks like the issue must be somewhere in xorg-server. There is a command line option for starting the x server from what I've read: QUOTE -fbbpp n Sets the number of framebuffer bits per pixel. You should only set this if you're sure it's necessary; normally the server can deduce the correct value from -depth above. Useful if you want to run a depth 24 configuration with a 24 bpp framebuffer rather than the (possibly default) 32 bpp framebuffer (or vice versa). Legal values are 1, 8, 16, 24, 32. Not all drivers support all values. END QUOTE Trying -fbbpp 32 might allow seeing if there is such control in a fails-by-default context. There is Section "Screen" . . . EndSection material: QUOTE DefaultFbBpp bpp specifies which framebuffer layout to use by default. The -fbbpp command line option can be used to override this. In most cases the driver will chose the best default value for this. The only case where there is even a choice in this value is for depth 24, where some hardware supports both a packed 24 bit framebuffer layout and a sparse 32 bit framebuffer layout. END QUOTE (In reply to Mark Millard from comment #2) Hmm. You probably already did what I was suggesting: QUOTE I've experimented with different values for Depth and FbBpp (and Default...) in xorg.conf with very little changing. END QUOTE Sorry for the noise. (Unless -fbbpp 32 on the command line works.) (In reply to Brian Scott from comment #0) I just got a RPi3 HDMI connection to a display going and I ended up with a working 24 bit depth, 32 bit frame buffer bits per pixel environment: Booting [/boot/kernel/kernel]... Using DTB provided by EFI at 0x7ef6000. EFI framebuffer information: addr, size 0x3e513000, 0x6d8c00 dimensions 1824 x 984 stride 1824 masks 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 . . . fb0: <BCM2835 VT framebuffer driver> on simplebus0 fb0: keeping existing fb bpp of 32 fbd0 on fb0 WARNING: Device "fb" is Giant locked and may be deleted before FreeBSD 13.0. VT: Replacing driver "efifb" with new "fb". fb0: 1824x984(1824x984@0,0) 32bpp fb0: fbswap: 1, pitch 7296, base rx3e513000, screen_size 7237632 . . . X.Org X Server 1.20.8 X Protocol Version 11, Revision 0 [ 1291.838] Build Operating System: FreeBSD 13.0-CURRENT arm64 [ 1291.838] Current Operating System: FreeBSD Pine64P2G 13.0-CURRENT FreeBSD 13.0-CURRENT #2 r360311M: Sat Apr 25 10:39:37 PDT 2020 markmi@FBSDFHUGE:/usr/obj/cortexA53_clang/arm64.aarch64/usr/src/arm64.aarch64/sys/GENERIC-NODBG arm64 [ 1291.840] Build Date: 29 April 2020 03:37:06PM . . . [ 1291.859] (II) LoadModule: "scfb" [ 1291.859] (II) Loading /usr/local/lib/xorg/modules/drivers/scfb_drv.so [ 1291.860] (II) Module scfb: vendor="X.Org Foundation" [ 1291.860] compiled for 1.20.7, module version = 0.0.5 [ 1291.860] ABI class: X.Org Video Driver, version 24.1 [ 1291.860] (II) modesetting: Driver for Modesetting Kernel Drivers: kms [ 1291.860] (II) scfb: driver for wsdisplay framebuffer: scfb [ 1291.861] (--) Using syscons driver with X support (version 2.0) [ 1291.861] (--) using VT number 9 . . . [ 1291.861] (WW) Falling back to old probe method for modesetting [ 1291.861] (EE) open /dev/dri/card0: No such file or directory [ 1291.862] (WW) Falling back to old probe method for scfb [ 1291.862] scfb trace: probe start [ 1291.862] (II) scfb(0): using default device [ 1291.862] scfb trace: probe done [ 1291.862] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support [ 1291.862] scfb: PreInit 0 [ 1291.862] (II) scfb(0): Using: depth (32), width (1824), height (984) [ 1291.862] (II) scfb(0): Creating default Display subsection in Screen section "Default Screen Section" for depth/fbbpp 24/32 [ 1291.862] (==) scfb(0): Depth 24, (==) framebuffer bpp 32 [ 1291.862] (==) scfb(0): RGB weight 888 [ 1291.862] (==) scfb(0): Default visual is TrueColor [ 1291.862] (==) scfb(0): Using gamma correction (1.0, 1.0, 1.0) [ 1291.862] (II) scfb(0): Vidmem: 7011k [ 1291.863] (==) scfb(0): DPI set to (96, 96) [ 1291.863] (**) scfb(0): Using "Shadow Framebuffer" [ 1291.863] (II) Loading sub module "shadow" [ 1291.863] (II) LoadModule: "shadow" [ 1291.864] (II) Loading /usr/local/lib/xorg/modules/libshadow.so [ 1291.864] (II) Module shadow: vendor="X.Org Foundation" [ 1291.864] compiled for 1.20.8, module version = 1.1.0 [ 1291.864] ABI class: X.Org ANSI C Emulation, version 0.4 [ 1291.864] (II) Loading sub module "fb" [ 1291.864] (II) LoadModule: "fb" [ 1291.865] (II) Loading /usr/local/lib/xorg/modules/libfb.so [ 1291.867] (II) Module fb: vendor="X.Org Foundation" [ 1291.867] compiled for 1.20.8, module version = 1.0.0 [ 1291.867] ABI class: X.Org ANSI C Emulation, version 0.4 [ 1291.867] scfb: PreInit done [ 1291.867] (II) UnloadModule: "modesetting" [ 1291.867] (II) Unloading modesetting [ 1291.868] scfb: ScfbScreenInit 0 [ 1291.868] bitsPerPixel=32, depth=24, defaultVisual=TrueColor mask: ff0000,ff00,ff, offset: 16,8,0 [ 1291.868] mmap returns: addr 0x42313000 len 0x6d9000, fd 12, off 0 [ 1291.869] scfb: ScfbSave 0 [ 1291.869] scfb: ScfbSave done [ 1291.869] (==) scfb(0): Backing store enabled [ 1291.870] scfb: ScfbScreenInit done This is based on: x11-drivers/xf86-video-scfb x11/lumina x11/xorg-minimal x11/xterm built from /usr/ports at -r533162 in and for a FreeBSD head -r360311 aarch64 context. Since it is working, it should be an indication of a valid combination for depth and fbbpp. But I'll note that scfb's man page reports: For this driver it is not required to specify modes in the Screen section of the configuration file. The scfb driver picks up the currently used video mode from the framebuffer driver and uses it. Video modes specifications in the configuration file are ignored. So, with that and some of the messages reported above, it appears that the 32 for fbbpp came from efifb, was picked up by fb, and finally picked up by scfb. (In reply to Brian Scott from comment #0) I found the RPi3 and related fix in FreeBSD head's sys/arm/broadcom/bcm2835/bcm2835_fbd.c : Revision 352028 - (view) (download) (annotate) - [select for diffs] Modified Sun Sep 8 09:47:21 2019 UTC (8 months, 2 weeks ago) by gonzo File length: 7261 byte(s) Diff to previous 331229 [rpi] Inherit framebuffer BPP value from the VideoCore firmware Instead of using hardcoded bpp of 24, obtain current/configured value from VideoCore. This solves certain problems with Xorg/Qt apps that require bpp of 32 to work properly. The mode can be forced by setting framebuffer_depth value in config.txt PR: 235363 Submitted by: Steve Peurifoy <ssw01@mathistry.net> And MFC to older contexts would be appropriate. Same problem happened to me on 12.1-STABLE I can confirm that for: FreeBSD-13.0-CURRENT-arm-armv7-RPI2-20200528-r361567.img.xz Although some of the xorg meta ports are missing, installing the xorg parts separately results in the final image working well. Just tested with current: FreeBSD-13.0-CURRENT-arm64-aarch64-RPI3-20200604-r361779 All installed via packages (including xorg-server-1.20.8_1,1). Appears to work perfectly. Mark Millard has correctly identified that this is due to bug 235363. I've tried a kernel with the -STABLE patch, and "startx" now works! Hopefully, it will be MFC against 12.1-STABLE soon. Success FreeBSD-12.1-STABLE-arm64-aarch64-RPI3-20200611-r362026.img.xz sorg-server: 1.20.8_1,1 From Xorg log: [ 65.721] (II) Module fb: vendor="X.Org Foundation" [ 65.721] compiled for 1.20.8, module version = 1.0.0 [ 65.721] ABI class: X.Org ANSI C Emulation, version 0.4 [ 65.721] scfb: PreInit done [ 65.722] scfb: ScfbScreenInit 0 [ 65.722] bitsPerPixel=32, depth=24, defaultVisual=TrueColor mask: ff0000,ff00,ff, offset: 16,8,0 [ 65.722] mmap returns: addr 0x420fa000 len 0x500000, fd 13, off 0 Thank you. (In reply to Brian Scott from comment #9) You may want to close this report as fixed. |