Re: [V4L] bttv bitmap clipping, and bug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Trent Piepho wrote:
> 
> On Thu, 7 Sep 2000, Justin Schoeman wrote:
> > Just a quick comment on this thread: (from the bt848 pdf)
> > "WRITE, WRITEC and SKIP ... control the sequence of packed data written
> > to target memory on a byte resolution basis."
> >
> > So there are no problems doing byte-aligned clips.  I have tested this
> > myself (with bttv2), and it works perfectly (single pixel wide clips,
> > that is, but you obviously only get a small piece of the image before
> > running out of RISCMEM).  I seem to remember looking at bttv's clipping
> > code once, and (at least at that stage), there were a number of possible
> > RISC memory overflows.
> 
> Did you test it in 32bpp mode?  With dword wide data, getting single pixel
> clips is easy.

Tested in 8, 16 and 24 bpp.

> The overlay code in the v4l driver is pretty bad.  It doesn't use WRITEC
> instructions, which means that each pixel would written with a WRITE
> instruction, which requires a destination address.  While the bt848
> documentation doesn't say one way or the other if an address must be dword
> aligned, I've seen a couple posts that say that they must.
> 
> Just what the bt848 does with non-dword skip and write instructions is
> entirely unclear to me.  The manual doesn't help much, but some bits that
> appear relevant:
> 
> p43, "The FIFO block ... outputs DWORDs to the DMA Controller ..."
> 
> Seems pretty clear that the FIFO can only pass data to the DMA controller in
> dword wide blocks.
> 
> p48, "The Bt848's FIFO DWORDs are perfectly aligned to the PCI bus ..."
> 
> So writing the dwords of data from the FIFO to the PCI bus to a non-aligned
> address isn't possible.
> 
> p52, [SKIP instruction] "Skip ... count # of bytes from the FIFO. This may
>    start and stop in the middle of a DWORD."
> 
> Seems pretty clear that skipping non-dword aligned or long data is ok.  This
> text does NOT appear in the descriptions of the WRITE* instructions, which
> implies that they are different.
> 
> It's clear that writing byte wide data can be done using only dword wide
> writes and skips, with careful use of the byte enables.  If the bt848 is smart
> enough do this automatically, and how it would do so, it not clear to me.

The byte enables are more-or-less automatic.  All writes are DWORD
aligned, but the output of the FIFO has some automated logic to decide
which byte addresses to actually modify.  At least I assume this is so,
because I never implemented byte enables, but the stippel test worked
(in 8, 16 and 24 bpp modes - my X server didn't want to do 32bpp).

-justin





[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux