Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
Hi Thomas, On Mon, Apr 26, 2021 at 2:22 PM Thomas Zimmermann wrote: > Am 20.04.21 um 11:27 schrieb Geert Uytterhoeven: > > On Tue, Apr 20, 2021 at 11:22 AM Gerd Hoffmann wrote: > > Patches 4 to 8 add the simpledrm driver. It's build on simple DRM > > helpers > > and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. > > During > > if support for 8-bit frame buffers would be added? > >>> > >>> Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former > >>> shouldn't be a big thing, but the latter is only really supported by the > >>> overall drm ecosystem in theory. Most userspace assumes that xrgb > >>> works, and we keep that illusion up by emulating it in kernel for hw which > >>> just doesn't support it. But reformatting xrgb to c8 is tricky at > >>> best. > >> > >> Well. cirrus converts xrgb on the fly to rgb888 or rgb565 > >> (depending on display resolution). We could pull off the same trick > >> here and convert to rgb332 (assuming we can program the palette with the > >> color cube needed for that). Wouldn't look pretty, but would probably > >> work better than expecting userspace know what color palettes are in > >> 2021 ... > > > > Yeah, I already had a similar idea for Amiga HAM ;-) > > I vaguely remember that HAM mode uses some crazy format where pixel > colors depend in the values of their neighbors. (?) How complicated is > it to write a conversion from RGB to HAM? Not that complicated, unless you want to do it Good & Fast ;-) https://en.wikipedia.org/wiki/Hold-And-Modify Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
On Mon, Apr 26, 2021 at 02:18:05PM +0200, Thomas Zimmermann wrote: > Hi > > Am 20.04.21 um 10:46 schrieb Daniel Vetter: > > On Mon, Apr 19, 2021 at 10:00:56AM +0200, Geert Uytterhoeven wrote: > > > Hi Thomas, > > > > > > On Fri, Apr 16, 2021 at 11:00 AM Thomas Zimmermann > > > wrote: > > > > This patchset adds support for simple-framebuffer platform devices and > > > > a handover mechanism for native drivers to take-over control of the > > > > hardware. > > > > > > > > The new driver, called simpledrm, binds to a simple-frambuffer platform > > > > device. The kernel's boot code creates such devices for > > > > firmware-provided > > > > framebuffers, such as EFI-GOP or VESA. Typically the BIOS, UEFI or boot > > > > loader sets up the framebuffers. Description via device tree is also an > > > > option. > > > > > > I guess this can be used as a replacement for offb, too... > > > > > > > Patches 4 to 8 add the simpledrm driver. It's build on simple DRM > > > > helpers > > > > and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. > > > > During > > > > > > if support for 8-bit frame buffers would be added? > > Offb doesn't seem to be tied to the simple-framebuffer support. So adding a > new driver or extending the simple-framebuffer code would be required. Not a > big deal, though. Patch 3 of this patchset adds the ability to create > generic drivers within DRM. > > > > > Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former > > shouldn't be a big thing, but the latter is only really supported by the > > overall drm ecosystem in theory. Most userspace assumes that xrgb > > works, and we keep that illusion up by emulating it in kernel for hw which > > just doesn't support it. But reformatting xrgb to c8 is tricky at > > best. The uapis are all there for setting the palette, and C8 is a defined > > format even with atomic kms interface, but really there's not much > > userspace for it. In other words, it would work as well as current offb > > would, but that's at least that. > > I think we can just use a shadow palette in the drm driver: If the drm > framebuffer is in C8, use the userspace's palette. If the drm framebuffer is > in XRGB, use a palette that represents RGB332. The driver would do > on-the-fly conversion; just like cirrus does. Hm yeah rgb332 palette sounds like a reasonable idea. Could even have that palette defined/generated in format conversion helpers, and then an xrgb->rgb332 converter. Lower palettes probably stop making sense as rgb, maybe there we just do greyscale or something like that for the xrgb emulation. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
Hi Am 20.04.21 um 11:27 schrieb Geert Uytterhoeven: Hi Gerd, On Tue, Apr 20, 2021 at 11:22 AM Gerd Hoffmann wrote: Patches 4 to 8 add the simpledrm driver. It's build on simple DRM helpers and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. During if support for 8-bit frame buffers would be added? Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former shouldn't be a big thing, but the latter is only really supported by the overall drm ecosystem in theory. Most userspace assumes that xrgb works, and we keep that illusion up by emulating it in kernel for hw which just doesn't support it. But reformatting xrgb to c8 is tricky at best. Well. cirrus converts xrgb on the fly to rgb888 or rgb565 (depending on display resolution). We could pull off the same trick here and convert to rgb332 (assuming we can program the palette with the color cube needed for that). Wouldn't look pretty, but would probably work better than expecting userspace know what color palettes are in 2021 ... Yeah, I already had a similar idea for Amiga HAM ;-) I vaguely remember that HAM mode uses some crazy format where pixel colors depend in the values of their neighbors. (?) How complicated is it to write a conversion from RGB to HAM? Best regards Thomas Gr{oetje,eeting}s, Geert -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer OpenPGP_signature Description: OpenPGP digital signature ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
Hi Am 20.04.21 um 10:46 schrieb Daniel Vetter: On Mon, Apr 19, 2021 at 10:00:56AM +0200, Geert Uytterhoeven wrote: Hi Thomas, On Fri, Apr 16, 2021 at 11:00 AM Thomas Zimmermann wrote: This patchset adds support for simple-framebuffer platform devices and a handover mechanism for native drivers to take-over control of the hardware. The new driver, called simpledrm, binds to a simple-frambuffer platform device. The kernel's boot code creates such devices for firmware-provided framebuffers, such as EFI-GOP or VESA. Typically the BIOS, UEFI or boot loader sets up the framebuffers. Description via device tree is also an option. I guess this can be used as a replacement for offb, too... Patches 4 to 8 add the simpledrm driver. It's build on simple DRM helpers and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. During if support for 8-bit frame buffers would be added? Offb doesn't seem to be tied to the simple-framebuffer support. So adding a new driver or extending the simple-framebuffer code would be required. Not a big deal, though. Patch 3 of this patchset adds the ability to create generic drivers within DRM. Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former shouldn't be a big thing, but the latter is only really supported by the overall drm ecosystem in theory. Most userspace assumes that xrgb works, and we keep that illusion up by emulating it in kernel for hw which just doesn't support it. But reformatting xrgb to c8 is tricky at best. The uapis are all there for setting the palette, and C8 is a defined format even with atomic kms interface, but really there's not much userspace for it. In other words, it would work as well as current offb would, but that's at least that. I think we can just use a shadow palette in the drm driver: If the drm framebuffer is in C8, use the userspace's palette. If the drm framebuffer is in XRGB, use a palette that represents RGB332. The driver would do on-the-fly conversion; just like cirrus does. Best regards Thomas -Daniel -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer OpenPGP_signature Description: OpenPGP digital signature ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
On Tue, Apr 20, 2021 at 11:16:09AM +0200, Geert Uytterhoeven wrote: > Hi Daniel, > > On Tue, Apr 20, 2021 at 10:46 AM Daniel Vetter wrote: > > On Mon, Apr 19, 2021 at 10:00:56AM +0200, Geert Uytterhoeven wrote: > > > On Fri, Apr 16, 2021 at 11:00 AM Thomas Zimmermann > > > wrote: > > > > This patchset adds support for simple-framebuffer platform devices and > > > > a handover mechanism for native drivers to take-over control of the > > > > hardware. > > > > > > > > The new driver, called simpledrm, binds to a simple-frambuffer platform > > > > device. The kernel's boot code creates such devices for > > > > firmware-provided > > > > framebuffers, such as EFI-GOP or VESA. Typically the BIOS, UEFI or boot > > > > loader sets up the framebuffers. Description via device tree is also an > > > > option. > > > > > > I guess this can be used as a replacement for offb, too... > > > > > > > Patches 4 to 8 add the simpledrm driver. It's build on simple DRM > > > > helpers > > > > and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. > > > > During > > > > > > if support for 8-bit frame buffers would be added? > > > > Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former > > 8-bit indexed with 256 entry palette. > > > shouldn't be a big thing, but the latter is only really supported by the > > overall drm ecosystem in theory. Most userspace assumes that xrgb > > works, and we keep that illusion up by emulating it in kernel for hw which > > just doesn't support it. But reformatting xrgb to c8 is tricky at > > best. The uapis are all there for setting the palette, and C8 is a defined > > format even with atomic kms interface, but really there's not much > > userspace for it. In other words, it would work as well as current offb > > would, but that's at least that. > > Oh, that's good to know! > Does this mean fbdev is not deprecated for anything <= C8? ;-) Nope. It just means you wont be able to use drm-only userspace with it most likely, without also investing a ton of effort into porting those over. > A while ago, I was looking into converting an fbdev driver to drm, and > one of the things I ran into is lack of C4, C2, C1, Y8, Y4, Y2, and > monochrome support. On top of that, lots of internal code seems to > assume pixels are never smaller than a byte (thus ignoring > char_per_block[]/block_w). The lack of support for planar modes isn't > that bad, combined with the need for copying, as c2p conversion can be > done while copying, thus even making life easier for userspace > applications that can just always work on chunky data. > Then real work kicked in, before I got anything working... We support drm_fourcc, so adding more pixel formats is not problem at all. Anything indexed/paletted will simply not work great with unchanged drm userspace, because you can't really convert it over from the common denominator of xrgb888. But if it's just about adding support, adding more fourcc codes isn't a big deal. The fbdev layer hasn't been taught about fourcc codes yet, but that's also just for lack of need by anyone. Also we support abitrary uneven pixel packing too, with some generic support for anything that's at least somewhat regular. That's been the case for a while now. It was added for fancy tiling and compression formats, but works equally well for anything else that's aligned different than what can be described with simplistic bytes-per-pixel only. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
Hi Gerd, On Tue, Apr 20, 2021 at 11:22 AM Gerd Hoffmann wrote: > > > > Patches 4 to 8 add the simpledrm driver. It's build on simple DRM > > > > helpers > > > > and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. > > > > During > > > > > > if support for 8-bit frame buffers would be added? > > > > Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former > > shouldn't be a big thing, but the latter is only really supported by the > > overall drm ecosystem in theory. Most userspace assumes that xrgb > > works, and we keep that illusion up by emulating it in kernel for hw which > > just doesn't support it. But reformatting xrgb to c8 is tricky at > > best. > > Well. cirrus converts xrgb on the fly to rgb888 or rgb565 > (depending on display resolution). We could pull off the same trick > here and convert to rgb332 (assuming we can program the palette with the > color cube needed for that). Wouldn't look pretty, but would probably > work better than expecting userspace know what color palettes are in > 2021 ... Yeah, I already had a similar idea for Amiga HAM ;-) Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
Hi, > > > Patches 4 to 8 add the simpledrm driver. It's build on simple DRM helpers > > > and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. During > > > > if support for 8-bit frame buffers would be added? > > Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former > shouldn't be a big thing, but the latter is only really supported by the > overall drm ecosystem in theory. Most userspace assumes that xrgb > works, and we keep that illusion up by emulating it in kernel for hw which > just doesn't support it. But reformatting xrgb to c8 is tricky at > best. Well. cirrus converts xrgb on the fly to rgb888 or rgb565 (depending on display resolution). We could pull off the same trick here and convert to rgb332 (assuming we can program the palette with the color cube needed for that). Wouldn't look pretty, but would probably work better than expecting userspace know what color palettes are in 2021 ... take care, Gerd ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
Hi Daniel, On Tue, Apr 20, 2021 at 10:46 AM Daniel Vetter wrote: > On Mon, Apr 19, 2021 at 10:00:56AM +0200, Geert Uytterhoeven wrote: > > On Fri, Apr 16, 2021 at 11:00 AM Thomas Zimmermann > > wrote: > > > This patchset adds support for simple-framebuffer platform devices and > > > a handover mechanism for native drivers to take-over control of the > > > hardware. > > > > > > The new driver, called simpledrm, binds to a simple-frambuffer platform > > > device. The kernel's boot code creates such devices for firmware-provided > > > framebuffers, such as EFI-GOP or VESA. Typically the BIOS, UEFI or boot > > > loader sets up the framebuffers. Description via device tree is also an > > > option. > > > > I guess this can be used as a replacement for offb, too... > > > > > Patches 4 to 8 add the simpledrm driver. It's build on simple DRM helpers > > > and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. During > > > > if support for 8-bit frame buffers would be added? > > Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former 8-bit indexed with 256 entry palette. > shouldn't be a big thing, but the latter is only really supported by the > overall drm ecosystem in theory. Most userspace assumes that xrgb > works, and we keep that illusion up by emulating it in kernel for hw which > just doesn't support it. But reformatting xrgb to c8 is tricky at > best. The uapis are all there for setting the palette, and C8 is a defined > format even with atomic kms interface, but really there's not much > userspace for it. In other words, it would work as well as current offb > would, but that's at least that. Oh, that's good to know! Does this mean fbdev is not deprecated for anything <= C8? ;-) A while ago, I was looking into converting an fbdev driver to drm, and one of the things I ran into is lack of C4, C2, C1, Y8, Y4, Y2, and monochrome support. On top of that, lots of internal code seems to assume pixels are never smaller than a byte (thus ignoring char_per_block[]/block_w). The lack of support for planar modes isn't that bad, combined with the need for copying, as c2p conversion can be done while copying, thus even making life easier for userspace applications that can just always work on chunky data. Then real work kicked in, before I got anything working... Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
On Mon, Apr 19, 2021 at 10:00:56AM +0200, Geert Uytterhoeven wrote: > Hi Thomas, > > On Fri, Apr 16, 2021 at 11:00 AM Thomas Zimmermann > wrote: > > This patchset adds support for simple-framebuffer platform devices and > > a handover mechanism for native drivers to take-over control of the > > hardware. > > > > The new driver, called simpledrm, binds to a simple-frambuffer platform > > device. The kernel's boot code creates such devices for firmware-provided > > framebuffers, such as EFI-GOP or VESA. Typically the BIOS, UEFI or boot > > loader sets up the framebuffers. Description via device tree is also an > > option. > > I guess this can be used as a replacement for offb, too... > > > Patches 4 to 8 add the simpledrm driver. It's build on simple DRM helpers > > and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. During > > if support for 8-bit frame buffers would be added? Is that 8-bit greyscale or 8-bit indexed with 256 entry palette? Former shouldn't be a big thing, but the latter is only really supported by the overall drm ecosystem in theory. Most userspace assumes that xrgb works, and we keep that illusion up by emulating it in kernel for hw which just doesn't support it. But reformatting xrgb to c8 is tricky at best. The uapis are all there for setting the palette, and C8 is a defined format even with atomic kms interface, but really there's not much userspace for it. In other words, it would work as well as current offb would, but that's at least that. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v4 0/9] drm: Support simple-framebuffer devices and firmware fbs
Hi Thomas, On Fri, Apr 16, 2021 at 11:00 AM Thomas Zimmermann wrote: > This patchset adds support for simple-framebuffer platform devices and > a handover mechanism for native drivers to take-over control of the > hardware. > > The new driver, called simpledrm, binds to a simple-frambuffer platform > device. The kernel's boot code creates such devices for firmware-provided > framebuffers, such as EFI-GOP or VESA. Typically the BIOS, UEFI or boot > loader sets up the framebuffers. Description via device tree is also an > option. I guess this can be used as a replacement for offb, too... > Patches 4 to 8 add the simpledrm driver. It's build on simple DRM helpers > and SHMEM. It supports 16-bit, 24-bit and 32-bit RGB framebuffers. During if support for 8-bit frame buffers would be added? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization