On Thu, 2006-09-21 at 13:55 +0100, 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 defined > 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. :)
>
> Michel,
>
> Maybe we can look at the failures one at a time - the attached patch
> causes the test to abort after the first real failure - can you use that
> and maybe turn on the printf in compute_component_mapping() to get the
> first failure and post it here?
from 1908/GL_RGBA to 1907/GL_RGB map 0 1 2 4 4 5
from 1907/GL_RGB to 1908/GL_RGBA map 0 1 2 5 4 5
i=0, srctype2ubyte_le[i]=3, src2base[i]=0, base2rgba[i]=0, rgba2dst[i]=3,
swap[i]=0
i=1, srctype2ubyte_le[i]=2, src2base[i]=1, base2rgba[i]=1, rgba2dst[i]=0,
swap[i]=1
i=2, srctype2ubyte_le[i]=1, src2base[i]=2, base2rgba[i]=2, rgba2dst[i]=1,
swap[i]=2
i=3, srctype2ubyte_le[i]=0, src2base[i]=4, base2rgba[i]=5, rgba2dst[i]=2,
swap[i]=3
map 5 3 2 1
pixelFormats failed at pixel (0,0), color channel 0:
Expected: 0xff 0x00 0x00 0x00
Found: 0x00 0x00 0xff 0x00
Format: GL_RGBA
Type: GL_UNSIGNED_BYTE
Internal Format: 3
BTW, software Mesa even fails 603 combinations with the trunk before
your last commit.
PS: Thanks a lot for your detailed explanation, but I'm afraid this is
still a bit above my head; I'm not sure I understand all the assumptions
before and after each of the mappings, and in particular I'm not sure
srcType alone is sufficient to determine the endianness mappings.
--
Earthling Michel Dänzer | http://tungstengraphics.com
Libre software enthusiast | Debian, X and DRI developer
-------------------------------------------------------------------------
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