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

Reply via email to