util: Code generate functions to pack and unpack a single pixel.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 26 Feb 2010 16:45:22 +0000 (16:45 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 26 Feb 2010 16:46:34 +0000 (16:46 +0000)
commit9beb302212a2afac408016cbd7b93c8b859e4910
tree042dcd52d6b20d233313de8c0bc093e00959daff
parent4757325951e35460975e77d70dacf8b6eb10ab11
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;
};

Not used everywhere yet because it seems compiled code is slower than
bitshift arithmetic by some misterious reason. So we should generate
bitshift arithmetic at least for the simple UNORM pixel formats.
src/gallium/auxiliary/Makefile
src/gallium/auxiliary/SConscript
src/gallium/auxiliary/util/.gitignore
src/gallium/auxiliary/util/u_format_access.py
src/gallium/auxiliary/util/u_format_pack.py [new file with mode: 0644]
src/gallium/drivers/llvmpipe/SConscript
src/gallium/drivers/llvmpipe/lp_tile_soa.py