From: Michel D. <mi...@da...> - 2010-03-06 14:11:23
|
On Sat, 2010-03-06 at 12:44 +0000, José Fonseca wrote: > On Mon, 2010-03-01 at 09:03 -0800, Michel Dänzer wrote: > > On Fri, 2010-02-26 at 08:47 -0800, Jose Fonseca wrote: > > > Module: Mesa > > > Branch: master > > > Commit: 9beb302212a2afac408016cbd7b93c8b859e4910 > > > URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9beb302212a2afac408016cbd7b93c8b859e4910 > > > > > > Author: José Fonseca <jfo...@vm...> > > > Date: Fri Feb 26 16:45:22 2010 +0000 > > > > > > util: Code generate functions to pack and unpack a single pixel. > > > > > > Should work correctly for all pixel formats except SRGB formats. > > > > > > Generated code made much simpler by defining the pixel format as > > > a C structure. For example this is the generated structure for > > > PIPE_FORMAT_B6UG5SR5S_NORM: > > > > > > union util_format_b6ug5sr5s_norm { > > > uint16_t value; > > > struct { > > > int r:5; > > > int g:5; > > > unsigned b:6; > > > } chan; > > > }; > > > > José, are you aware that the memory layout of bitfields is mostly > > implementation dependent? IME this makes them mostly unusable for > > modelling hardware in a portable manner. > > It's not only implementation dependent and slow -- it is also buggy! > > gcc-4.4.3 is doing something very fishy to single bit fields. > > See the attached code. ff ff ff ff is expected, but ff ff ff 01 is > printed with gcc-4.4.3. Even without any optimization. gcc-4.3.4 works > fine. > > Am I missing something or is this effectively a bug? No idea, I just try to stay away from bitfields as much as possible. -- Earthling Michel Dänzer | http://www.vmware.com Libre software enthusiast | Debian, X and DRI developer |