Re: [RFC] support for real graphics hardware

Ladislav Michl <[email protected]>
Newsgroups gmane.linux.fbdev.user
Message-ID <20041029101131.GA2612@umax645sx>
On Fri, Oct 29, 2004 at 08:05:07AM +0800, Antonino A. Daplas wrote:
> However, it took a lot of pain to separate fbcon from fbdev, and making
> struct fbcon_ops visible to the fbdev driver is tantamount to reversing
> everything that was done.  So, no, struct fbcon_ops needs to be invisible
> from the drivers.

Ah, well... Newport can live with that easily, but it's pain for MGras
(SGI Octane graphics option). You need to setup very complicated DMA to
support copy area.

> And fb_fillrect|copyarea|imageblit will have to stay, although you are
> correct that the above functions are just a subset of tileblitting:-).

Now code looks like:
fbcon_putcs => fbcon_ops->putcs => info->fbops->fb_imageblit
fbcon_bmove => fbcon_ops->bmove => info->fbops->fb_copyarea
fbcon_clear => fbcon_ops->clear => info->fbops->fb_filrect

So there are four possibilities for MGras:
1) Implement console driver (like newport_con.c). That has clear
   disadvantage of no mode switching API and will cause troubles with
   adding DRM.
2) Implement copyarea in fb driver. That's very compicated (two DMA
   transfers - 24bit and 1bit) and slower than invalidating area (that
   is single 1bit DMA transfer) for bmove. (SGI Octane pages are there:
   http://helios.et.put.poznan.pl/~sskowron/ip30/)
3) Hook fb_con operations from driver. You don't like it.
4) Add option to fbcon which will implement bmove by redrawing affected
   area rather than copying rectangle.

> > Also having flag for supported font widths would be
> > nice, because REX3 cannot handle drawing 1bpp images other that 8*x
> > width efectively (zpattern line is misused for that).
> 
> We can do this, by adding a field that says that the driver can only do 
> blits if source bitmap width is divisible by 8 pixels. I think vga16fb needs
> this restriction too.

Ok. I remember such flag was there.

> Go ahead, write it.  But, do not make struct fbcon_ops visible to the fbdev
> driver, use the methods in info->tileops instead and set the
> FBINFO_MISC_TILEBLITTING bit in info->flags. The end result should be the same.

I'll do. Informations provided by you are sufficient to write Newport
driver. Let's see what could be done with MGras.

	ladis


-------------------------------------------------------
This Newsletter Sponsored by: Macrovision 
For reliable Linux application installations, use the industry's leading
setup authoring tool, InstallShield X. Learn more and evaluate 
today. http://clk.atdmt.com/MSI/go/ins0030000001msi/direct/01/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.