On 1 February 2018 at 01:48, Adam Jackson <[email protected]> wrote: > I ported vesa to use the VBE service back in: > > commit 55f585a15f42ffe028ff37ea1f63543795dbf56e > Author: Adam Jackson <[email protected]> > Date: Fri Sep 18 17:02:16 2009 -0400 > > Use VBE palette load, not VGA banging. > > I'm reasonably sure that worked on all the hardware I had handy at the > time. But it doesn't work in seabios, which means 8bpp is broken under > qemu. > > We query this API early in initialization, and if it fails ->savedPal > will be NULL, so use that as the hint to fall back to VGA banging. > > Signed-off-by: Adam Jackson <[email protected]>
I can confirm I dug in seabios as well. Reviewed-by: Dave Airlie <[email protected]> > --- > src/vesa.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/src/vesa.c b/src/vesa.c > index cbf6773..3f5b81c 100644 > --- a/src/vesa.c > +++ b/src/vesa.c > @@ -1356,6 +1356,27 @@ VESALoadPalette(ScrnInfoPtr pScrn, int numColors, int > *indices, > int i, idx; > int base; > > + if (!pVesa->savedPal) { > +#define VESADACDelay() > \ > + do { > \ > + (void)inb(pVesa->ioBase + VGA_IOBASE_COLOR + > VGA_IN_STAT_1_OFFSET); \ > + (void)inb(pVesa->ioBase + VGA_IOBASE_COLOR + > VGA_IN_STAT_1_OFFSET); \ > + } while (0) > + > + for (i = 0; i < numColors; i++) { > + idx = indices[i]; > + outb(pVesa->ioBase + VGA_DAC_WRITE_ADDR, idx); > + VESADACDelay(); > + outb(pVesa->ioBase + VGA_DAC_DATA, colors[idx].red); > + VESADACDelay(); > + outb(pVesa->ioBase + VGA_DAC_DATA, colors[idx].green); > + VESADACDelay(); > + outb(pVesa->ioBase + VGA_DAC_DATA, colors[idx].blue); > + VESADACDelay(); > + } > + return; > + } > + > if (pVesa->pal == NULL) > pVesa->pal = calloc(1, sizeof(CARD32) * 256); > > -- > 2.14.3 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: https://lists.x.org/mailman/listinfo/xorg-devel _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
