* status
@ 2002-11-22 17:52 James Simmons
2002-11-22 21:45 ` status Antonino Daplas
0 siblings, 1 reply; 13+ messages in thread
From: James Simmons @ 2002-11-22 17:52 UTC (permalink / raw)
To: Linux console project; +Cc: Linux Fbdev development list
Hi folks!!!
Just to let you know where I am for the fbdev developement. I finished
off the latest api changes. The cursor api has been cleaned up and it uses
fb_image struct. This makes life easier.
I ported over the ATI 128 driver to the latest changes. I finished the
3Dfx driver yesterday and got the ATI mach 64 driver done this morning.
I will test it tomorrow. Then I will finsih up the NVIDIA driver. After
that I'm going to push the code to linus.
I started to hack at fbcon.c but realized it is such a mess I am going
to rewrite it from scratch. This will be after the push to linus. I plan
to use MDA console and create a modular fbcon that I can play with at
will.
The other annoucement is I have started to look for funding for this
developement. At present I haven't found anything. I realized for the
fbdev and console changes to be done I need to devote all my time to do
this. To do this will require funding so I can pay my most basic bills.
Wish me luck.
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: status
2002-11-22 21:45 ` status Antonino Daplas
@ 2002-11-22 19:04 ` James Simmons
2002-11-22 22:12 ` status Antonino Daplas
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: James Simmons @ 2002-11-22 19:04 UTC (permalink / raw)
To: Antonino Daplas; +Cc: Linux console project, Linux Fbdev development list
> Any patches in the meantime? I have a few changes I can pass to you:
Yes of course!!!!
> 1. optimized putcs to speed up scrolling by 2-3x. (it's a small patch
> but it already outperforms fb-2.4 especially at high color depths).
> Compared with the previous patch I submitted, this change is
> non-intrusive, so no other changes are required.
>
> 2. vga16fb imageblit that supports drawing of the penguin (vga-4-planes
> only)
>
> 3. logo drawing for directcolor visuals.
Please send me those patches ASAP!!! I will linclude them right away.
> The above should complete softaccel support for most hardware except for
> the more esoteric ones (mostly authored by Geert).
Geert is busy porting the Amigia driver to the new api. That means all the
ilbm, iplan stuff will go away :-)
> Also cfbcursor is a bit misleading, no? It implies support for
> packed-pixels only, but I already use it with vga16fb.
OOps. You are right. What should we call it?
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: status
2002-11-22 17:52 status James Simmons
@ 2002-11-22 21:45 ` Antonino Daplas
2002-11-22 19:04 ` status James Simmons
0 siblings, 1 reply; 13+ messages in thread
From: Antonino Daplas @ 2002-11-22 21:45 UTC (permalink / raw)
To: James Simmons; +Cc: Linux console project, Linux Fbdev development list
On Fri, 2002-11-22 at 22:52, James Simmons wrote:
>
> Hi folks!!!
>
> Just to let you know where I am for the fbdev developement. I finished
> off the latest api changes. The cursor api has been cleaned up and it uses
> fb_image struct. This makes life easier.
> I ported over the ATI 128 driver to the latest changes. I finished the
> 3Dfx driver yesterday and got the ATI mach 64 driver done this morning.
> I will test it tomorrow. Then I will finsih up the NVIDIA driver. After
> that I'm going to push the code to linus.
Any patches in the meantime? I have a few changes I can pass to you:
1. optimized putcs to speed up scrolling by 2-3x. (it's a small patch
but it already outperforms fb-2.4 especially at high color depths).
Compared with the previous patch I submitted, this change is
non-intrusive, so no other changes are required.
2. vga16fb imageblit that supports drawing of the penguin (vga-4-planes
only)
3. logo drawing for directcolor visuals.
The above should complete softaccel support for most hardware except for
the more esoteric ones (mostly authored by Geert).
Also cfbcursor is a bit misleading, no? It implies support for
packed-pixels only, but I already use it with vga16fb.
Tony
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: status
2002-11-22 19:04 ` status James Simmons
@ 2002-11-22 22:12 ` Antonino Daplas
2002-11-22 22:57 ` status Antonino Daplas
2002-11-23 21:07 ` status Geert Uytterhoeven
2 siblings, 0 replies; 13+ messages in thread
From: Antonino Daplas @ 2002-11-22 22:12 UTC (permalink / raw)
To: James Simmons; +Cc: Linux console project, Linux Fbdev development list
On Sat, 2002-11-23 at 00:04, James Simmons wrote:
>
> > Any patches in the meantime? I have a few changes I can pass to you:
>
> Yes of course!!!!
>
I mean, do you have patches against vanilla linux? I currently don't
have bk right now. I browsed the bk repository, and it seems you made a
lot of changes.
> > 1. optimized putcs to speed up scrolling by 2-3x. (it's a small patch
> > but it already outperforms fb-2.4 especially at high color depths).
> > Compared with the previous patch I submitted, this change is
> > non-intrusive, so no other changes are required.
> >
> > 2. vga16fb imageblit that supports drawing of the penguin (vga-4-planes
> > only)
> >
> > 3. logo drawing for directcolor visuals.
>
> Please send me those patches ASAP!!! I will linclude them right away.
I can, but against 2.5.48 only + your old fbdev.diff. You might have a
hard time merging it to your repository.
>
> > The above should complete softaccel support for most hardware except for
> > the more esoteric ones (mostly authored by Geert).
>
> Geert is busy porting the Amigia driver to the new api. That means all the
> ilbm, iplan stuff will go away :-)
>
> > Also cfbcursor is a bit misleading, no? It implies support for
> > packed-pixels only, but I already use it with vga16fb.
>
> OOps. You are right. What should we call it?
>
I don't know, gen_cursor?
Tony
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: status
2002-11-22 19:04 ` status James Simmons
2002-11-22 22:12 ` status Antonino Daplas
@ 2002-11-22 22:57 ` Antonino Daplas
2002-11-23 21:07 ` status Geert Uytterhoeven
2 siblings, 0 replies; 13+ messages in thread
From: Antonino Daplas @ 2002-11-22 22:57 UTC (permalink / raw)
To: James Simmons; +Cc: Linux console project, Linux Fbdev development list
[-- Attachment #1: Type: text/plain, Size: 780 bytes --]
On Sat, 2002-11-23 at 00:04, James Simmons wrote:
>
> > 1. optimized putcs to speed up scrolling by 2-3x. (it's a small patch
> > but it already outperforms fb-2.4 especially at high color depths).
> > Compared with the previous patch I submitted, this change is
> > non-intrusive, so no other changes are required.
> >
> > 2. vga16fb imageblit that supports drawing of the penguin (vga-4-planes
> > only)
> >
> > 3. logo drawing for directcolor visuals.
>
> Please send me those patches ASAP!!! I will linclude them right away.
>
Okay. Instead of patches, I'll just attach a file with the targeted
functions which you can choose to cut and paste or modify as you see
fit.
vga16fb_imageblit in vga16fb.c
fbcon_show_logo in fbcon.c
fbcon_accel_putcs in fbcon-accel.c
[-- Attachment #2: changes.txt --]
[-- Type: text/plain, Size: 13428 bytes --]
/*
* James,
*
* fbcon_pixmap is where we construct the individual characters
* into a single combined bitmap before submitting in one burst
* to imageblit.
*
* Since you removed fbcon_accel_setup already, fbcon_pixmap
* can be statically allocated (max xres * max fontheight/8) which
* should be 4096 for a 2048 xres and a fontheight of 16. 8192 may
* be safer number.
*
* Also dynamic allocation segfaults when we do a kfree and hardware
* is still processing contents. This is where fb_sync() will be useful.
*/
static u8 *fbcon_pixmap = NULL;
void fbcon_accel_setup(struct display *p)
{
if (fbcon_pixmap != NULL) {
if (p->fb_info->fbops->fb_sync)
p->fb_info->fbops->fb_sync(p->fb_info);
kfree(fbcon_pixmap);
fbcon_pixmap = NULL;
}
fbcon_pixmap = kmalloc(fontheight(p) *
(p->fb_info->var.xres_virtual + 7)/8,
GFP_KERNEL);
p->next_line = p->fb_info->fix.line_length;
p->next_plane = 0;
}
void fbcon_accel_putcs(struct vc_data *vc, struct display *p,
const unsigned short *s, int count, int yy, int xx)
{
struct fb_info *info = p->fb_info;
unsigned short charmask = p->charmask;
unsigned int width = ((fontwidth(p) + 7) >> 3);
struct fb_image image;
unsigned int cellsize = fontheight(p) * width;
u16 c = scr_readw(s);
image.fg_color = attr_fgcol(p, c);
image.bg_color = attr_bgcol(p, c);
image.dx = xx * fontwidth(p);
image.dy = yy * fontheight(p);
image.height = fontheight(p);
image.depth = 1;
if (!(fontwidth(p) & 7) && fbcon_pixmap != NULL) {
unsigned int pitch = width * count, i, j;
char *src, *dst, *dst0;
dst0 = fbcon_pixmap;
image.width = fontwidth(p) * count;
image.data = fbcon_pixmap;
while (count--) {
src = p->fontdata + (scr_readw(s++) & charmask) * cellsize;
dst = dst0;
for (i = image.height; i--; ) {
for (j = 0; j < width; j++)
dst[j] = *src++;
dst += pitch;
}
dst0 += width;
}
info->fbops->fb_imageblit(info, &image);
}
else {
image.width = fontwidth(p);
while (count--) {
image.data = p->fontdata +
(scr_readw(s++) & charmask) * cellsize;
info->fbops->fb_imageblit(info, &image);
image.dx += fontwidth(p);
}
}
}
/*
* fbcon_show_logo that supports drawing using fb_imageblit. All packed
* pixel formats (truecolor, directcolor, pseudocolor) should now be
* supported. It also supports logo drawing with vga-4-planes as pseudocolor
* at 4 bpp.
*/
static int __init fbcon_show_logo( void )
{
struct display *p = &fb_display[fg_console]; /* draw to vt in foreground */
struct fb_info *info = p->fb_info;
#ifdef CONFIG_FBCON_ACCEL
struct fb_image image;
u32 *palette = NULL, *saved_palette = NULL;
char *logo_new = NULL;
#else
int line = p->next_line, x1, y1;
unsigned char *dst, *src;
#endif
int depth = info->var.bits_per_pixel;
unsigned char *fb = info->screen_base;
unsigned char *logo;
int i, j, n, x;
int logo_depth, done = 0;
/* Return if the frame buffer is not mapped */
if (!fb)
return 0;
/*
* Set colors if visual is PSEUDOCOLOR and we have enough colors, or for
* DIRECTCOLOR
* We don't have to set the colors for the 16-color logo, since that logo
* uses the standard VGA text console palette
*/
if ((info->fix.visual == FB_VISUAL_PSEUDOCOLOR && depth >= 8) ||
(info->fix.visual == FB_VISUAL_DIRECTCOLOR && depth >= 24))
for (i = 0; i < LINUX_LOGO_COLORS; i += n) {
n = LINUX_LOGO_COLORS - i;
if (n > 16)
/* palette_cmap provides space for only 16 colors at once */
n = 16;
palette_cmap.start = 32 + i;
palette_cmap.len = n;
for( j = 0; j < n; ++j ) {
palette_cmap.red[j] = (linux_logo_red[i+j] << 8) |
linux_logo_red[i+j];
palette_cmap.green[j] = (linux_logo_green[i+j] << 8) |
linux_logo_green[i+j];
palette_cmap.blue[j] = (linux_logo_blue[i+j] << 8) |
linux_logo_blue[i+j];
}
fb_set_cmap(&palette_cmap, 1, info);
}
if (depth >= 8) {
logo = linux_logo;
logo_depth = 8;
}
else if (depth >= 4) {
logo = linux_logo16;
logo_depth = 4;
}
else {
logo = linux_logo_bw;
logo_depth = 1;
}
#if defined(CONFIG_FBCON_ACCEL)
if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
(info->fix.visual == FB_VISUAL_DIRECTCOLOR && depth >= 24)) {
unsigned char mask[9] = { 0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff };
unsigned char redmask, greenmask, bluemask;
int redshift, greenshift, blueshift;
/*
* We have to create a temporary palette since console palette is only
* 16 colors long.
*/
palette = kmalloc(256 * 4, GFP_KERNEL);
if (palette == NULL)
return (LOGO_H + fontheight(p) - 1) / fontheight(p);
if (info->fix.visual == FB_VISUAL_TRUECOLOR) {
/* Bug: Doesn't obey msb_right ... (who needs that?) */
redmask = mask[info->var.red.length < 8 ? info->var.red.length : 8];
greenmask = mask[info->var.green.length < 8 ? info->var.green.length : 8];
bluemask = mask[info->var.blue.length < 8 ? info->var.blue.length : 8];
redshift = info->var.red.offset - (8 - info->var.red.length);
greenshift = info->var.green.offset - (8 - info->var.green.length);
blueshift = info->var.blue.offset - (8 - info->var.blue.length);
for ( i = 0; i < LINUX_LOGO_COLORS; i++) {
palette[i+32] = (safe_shift((linux_logo_red[i] & redmask), redshift) |
safe_shift((linux_logo_green[i] & greenmask), greenshift) |
safe_shift((linux_logo_blue[i] & bluemask), blueshift));
}
}
else {
redshift = info->var.red.offset;
greenshift = info->var.green.offset;
blueshift = info->var.blue.offset;
for (i = 32; i < LINUX_LOGO_COLORS; i++)
palette[i] = i << redshift | i << greenshift | i << blueshift;
}
saved_palette = info->pseudo_palette;
info->pseudo_palette = palette;
}
else if (info->fix.visual == FB_VISUAL_DIRECTCOLOR && depth >= 12 && depth < 24) {
logo_new = kmalloc(LOGO_W * LOGO_H, GFP_KERNEL);
if (logo_new == NULL)
return (LOGO_H + fontheight(p) - 1) / fontheight(p);
logo = logo_new;
for (i = 0; i < (LOGO_W * LOGO_H)/2; i++) {
logo_new[i*2] = linux_logo16[i] >> 4;
logo_new[(i*2)+1] = linux_logo16[i] & 0xf;
}
}
image.width = LOGO_W;
image.height = LOGO_H;
image.depth = depth;
image.data = logo;
image.dy = 0;
#endif
for (x = 0; x < num_online_cpus() * (LOGO_W + 8) &&
x < info->var.xres - (LOGO_W + 8); x += (LOGO_W + 8)) {
#if defined (CONFIG_FBCON_ACCEL)
image.dx = x;
info->fbops->fb_imageblit(info, &image);
done = 1;
#endif
#if defined(CONFIG_FBCON_AFB) || defined(CONFIG_FBCON_ILBM) || \
defined(CONFIG_FBCON_IPLAN2P2) || defined(CONFIG_FBCON_IPLAN2P4) || \
defined(CONFIG_FBCON_IPLAN2P8)
if (depth >= 2 && (info->fix.type == FB_TYPE_PLANES ||
info->fix.type == FB_TYPE_INTERLEAVED_PLANES)) {
/* planes (normal or interleaved), with color registers */
int bit;
unsigned char val, mask;
int plane = p->next_plane;
#if defined(CONFIG_FBCON_IPLAN2P2) || defined(CONFIG_FBCON_IPLAN2P4) || \
defined(CONFIG_FBCON_IPLAN2P8)
int line_length = info->fix.line_length;
/* for support of Atari interleaved planes */
#define MAP_X(x) (line_length ? (x) : ((x) & ~1)*depth + ((x) & 1))
#else
#define MAP_X(x) (x)
#endif
/* extract a bit from the source image */
#define BIT(p,pix,bit) (p[pix*logo_depth/8] & \
(1 << ((8-((pix*logo_depth)&7)-logo_depth) + bit)))
src = logo;
for( y1 = 0; y1 < LOGO_H; y1++ ) {
for( x1 = 0; x1 < LOGO_LINE; x1++, src += logo_depth ) {
dst = fb + y1*line + MAP_X(x/8+x1);
for( bit = 0; bit < logo_depth; bit++ ) {
val = 0;
for( mask = 0x80, i = 0; i < 8; mask >>= 1, i++ ) {
if (BIT( src, i, bit ))
val |= mask;
}
*dst = val;
dst += plane;
}
}
}
/* fill remaining planes */
if (depth > logo_depth) {
for( y1 = 0; y1 < LOGO_H; y1++ ) {
for( x1 = 0; x1 < LOGO_LINE; x1++ ) {
dst = fb + y1*line + MAP_X(x/8+x1) + logo_depth*plane;
for( i = logo_depth; i < depth; i++, dst += plane )
*dst = 0x00;
}
}
}
done = 1;
break;
}
#endif
#if defined(CONFIG_FBCON_MFB) || defined(CONFIG_FBCON_AFB) || \
defined(CONFIG_FBCON_ILBM) || defined(CONFIG_FBCON_HGA)
if (depth == 1 && (info->fix.type == FB_TYPE_PACKED_PIXELS ||
info->fix.type == FB_TYPE_PLANES ||
info->fix.type == FB_TYPE_INTERLEAVED_PLANES)) {
/* monochrome */
unsigned char inverse = p->inverse || info->fix.visual == FB_VISUAL_MONO01
? 0x00 : 0xff;
int is_hga = !strncmp(info->modename, "HGA", 3);
/* can't use simply memcpy because need to apply inverse */
for( y1 = 0; y1 < LOGO_H; y1++ ) {
src = logo + y1*LOGO_LINE;
if (is_hga)
dst = fb + (y1%4)*8192 + (y1>>2)*line + x/8;
else
dst = fb + y1*line + x/8;
for( x1 = 0; x1 < LOGO_LINE; ++x1 )
fb_writeb(*src++ ^ inverse, dst++);
}
done = 1;
}
#endif
#if defined(CONFIG_FBCON_VGA_PLANES)
if (depth == 4 && info->fix.type == FB_TYPE_VGA_PLANES) {
outb_p(1,0x3ce); outb_p(0xf,0x3cf);
outb_p(3,0x3ce); outb_p(0,0x3cf);
outb_p(5,0x3ce); outb_p(0,0x3cf);
src = logo;
for (y1 = 0; y1 < LOGO_H; y1++) {
for (x1 = 0; x1 < LOGO_W / 2; x1++) {
dst = fb + y1*line + x1/4 + x/8;
outb_p(0,0x3ce);
outb_p(*src >> 4,0x3cf);
outb_p(8,0x3ce);
outb_p(1 << (7 - x1 % 4 * 2),0x3cf);
fb_readb (dst);
fb_writeb (0, dst);
outb_p(0,0x3ce);
outb_p(*src & 0xf,0x3cf);
outb_p(8,0x3ce);
outb_p(1 << (7 - (1 + x1 % 4 * 2)),0x3cf);
fb_readb (dst);
fb_writeb (0, dst);
src++;
}
}
done = 1;
}
#endif
}
#if defined (CONFIG_FBCON_ACCEL)
if (palette != NULL)
kfree(palette);
if (saved_palette != NULL)
info->pseudo_palette = saved_palette;
if (logo_new != NULL)
kfree(logo_new);
#endif
/* Modes not yet supported: packed pixels with depth != 8 (does such a
* thing exist in reality?) */
return done ? (LOGO_H + fontheight(p) - 1) / fontheight(p) : 0 ;
}
/*
* The following is a vga imageblit that supports bitmaps greater than
* 8 pixels wide and logo drawing in vga-4-planes.
*
* I haven't made any changes to the other VGA formats. No hardware.
*/
void vga_imageblit_expand(struct fb_info *info, struct fb_image *image)
{
char *where = info->screen_base + (image->dx/8) +
image->dy * info->fix.line_length;
struct vga16fb_par *par = (struct vga16fb_par *) info->par;
u8 *cdat = image->data, *dst;
int x, y;
switch (info->fix.type) {
case FB_TYPE_VGA_PLANES:
if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) {
if (par->isVGA) {
setmode(2);
setop(0);
setsr(0xf);
setcolor(image->fg_color);
selectmask();
setmask(0xff);
writeb(image->bg_color, where);
rmb();
readb(where); /* fill latches */
setmode(3);
wmb();
for (y = 0; y < image->height; y++) {
dst = where;
for (x = image->width/8; x--;)
writeb(*cdat++, dst++);
where += info->fix.line_length;
}
wmb();
} else {
setmode(0);
setop(0);
setsr(0xf);
setcolor(image->bg_color);
selectmask();
setmask(0xff);
for (y = 0; y < image->height; y++) {
dst = where;
for (x=image->width/8; x--;){
rmw(dst);
setcolor(image->fg_color);
selectmask();
if (*cdat) {
setmask(*cdat++);
rmw(dst++);
}
}
where += info->fix.line_length;
}
}
} else
vga_8planes_imageblit(info, image);
break;
#ifdef FBCON_HAS_VGA
case FB_TYPE_TEXT:
break;
#endif
case FB_TYPE_PACKED_PIXELS:
default:
cfb_imageblit(info, image);
break;
}
}
void vga_imageblit_color(struct fb_info *info, struct fb_image *image)
{
/*
* Draw logo
*/
struct vga16fb_par *par = (struct vga16fb_par *) info->par;
char *where = info->screen_base + image->dy * info->fix.line_length +
image->dx/8;
char *cdat = image->data, *dst;
int x, y;
switch (info->fix.type) {
case FB_TYPE_VGA_PLANES:
if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4 &&
par->isVGA) {
setsr(0xf);
setop(0);
setmode(0);
for (y = 0; y < image->height; y++) {
for (x = 0; x < image->width/2; x++) {
dst = where + x/4;
setcolor(*cdat >> 4);
selectmask();
setmask(1 << (7 - x % 4 * 2));
fb_readb(dst);
fb_writeb(0, dst);
setcolor(*cdat & 0xf);
selectmask();
setmask(1 << (7 - (1 + x % 4 * 2)));
fb_readb(dst);
fb_writeb(0, dst);
cdat++;
}
where += info->fix.line_length;
}
}
break;
case FB_TYPE_PACKED_PIXELS:
cfb_imageblit(info, image);
break;
default:
break;
}
}
void vga16fb_imageblit(struct fb_info *info, struct fb_image *image)
{
if (image->depth == 1)
vga_imageblit_expand(info, image);
else if (image->depth == info->var.bits_per_pixel)
vga_imageblit_color(info, image);
}
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: status
2002-11-22 19:04 ` status James Simmons
2002-11-22 22:12 ` status Antonino Daplas
2002-11-22 22:57 ` status Antonino Daplas
@ 2002-11-23 21:07 ` Geert Uytterhoeven
2002-11-25 18:47 ` James Simmons
2 siblings, 1 reply; 13+ messages in thread
From: Geert Uytterhoeven @ 2002-11-23 21:07 UTC (permalink / raw)
To: James Simmons
Cc: Antonino Daplas, Linux console project,
Linux Fbdev development list, Linux/m68k
On Fri, 22 Nov 2002, James Simmons wrote:
> Geert is busy porting the Amigia driver to the new api. That means all the
> ilbm, iplan stuff will go away :-)
I have first code for amifb, but it doesn't work yet, due to other problems
with 2.5.x on Amiga. I hope to fix these tomorrow...
Besides, we still need someone to take care of the Atari 2-byte interleaved
bitplanes (iplan2p*), since I don't have the hardware, and am not 100% sure how
they work. But reviving 2.5.x on Atari will be even harder...
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
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: status
2002-11-23 21:07 ` status Geert Uytterhoeven
@ 2002-11-25 18:47 ` James Simmons
2002-11-25 21:35 ` Johan Bolmsjo
0 siblings, 1 reply; 13+ messages in thread
From: James Simmons @ 2002-11-25 18:47 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Antonino Daplas, Linux console project,
Linux Fbdev development list, Linux/m68k
> > Geert is busy porting the Amigia driver to the new api. That means all the
> > ilbm, iplan stuff will go away :-)
>
> I have first code for amifb, but it doesn't work yet, due to other problems
> with 2.5.x on Amiga. I hope to fix these tomorrow...
Yeah!!!
> Besides, we still need someone to take care of the Atari 2-byte interleaved
> bitplanes (iplan2p*), since I don't have the hardware, and am not 100% sure
> how they work. But reviving 2.5.x on Atari will be even harder...
Me neither. But there is a way to find out. A trick I used to figure
out the hga framebuffer lay out. Build just the fbdev layer without fbcon.
Then do a write to /dev/fbX to see what happens.
The way I have fbdev now is when you open /dev/fb0 the hardware mode is
set. When you close the /dev/fb the hardware goes back to text mode. I did
it this way so you could insmod the driver and NOT change the hardware
state. Also fb_open is the function register_framebuffer needs just before
take_over_console happens. The other benifiet is if X dies that uses
/dev/fb to set it modes then the file will be closed automatically and teh
hardware state will be set to a sane state. This is for the case of vgacon
with fbdev. WHat about from fbco? Well that is easy since fb_open passes a
falg to let us knwo if it is from userland for fbcon.
P.S
It appears fbcon is totally broken in BK. I'm using the above trick to
test the code. Tonight I'm going to work on making fbcon completely
modular. Yeah!!!!
-------------------------------------------------------
This SF.net email is sponsored by: Get the new Palm Tungsten T
handheld. Power & Color in a compact size!
http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0002en
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: status
2002-11-25 18:47 ` James Simmons
@ 2002-11-25 21:35 ` Johan Bolmsjo
2002-11-26 0:39 ` James Simmons
2002-11-27 23:02 ` Geert Uytterhoeven
0 siblings, 2 replies; 13+ messages in thread
From: Johan Bolmsjo @ 2002-11-25 21:35 UTC (permalink / raw)
To: Linux Fbdev development list
mån 2002-11-25 klockan 19.47 skrev James Simmons:
>
> > > Geert is busy porting the Amigia driver to the new api. That means all the
> > > ilbm, iplan stuff will go away :-)
> >
> > I have first code for amifb, but it doesn't work yet, due to other problems
> > with 2.5.x on Amiga. I hope to fix these tomorrow...
>
> Yeah!!!
>
> > Besides, we still need someone to take care of the Atari 2-byte interleaved
> > bitplanes (iplan2p*), since I don't have the hardware, and am not 100% sure
> > how they work. But reviving 2.5.x on Atari will be even harder...
For what it's worth, the interleaved modes on atari works like this:
The bitplanes are interleaved on 16 bit big-endian word basis so if you
have two bitplanes, bit 0 of the first 16 pixels would be in the first
16 bit word in the display memory, bit 1 of the first 16 pixels would be
in the second word. With bit 0 I mean as masked out by & 0x0001 in C,
and bit 1 as masked out by 0x0002.
The Atari ST line support three resolutions by default:
320x200 4 bit planes
640x200 2 bit planes
640x400 1 bit plane
The Atari Falcon has a programmable clock so many resolutions are
possible and it also features a 8 bit planes mode and 16 bit high colour
mode.
P.S.
I don't have any Atari hardware myself anymore.
> Me neither. But there is a way to find out. A trick I used to figure
> out the hga framebuffer lay out. Build just the fbdev layer without fbcon.
> Then do a write to /dev/fbX to see what happens.
> The way I have fbdev now is when you open /dev/fb0 the hardware mode is
> set. When you close the /dev/fb the hardware goes back to text mode. I did
> it this way so you could insmod the driver and NOT change the hardware
> state. Also fb_open is the function register_framebuffer needs just before
> take_over_console happens. The other benifiet is if X dies that uses
> /dev/fb to set it modes then the file will be closed automatically and teh
> hardware state will be set to a sane state. This is for the case of vgacon
> with fbdev. WHat about from fbco? Well that is easy since fb_open passes a
> falg to let us knwo if it is from userland for fbcon.
>
> P.S
> It appears fbcon is totally broken in BK. I'm using the above trick to
> test the code. Tonight I'm going to work on making fbcon completely
> modular. Yeah!!!!
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: Get the new Palm Tungsten T
> handheld. Power & Color in a compact size!
> http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0002en
> _______________________________________________
> Linux-fbdev-devel mailing list
> Linux-fbdev-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
-------------------------------------------------------
This SF.net email is sponsored by: Get the new Palm Tungsten T
handheld. Power & Color in a compact size!
http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0002en
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: status
2002-11-25 21:35 ` Johan Bolmsjo
@ 2002-11-26 0:39 ` James Simmons
2002-11-27 23:02 ` Geert Uytterhoeven
1 sibling, 0 replies; 13+ messages in thread
From: James Simmons @ 2002-11-26 0:39 UTC (permalink / raw)
To: Johan Bolmsjo; +Cc: Linux Fbdev development list
> For what it's worth, the interleaved modes on atari works like this:
>
> The bitplanes are interleaved on 16 bit big-endian word basis so if you
> have two bitplanes, bit 0 of the first 16 pixels would be in the first
> 16 bit word in the display memory, bit 1 of the first 16 pixels would be
> in the second word. With bit 0 I mean as masked out by & 0x0001 in C,
> and bit 1 as masked out by 0x0002.
>
> The Atari ST line support three resolutions by default:
> 320x200 4 bit planes
> 640x200 2 bit planes
> 640x400 1 bit plane
Okay I have been think about the other modes and can't figure out how they
would work. Could you do a run down to get my hamster running?
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: status
2002-11-25 21:35 ` Johan Bolmsjo
2002-11-26 0:39 ` James Simmons
@ 2002-11-27 23:02 ` Geert Uytterhoeven
2002-12-08 11:47 ` Geert Uytterhoeven
1 sibling, 1 reply; 13+ messages in thread
From: Geert Uytterhoeven @ 2002-11-27 23:02 UTC (permalink / raw)
To: Johan Bolmsjo; +Cc: Linux Fbdev development list, Linux/m68k
On 25 Nov 2002, Johan Bolmsjo wrote:
> For what it's worth, the interleaved modes on atari works like this:
>
> The bitplanes are interleaved on 16 bit big-endian word basis so if you
> have two bitplanes, bit 0 of the first 16 pixels would be in the first
> 16 bit word in the display memory, bit 1 of the first 16 pixels would be
> in the second word. With bit 0 I mean as masked out by & 0x0001 in C,
> and bit 1 as masked out by 0x0002.
Thanks! This is exactly the kind of information I needed!
I added simple unoptimized support for Atari interleaved bitplanes to fbtest.
When I know I got the basics right, I can start writing optimized drawing
routines.
Anyone who cares to give it a try? Just check out CVS module `fbtest' from
http://sourceforge.net/cvs/?group_id=908, type `make' and run `fbtest' for all
available color depths (use fbset first), and tell me whether it works.
If no one is left with an Atari with Linux/m68k installed, I can create a
ramdisk containing fbset and fbtest, so you just need ataboot and a kernel to
test it.
Thanks!
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
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: status
@ 2002-11-28 12:24 Szymanski, Frank-Peter
2002-11-28 12:32 ` Geert Uytterhoeven
0 siblings, 1 reply; 13+ messages in thread
From: Szymanski, Frank-Peter @ 2002-11-28 12:24 UTC (permalink / raw)
To: linux-fbdev-devel; +Cc: geert
Hi Geert,
>Anyone who cares to give it a try? Just check out CVS module `fbtest' from
>http://sourceforge.net/cvs/?group_id=908, type `make' and run `fbtest' for
all
>available color depths (use fbset first), and tell me whether it works.
>If no one is left with an Atari with Linux/m68k installed, I can create a
>ramdisk containing fbset and fbtest, so you just need ataboot and a kernel
to
>test it.
Due to the fact that since kernel 2.2.x X11 doesn't work any longer on
ATARIs I don't have a working Linux/m68k configuration ATM but I have both a
2.0.3x/2.2.x kernel and ataboot to test it if you like.
Just tell me where I can find the above mentioned ramdisk.
Regards,
Frank
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: status
2002-11-28 12:24 Szymanski, Frank-Peter
@ 2002-11-28 12:32 ` Geert Uytterhoeven
0 siblings, 0 replies; 13+ messages in thread
From: Geert Uytterhoeven @ 2002-11-28 12:32 UTC (permalink / raw)
To: Szymanski, Frank-Peter; +Cc: Linux Frame Buffer Device Development, Linux/m68k
On Thu, 28 Nov 2002, Szymanski, Frank-Peter wrote:
> >Anyone who cares to give it a try? Just check out CVS module `fbtest' from
> >http://sourceforge.net/cvs/?group_id=908, type `make' and run `fbtest' for
> all
> >available color depths (use fbset first), and tell me whether it works.
>
> >If no one is left with an Atari with Linux/m68k installed, I can create a
> >ramdisk containing fbset and fbtest, so you just need ataboot and a kernel
> to
> >test it.
>
> Due to the fact that since kernel 2.2.x X11 doesn't work any longer on
> ATARIs I don't have a working Linux/m68k configuration ATM but I have both a
> 2.0.3x/2.2.x kernel and ataboot to test it if you like.
You don't need X to run fbtest. Even better, do _not_ run it under X! All you
need is a kernel with atafb.
> Just tell me where I can find the above mentioned ramdisk.
It's not yet available. Don't expect it before next weekend, though.
To compile your own fbtest, all you need is a working C compiler, netpbm, and
cvs to get the sources.
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
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Re: status
2002-11-27 23:02 ` Geert Uytterhoeven
@ 2002-12-08 11:47 ` Geert Uytterhoeven
0 siblings, 0 replies; 13+ messages in thread
From: Geert Uytterhoeven @ 2002-12-08 11:47 UTC (permalink / raw)
To: Linux/m68k, Linux Frame Buffer Device Development
On Thu, 28 Nov 2002, Geert Uytterhoeven wrote:
> On 25 Nov 2002, Johan Bolmsjo wrote:
> > For what it's worth, the interleaved modes on atari works like this:
> >
> > The bitplanes are interleaved on 16 bit big-endian word basis so if you
> > have two bitplanes, bit 0 of the first 16 pixels would be in the first
> > 16 bit word in the display memory, bit 1 of the first 16 pixels would be
> > in the second word. With bit 0 I mean as masked out by & 0x0001 in C,
> > and bit 1 as masked out by 0x0002.
>
> Thanks! This is exactly the kind of information I needed!
>
> I added simple unoptimized support for Atari interleaved bitplanes to fbtest.
> When I know I got the basics right, I can start writing optimized drawing
> routines.
>
> Anyone who cares to give it a try? Just check out CVS module `fbtest' from
> http://sourceforge.net/cvs/?group_id=908, type `make' and run `fbtest' for all
> available color depths (use fbset first), and tell me whether it works.
>
> If no one is left with an Atari with Linux/m68k installed, I can create a
> ramdisk containing fbset and fbtest, so you just need ataboot and a kernel to
> test it.
I put the ramdisk at
http://home.tvd.be/cr26864/Linux/m68k/ramdisk-fbtest-m68k.gz
Just boot it with whatever kernel (incl. atafb, of course) you have, and run
`fbtest' for all available color depths. You can change the color depth with
`fbset -depth <depth>'. Note that it will be slow, since so far I implemented
single pixel drawing only.
Thanks for testing!
Gr{oetje,eeting}s,
Geert
P.S. Sorry that it took that long, but my Amiga 4000 needed urgent surgery due
to a leaking NiCd battery that started to corrode the mainboard.
Fortunately I managed to replace it in time by a new NiMH part.
--
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
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2002-12-08 11:48 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-11-22 17:52 status James Simmons
2002-11-22 21:45 ` status Antonino Daplas
2002-11-22 19:04 ` status James Simmons
2002-11-22 22:12 ` status Antonino Daplas
2002-11-22 22:57 ` status Antonino Daplas
2002-11-23 21:07 ` status Geert Uytterhoeven
2002-11-25 18:47 ` James Simmons
2002-11-25 21:35 ` Johan Bolmsjo
2002-11-26 0:39 ` James Simmons
2002-11-27 23:02 ` Geert Uytterhoeven
2002-12-08 11:47 ` Geert Uytterhoeven
-- strict thread matches above, loose matches on Subject: below --
2002-11-28 12:24 Szymanski, Frank-Peter
2002-11-28 12:32 ` Geert Uytterhoeven
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).