Re: Xorg on m68k
On Tue, 19 Feb 2008, Geert Uytterhoeven wrote:
> On Tue, 19 Feb 2008, Petr Stehlik wrote:
> > Petr Stehlik wrote:
> > > Geert Uytterhoeven wrote:
> > > > For cfb16 on Falcon I see no direct problems. Perhaps it just failed
> > > > because DefaultDepth in /etc/X11/xorg.conf defaults to 24 these days?
> > >
> > > the problem I faced was that I couldn't *boot* in the 16bit color depth so I
> > > *thought* I couldn't run X, or something like that.
> >
> > IOW, if I set the DefaultDepth to 16 and use the cfb16 driver will it know how
> > to switch the framebuffer to Falcon truecolor mode?
>
> Yes it should.
Finally I managed to get fbset and fbtest (from sf.net CVS) through the network
into my virtual Atari. I fixed 2 brown paper bag bugs in fbtest, which now
works fine in all modes (interleaved bitplanes at 1/2/4/8 bpp and packed pixels
at 16 bpp). So in theory, X should work in 16 bpp mode, too.
The text console is broken in 16 bpp, as atafb uses the atafb_iplan2p8*
drawing operations for both 8 and 16 bpp. The patch below is a first
step to fix this, but it doesn't work yet as the cfb_*() routines need
valid numbers in fb_fix_screeninfo.line_length, which is not set up by atafb.
Oh well, may the all night hackers fix it ;-)
---
drivers/video/atafb.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
--- a/drivers/video/atafb.c
+++ b/drivers/video/atafb.c
@@ -2549,6 +2549,13 @@ static void atafb_fillrect(struct fb_inf
if (!rect->width || !rect->height)
return;
+#ifdef ATAFB_FALCON
+ if (info->var.bits_per_pixel == 16) {
+ cfb_fillrect(info, rect);
+ return;
+ }
+#endif
+
/*
* We could use hardware clipping but on many cards you get around
* hardware clipping by writing to framebuffer directly.
@@ -2583,6 +2590,13 @@ static void atafb_copyarea(struct fb_inf
u32 dx, dy, sx, sy, width, height;
int rev_copy = 0;
+#ifdef ATAFB_FALCON
+ if (info->var.bits_per_pixel == 16) {
+ cfb_copyarea(info, area);
+ return;
+ }
+#endif
+
/* clip the destination */
x2 = area->dx + area->width;
y2 = area->dy + area->height;
@@ -2629,6 +2643,13 @@ static void atafb_imageblit(struct fb_in
const char *src;
u32 dx, dy, width, height, pitch;
+#ifdef ATAFB_FALCON
+ if (info->var.bits_per_pixel == 16) {
+ cfb_imageblit(info, image);
+ return;
+ }
+#endif
+
/*
* We could use hardware clipping but on many cards you get around
* hardware clipping by writing to framebuffer directly like we are
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@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
Reply to:
- Follow-Ups:
- Re: Xorg on m68k
- From: Michael Schmitz <schmitz@granat.biophys.uni-duesseldorf.de>
- Re: Xorg on m68k
- From: Michael Schmitz <schmitz@granat.biophys.uni-duesseldorf.de>