Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Apr 1997 12:01:34 -0400
From:      Randall Hopper <rhh@ct.picker.com>
To:        Amancio Hasty <hasty@rah.star-gate.com>
Cc:        multimedia@freebsd.org
Subject:   Re: The "BT848 RISC Challenge"
Message-ID:  <19970425120134.00918@ct.picker.com>
In-Reply-To: <199704250205.TAA05767@rah.star-gate.com>; from Amancio Hasty on Thu, Apr 24, 1997 at 07:05:46PM -0700
References:  <19970424211546.22989@ct.picker.com> <199704250205.TAA05767@rah.star-gate.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I don't think you read my entire message.  Flipping the chip into RGB24 is
done (see the driver I posted yesterday).  

The issue is, without bt byte/short swapping enabled, the FIFO data is
rasterized as:

             <---- lower addr   higher addr ---->
             BGRBGRBG ...

Some folks' X servers config their video card for packed 24bpp in the
reverse memory organization:

             <---- lower addr   higher addr ---->
             RGBRGBRGB ...

Byte and word swapping doesn't help you here as the pixel FIFO is 32bits
wide.

It doesn't look like the chip supports writing in this format without a
pixel-hacking RISC program or hue tricks.  The basis of my question was, am
I missing something?

Randall

Amancio Hasty:
 |Hi,
 |
 |First of, the Bt848 driver operates in RGB mode and has been that way since
 |the beginning. What is currently out in beta in 
 |ftp://rah.star-gate.com/pub/bt848-clip.tar.gz is the swapping of pixel
 |orders and clip list support. 
 |
 |The Bt848 supports RGB32, RGB24, RGB16, and RGB15.
 |
 |The supported modes are RGB32 (METEOR_GEO_RGB24) and RGB15 ( METEOR_GEO_RGB16)
 |needless to say that the METEOR_GEO_RGBXXX are misnomers.
 |
 |the following table hopefully will make all this clear, from the
 |Bt848 databook:
 |
 |FIFO Input	Output of Fifo
 |31:24		[31:24]	[23:16]	[15:8]	[7:0]
 |23:16		[23:16] [31:24]	[7:0]	[15:8]
 |15:8		[15:8]	[7:0]	[31:24]	[23:16]
 |7:0		[7:0]	[15:8]	[23:16]	[31:24]
 |
 |If RGB24 is desired, then we can add an ioctl to tell the driver 
 |to dma the video using rgb24.
 |
 |A few ways of accomplishing this is to:
 |
 |1.  to create a bt848 ioctl call with the appropriate correct color depth.
 |    bt848SETRGB and pass a value of the color depth desired 
 |
 |2.  we can generalized the mechanism for setting the pixel order to also
 |    determine the color depth. 
 |
 |3.  Create a new bt848 ioctl call which has geometry, color depth, pixel
 |    order and video frame buffer info .
 |
 |----
 |
 |
 |Briefly, we can do it.
 |
 |	Amancio
 |
 |
 |From The Desk Of Randall Hopper :
 |> Thought that'd grab your attention   :-)
 |> 
 |> 
 |> THE CHALLENGE:  Figure out how to get the BT848 to DMA pixels in
 |>                 RGBRGB packed 24bpp (3Bpp) format to the frame buffer or
 |>                 memory.
 |> 
 |> 
 |>      It'd be cool if we could do this to support those of us whose Xservers
 |> config the card for this format.  For now, the driver limits direct video
 |> in 24bpp to those folks that have BGRBGR packed 24bpp organization.
 |> 
 |> SOME OPTIONS:
 |>     
 |>     1. Put the chip in RGB32 pixel FIFO mode with byte and short swapping 
 |>        enabled (ARGBARGB).  For each pixel, write 2 RISC instructions:  a
 |>        SKIP to skip the Alpha, and a WRITE to blast the RGB.  
 |> 
 |>        Hmmmmmm, let's see....that's only 2.5 Megs for a 640x480 image.  :-)
 |> 
 |>     2. Rotate the HUE 90 deg.  (I'm not kidding.  It works.  It's ugly but
 |>        it works!)
 |> 
 |> Anybody know a kindler, gentler way to do this on the chip? :-)
 |> 
 |> Randall
 |> 
 |
 |
 |



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19970425120134.00918>