Keith Whitwell wrote:
> Michel Dänzer wrote:> On Thu, 2006-09-21 at 12:58 +0100, Keith Whitwell
> wrote:> Michel Dänzer wrote:> > On Wed, 2006-09-20 at 18:56 +0000, Keith
> Whitwell wrote:> >>> >> Log message:> >> Support both big and little
> endian, more source types and more> >> destination formats through the
> swizzle path. It would be great to> >> see this tested on eg, PPC
> machines...> > > > With the current trunk, glean pixelFormats fails 201
> combinations on big> > endian with both drivers, of which this commit broke
> 42 and the 'Extend> 'Both drivers' referring to r200 and r300 BTW. I haven't
> tried softwareMesa yet.>>> swizzle support to all remaining source formats
> and texture destination> > formats.' commit the other 159 (yay git-bisect!
> :).> > > > Changing type_endian_mapping() to return map_identity for> >
> GL_UNSIGNED_BYTE brings it down to 144 and changing the last two> >
> components of map_3210 to { 7, 6 } to 138, > > I think this must be a fluke -
> the 4,5 there refer to ZERO,ONE def
ined > elsewhere. Those values are always at 4,5 and are only addressed as >
elements in an array of bytes - I can't see how their positions might > change
in littleEndian machines.> Yeah, as I said, I didn't really know what I was
doing, it was justtrial and error. :)
> The whole idea is to compute a mapping from ubytes in the incoming data to
> ubytes in the desired internal image format. Any 8bpp color image can be
> converted into any other by an extended swizzle at each pixel, ie a mapping
> of the orignal ubytes plus a hardcoded ZERO and ONE value onto the
> destination.
> Calculating what that mapping should be is suprisingly complex, and is what
> all the fuss is about.
> Take srcFormat: GL_RGBA srcType: GL_UNSIGNED_BYTE internalFormat:
> GL_RGB destFormat: argb8888
> We need to convert from RGBA->RGB->argb8888.
> It might be possible to store conversion mappings between all possible
> combinations of srcFormat, internalFormat and destFormat, but the table would
> be huge.
> Even just storing the mappings between any pair of formats is too much data.
> Instead, what I've done is store mappings to/from GL_RGBA which I can
> concatenate as necessary:
> RGBA->RGBA, RGBA->RGB, RGB->RGBA, RGBA->argb8888
> It should also be possible to handle littleEndian and srcPacking->swapBytes
> by concatenating further mappings which account for how the ordering of the
> source data differs from what we'd get if we had it in "GLubyte rgba[4]"
> format.
> So, type_endian_mapping should provide a mapping between (GLubyte *)(TYPE
> *)data and what you'd get if you placed r,g,b,a into a GLubyte data[4] value.
> Swapbytes takes place after that conversion and probably doesn't need to
> change for BE vs. LE, but I could be wrong...
> Keith
If anyone knows why these emails are turning out all screwed up and
missing the newlines, please let me know. I'm just using thunderbird on
ubuntu and it's a suprise that such a politically correct distro can't
handle emails that involve non-english characters.
Keith
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev