util: Use python names consistent with u_format.h
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 26 Feb 2010 11:03:06 +0000 (11:03 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 26 Feb 2010 16:46:34 +0000 (16:46 +0000)
src/gallium/auxiliary/util/u_format_access.py
src/gallium/auxiliary/util/u_format_parse.py
src/gallium/auxiliary/util/u_format_table.py
src/gallium/drivers/llvmpipe/lp_tile_soa.py

index f7a92f6..267fb3f 100644 (file)
@@ -56,12 +56,12 @@ def is_format_supported(format):
         return False
 
     for i in range(4):
-        type = format.in_types[i]
-        if type.kind not in (VOID, UNSIGNED, FLOAT):
+        channel = format.channels[i]
+        if channel.type not in (VOID, UNSIGNED, FLOAT):
             return False
 
     # We can only read a color from a depth/stencil format if the depth channel is present
-    if format.colorspace == 'zs' and format.out_swizzle[0] == SWIZZLE_NONE:
+    if format.colorspace == 'zs' and format.swizzles[0] == SWIZZLE_NONE:
         return False
 
     return True
@@ -76,15 +76,15 @@ def native_type(format):
             return 'uint%u_t' % format.block_size()
         else:
             # For array pixel formats return the integer type that matches the color channel
-            type = format.in_types[0]
-            if type.kind == UNSIGNED:
-                return 'uint%u_t' % type.size
-            elif type.kind == SIGNED:
-                return 'int%u_t' % type.size
-            elif type.kind == FLOAT:
-                if type.size == 32:
+            channel = format.channels[0]
+            if channel.type == UNSIGNED:
+                return 'uint%u_t' % channel.size
+            elif channel.type == SIGNED:
+                return 'int%u_t' % channel.size
+            elif channel.type == FLOAT:
+                if channel.size == 32:
                     return 'float'
-                elif type.size == 64:
+                elif channel.size == 64:
                     return 'double'
                 else:
                     assert False
@@ -108,27 +108,27 @@ def intermediate_native_type(bits, sign):
         return 'uint%u_t' % bits
 
 
-def get_one_shift(type):
-    '''Get the number of the bit that matches unity for this type.'''
-    if type.kind == 'FLOAT':
+def get_one_shift(channel):
+    '''Get the number of the bit that matches unity for this channel.'''
+    if channel.type == 'FLOAT':
         assert False
-    if not type.norm:
+    if not channel.norm:
         return 0
-    if type.kind == UNSIGNED:
-        return type.size
-    if type.kind == SIGNED:
-        return type.size - 1
-    if type.kind == FIXED:
-        return type.size / 2
+    if channel.type == UNSIGNED:
+        return channel.size
+    if channel.type == SIGNED:
+        return channel.size - 1
+    if channel.type == FIXED:
+        return channel.size / 2
     assert False
 
 
-def get_one(type):
-    '''Get the value of unity for this type.'''
-    if type.kind == 'FLOAT' or not type.norm:
+def get_one(channel):
+    '''Get the value of unity for this channel.'''
+    if channel.type == 'FLOAT' or not channel.norm:
         return 1
     else:
-        return (1 << get_one_shift(type)) - 1
+        return (1 << get_one_shift(channel)) - 1
 
 
 def generate_clamp():
@@ -156,32 +156,32 @@ def generate_clamp():
         print
 
 
-def clamp_expr(src_type, dst_type, dst_native_type, value):
+def clamp_expr(src_channel, dst_channel, dst_native_type, value):
     '''Generate the expression to clamp the value in the source type to the
     destination type range.'''
 
-    if src_type == dst_type:
+    if src_channel == dst_channel:
         return value
 
     # Pick the approriate clamp function
-    if src_type.kind == FLOAT:
-        if src_type.size == 32:
+    if src_channel.type == FLOAT:
+        if src_channel.size == 32:
             func = 'clampf'
-        elif src_type.size == 64:
+        elif src_channel.size == 64:
             func = 'clamp'
         else:
             assert False
-    elif src_type.kind == UNSIGNED:
+    elif src_channel.type == UNSIGNED:
         func = 'clampui'
-    elif src_type.kind == SIGNED:
+    elif src_channel.type == SIGNED:
         func = 'clampsi'
     else:
         assert False
 
     # Clamp floats to [-1, 1] or [0, 1] range
-    if src_type.kind == FLOAT and dst_type.norm:
+    if src_channel.type == FLOAT and dst_channel.norm:
         max = 1
-        if src_type.sign and dst_type.sign:
+        if src_channel.sign and dst_channel.sign:
             min = -1
         else:
             min = 0
@@ -192,24 +192,24 @@ def clamp_expr(src_type, dst_type, dst_native_type, value):
     return value
 
 
-def conversion_expr(src_type, dst_type, dst_native_type, value):
+def conversion_expr(src_channel, dst_channel, dst_native_type, value):
     '''Generate the expression to convert a value between two types.'''
 
-    if src_type == dst_type:
+    if src_channel == dst_channel:
         return value
 
-    if src_type.kind == FLOAT and dst_type.kind == FLOAT:
+    if src_channel.type == FLOAT and dst_channel.type == FLOAT:
         return '(%s)%s' % (dst_native_type, value)
     
-    if not src_type.norm and not dst_type.norm:
+    if not src_channel.norm and not dst_channel.norm:
         return '(%s)%s' % (dst_native_type, value)
 
-    value = clamp_expr(src_type, dst_type, dst_native_type, value)
+    value = clamp_expr(src_channel, dst_channel, dst_native_type, value)
 
-    if dst_type.kind == FLOAT:
-        if src_type.norm:
-            one = get_one(src_type)
-            if src_type.size <= 23:
+    if dst_channel.type == FLOAT:
+        if src_channel.norm:
+            one = get_one(src_channel)
+            if src_channel.size <= 23:
                 scale = '(1.0f/0x%x)' % one
             else:
                 # bigger than single precision mantissa, use double
@@ -217,10 +217,10 @@ def conversion_expr(src_type, dst_type, dst_native_type, value):
             value = '(%s * %s)' % (value, scale)
         return '(%s)%s' % (dst_native_type, value)
 
-    if src_type.kind == FLOAT:
-        if dst_type.norm:
-            dst_one = get_one(dst_type)
-            if dst_type.size <= 23:
+    if src_channel.type == FLOAT:
+        if dst_channel.norm:
+            dst_one = get_one(dst_channel)
+            if dst_channel.size <= 23:
                 scale = '0x%x' % dst_one
             else:
                 # bigger than single precision mantissa, use double
@@ -228,18 +228,18 @@ def conversion_expr(src_type, dst_type, dst_native_type, value):
             value = '(%s * %s)' % (value, scale)
         return '(%s)%s' % (dst_native_type, value)
 
-    if src_type.kind == dst_type.kind:
-        src_one = get_one(src_type)
-        dst_one = get_one(dst_type)
+    if src_channel.type == dst_channel.type:
+        src_one = get_one(src_channel)
+        dst_one = get_one(dst_channel)
 
-        if src_one > dst_one and src_type.norm and dst_type.norm:
+        if src_one > dst_one and src_channel.norm and dst_channel.norm:
             # We can just bitshift
-            src_shift = get_one_shift(src_type)
-            dst_shift = get_one_shift(dst_type)
+            src_shift = get_one_shift(src_channel)
+            dst_shift = get_one_shift(dst_channel)
             value = '(%s >> %s)' % (value, src_shift - dst_shift)
         else:
             # We need to rescale using an intermediate type big enough to hold the multiplication of both
-            tmp_native_type = intermediate_native_type(src_type.size + dst_type.size, src_type.sign and dst_type.sign)
+            tmp_native_type = intermediate_native_type(src_channel.size + dst_channel.size, src_channel.sign and dst_channel.sign)
             value = '(%s)%s' % (tmp_native_type, value)
             value = '%s * 0x%x / 0x%x' % (value, dst_one, src_one)
         value = '(%s)%s' % (dst_native_type, value)
@@ -253,11 +253,11 @@ def compute_inverse_swizzle(format):
     inv_swizzle = [None]*4
     if format.colorspace == 'rgb':
         for i in range(4):
-            swizzle = format.out_swizzle[i]
+            swizzle = format.swizzles[i]
             if swizzle < 4:
                 inv_swizzle[swizzle] = i
     elif format.colorspace == 'zs':
-        swizzle = format.out_swizzle[0]
+        swizzle = format.swizzles[0]
         if swizzle < 4:
             inv_swizzle[swizzle] = 0
     else:
@@ -266,7 +266,7 @@ def compute_inverse_swizzle(format):
     return inv_swizzle
 
 
-def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
+def generate_format_read(format, dst_channel, dst_native_type, dst_suffix):
     '''Generate the function to read pixels from a particular format'''
 
     name = format.short_name()
@@ -287,11 +287,11 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
     names = ['']*4
     if format.colorspace == 'rgb':
         for i in range(4):
-            swizzle = format.out_swizzle[i]
+            swizzle = format.swizzles[i]
             if swizzle < 4:
                 names[swizzle] += 'rgba'[i]
     elif format.colorspace == 'zs':
-        swizzle = format.out_swizzle[0]
+        swizzle = format.swizzles[0]
         if swizzle < 4:
             names[swizzle] = 'z'
         else:
@@ -304,8 +304,8 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
             print '         %s pixel = *src_pixel++;' % src_native_type
             shift = 0;
             for i in range(4):
-                src_type = format.in_types[i]
-                width = src_type.size
+                src_channel = format.channels[i]
+                width = src_channel.size
                 if names[i]:
                     value = 'pixel'
                     mask = (1 << width) - 1
@@ -313,35 +313,35 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
                         value = '(%s >> %u)' % (value, shift)
                     if shift + width < format.block_size():
                         value = '(%s & 0x%x)' % (value, mask)
-                    value = conversion_expr(src_type, dst_type, dst_native_type, value)
+                    value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
                     print '         %s %s = %s;' % (dst_native_type, names[i], value)
                 shift += width
         else:
             for i in range(4):
-                src_type = format.in_types[i]
+                src_channel = format.channels[i]
                 if names[i]:
                     value = '(*src_pixel++)'
-                    value = conversion_expr(src_type, dst_type, dst_native_type, value)
+                    value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
                     print '         %s %s = %s;' % (dst_native_type, names[i], value)
     else:
         assert False
 
     for i in range(4):
         if format.colorspace == 'rgb':
-            swizzle = format.out_swizzle[i]
+            swizzle = format.swizzles[i]
             if swizzle < 4:
                 value = names[swizzle]
             elif swizzle == SWIZZLE_0:
                 value = '0'
             elif swizzle == SWIZZLE_1:
-                value = get_one(dst_type)
+                value = get_one(dst_channel)
             else:
                 assert False
         elif format.colorspace == 'zs':
             if i < 3:
                 value = 'z'
             else:
-                value = get_one(dst_type)
+                value = get_one(dst_channel)
         else:
             assert False
         print '         *dst_pixel++ = %s; /* %s */' % (value, 'rgba'[i])
@@ -354,7 +354,7 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
     print
     
 
-def generate_format_write(format, src_type, src_native_type, src_suffix):
+def generate_format_write(format, src_channel, src_native_type, src_suffix):
     '''Generate the function to write pixels to a particular format'''
 
     name = format.short_name()
@@ -379,11 +379,11 @@ def generate_format_write(format, src_type, src_native_type, src_suffix):
             print '         %s pixel = 0;' % dst_native_type
             shift = 0;
             for i in range(4):
-                dst_type = format.in_types[i]
-                width = dst_type.size
+                dst_channel = format.channels[i]
+                width = dst_channel.size
                 if inv_swizzle[i] is not None:
                     value = 'src_pixel[%u]' % inv_swizzle[i]
-                    value = conversion_expr(src_type, dst_type, dst_native_type, value)
+                    value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
                     if shift:
                         value = '(%s << %u)' % (value, shift)
                     print '         pixel |= %s;' % value
@@ -391,10 +391,10 @@ def generate_format_write(format, src_type, src_native_type, src_suffix):
             print '         *dst_pixel++ = pixel;'
         else:
             for i in range(4):
-                dst_type = format.in_types[i]
+                dst_channel = format.channels[i]
                 if inv_swizzle[i] is not None:
                     value = 'src_pixel[%u]' % inv_swizzle[i]
-                    value = conversion_expr(src_type, dst_type, dst_native_type, value)
+                    value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
                     print '         *dst_pixel++ = %s;' % value
     else:
         assert False
@@ -408,12 +408,12 @@ def generate_format_write(format, src_type, src_native_type, src_suffix):
     print
     
 
-def generate_read(formats, dst_type, dst_native_type, dst_suffix):
+def generate_read(formats, dst_channel, dst_native_type, dst_suffix):
     '''Generate the dispatch function to read pixels from any format'''
 
     for format in formats:
         if is_format_supported(format):
-            generate_format_read(format, dst_type, dst_native_type, dst_suffix)
+            generate_format_read(format, dst_channel, dst_native_type, dst_suffix)
 
     print 'void'
     print 'util_format_read_%s(enum pipe_format format, %s *dst, unsigned dst_stride, const void *src, unsigned src_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (dst_suffix, dst_native_type)
@@ -434,12 +434,12 @@ def generate_read(formats, dst_type, dst_native_type, dst_suffix):
     print
 
 
-def generate_write(formats, src_type, src_native_type, src_suffix):
+def generate_write(formats, src_channel, src_native_type, src_suffix):
     '''Generate the dispatch function to write pixels to any format'''
 
     for format in formats:
         if is_format_supported(format):
-            generate_format_write(format, src_type, src_native_type, src_suffix)
+            generate_format_write(format, src_channel, src_native_type, src_suffix)
 
     print 'void'
     print 'util_format_write_%s(enum pipe_format format, const %s *src, unsigned src_stride, void *dst, unsigned dst_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (src_suffix, src_native_type)
@@ -478,14 +478,14 @@ def main():
 
     generate_clamp()
 
-    type = Type(FLOAT, False, 32)
+    type = Channel(FLOAT, False, 32)
     native_type = 'float'
     suffix = '4f'
 
     generate_read(formats, type, native_type, suffix)
     generate_write(formats, type, native_type, suffix)
 
-    type = Type(UNSIGNED, True, 8)
+    type = Channel(UNSIGNED, True, 8)
     native_type = 'uint8_t'
     suffix = '4ub'
 
index f26cb37..edc6bba 100755 (executable)
@@ -41,36 +41,36 @@ def is_pot(x):
    return (x & (x - 1)) == 0;
 
 
-class Type:
-    '''Describe the type of a color channel.'''
+class Channel:
+    '''Describe the channel of a color channel.'''
     
-    def __init__(self, kind, norm, size):
-        self.kind = kind
+    def __init__(self, type, norm, size):
+        self.type = type
         self.norm = norm
         self.size = size
-        self.sign = kind in (SIGNED, FIXED, FLOAT)
+        self.sign = type in (SIGNED, FIXED, FLOAT)
 
     def __str__(self):
-        s = str(self.kind)
+        s = str(self.type)
         if self.norm:
             s += 'n'
         s += str(self.size)
         return s
 
     def __eq__(self, other):
-        return self.kind == other.kind and self.norm == other.norm and self.size == other.size
+        return self.type == other.type and self.norm == other.norm and self.size == other.size
 
 
 class Format:
     '''Describe a pixel format.'''
 
-    def __init__(self, name, layout, block_width, block_height, in_types, out_swizzle, colorspace):
+    def __init__(self, name, layout, block_width, block_height, channels, swizzles, colorspace):
         self.name = name
         self.layout = layout
         self.block_width = block_width
         self.block_height = block_height
-        self.in_types = in_types
-        self.out_swizzle = out_swizzle
+        self.channels = channels
+        self.swizzles = swizzles
         self.name = name
         self.colorspace = colorspace
 
@@ -89,42 +89,54 @@ class Format:
 
     def block_size(self):
         size = 0
-        for type in self.in_types:
-            size += type.size
+        for channel in self.channels:
+            size += channel.size
         return size
 
     def nr_channels(self):
         nr_channels = 0
-        for type in self.in_types:
-            if type.size:
+        for channel in self.channels:
+            if channel.size:
                 nr_channels += 1
         return nr_channels
 
     def is_array(self):
-        ref_type = self.in_types[0]
-        for type in self.in_types[1:]:
-            if type.size and (type.size != ref_type.size or type.size % 8):
+        ref_channel = self.channels[0]
+        for channel in self.channels[1:]:
+            if channel.size and (channel.size != ref_channel.size or channel.size % 8):
                 return False
         return True
 
     def is_mixed(self):
-        ref_type = self.in_types[0]
-        for type in self.in_types[1:]:
-            if type.kind != VOID:
-                if type.kind != ref_type.kind:
+        ref_channel = self.channels[0]
+        for channel in self.channels[1:]:
+            if channel.type != VOID:
+                if channel.type != ref_channel.type:
                     return True
-                if type.norm != ref_type.norm:
+                if channel.norm != ref_channel.norm:
                     return True
         return False
 
     def is_pot(self):
         return is_pot(self.block_size())
 
+    def is_int(self):
+        for channel in self.channels:
+            if channel.type not in (VOID, UNSIGNED, SIGNED):
+                return False
+        return True
+
+    def is_float(self):
+        for channel in self.channels:
+            if channel.type not in (VOID, FLOAT):
+                return False
+        return True
+
     def stride(self):
         return self.block_size()/8
 
 
-_kind_parse_map = {
+_type_parse_map = {
     '':  VOID,
     'x': VOID,
     'u': UNSIGNED,
@@ -145,7 +157,7 @@ _swizzle_parse_map = {
 
 def parse(filename):
     '''Parse the format descrition in CSV format in terms of the 
-    Type and Format classes above.'''
+    Channel and Format classes above.'''
 
     stream = open(filename)
     formats = []
@@ -163,10 +175,10 @@ def parse(filename):
         name = fields[0]
         layout = fields[1]
         block_width, block_height = map(int, fields[2:4])
-        in_types = []
+        channels = []
         for field in fields[4:8]:
             if field:
-                kind = _kind_parse_map[field[0]]
+                type = _type_parse_map[field[0]]
                 if field[1] == 'n':
                     norm = True
                     size = int(field[2:])
@@ -174,13 +186,13 @@ def parse(filename):
                     norm = False
                     size = int(field[1:])
             else:
-                kind = VOID
+                type = VOID
                 norm = False
                 size = 0
-            in_type = Type(kind, norm, size)
-            in_types.append(in_type)
-        out_swizzle = [_swizzle_parse_map[swizzle] for swizzle in fields[8]]
+            channel = Channel(type, norm, size)
+            channels.append(channel)
+        swizzles = [_swizzle_parse_map[swizzle] for swizzle in fields[8]]
         colorspace = fields[9]
-        formats.append(Format(name, layout, block_width, block_height, in_types, out_swizzle, colorspace))
+        formats.append(Format(name, layout, block_width, block_height, channels, swizzles, colorspace))
     return formats
 
index 953b5ae..a7a4fd1 100755 (executable)
@@ -51,7 +51,7 @@ colorspace_channels_map = {
 }
 
 
-kind_map = {
+type_map = {
     VOID:     "UTIL_FORMAT_TYPE_VOID",
     UNSIGNED: "UTIL_FORMAT_TYPE_UNSIGNED",
     SIGNED:   "UTIL_FORMAT_TYPE_SIGNED",
@@ -112,16 +112,16 @@ def write_format_table(formats):
         print "   %s,\t/* is_mixed */" % (bool_map(format.is_mixed()),)
         print "   {"
         for i in range(4):
-            type = format.in_types[i]
+            channel = format.channels[i]
             if i < 3:
                 sep = ","
             else:
                 sep = ""
-            print "      {%s, %s, %u}%s\t/* %s */" % (kind_map[type.kind], bool_map(type.norm), type.size, sep, "xyzw"[i])
+            print "      {%s, %s, %u}%s\t/* %s */" % (type_map[channel.type], bool_map(channel.norm), channel.size, sep, "xyzw"[i])
         print "   },"
         print "   {"
         for i in range(4):
-            swizzle = format.out_swizzle[i]
+            swizzle = format.swizzles[i]
             if i < 3:
                 sep = ","
             else:
index 4d04905..52d7d31 100644 (file)
@@ -45,7 +45,7 @@ sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), '../../auxiliary/u
 from u_format_access import *
 
 
-def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
+def generate_format_read(format, dst_channel, dst_native_type, dst_suffix):
     '''Generate the function to read pixels from a particular format'''
 
     name = format.short_name()
@@ -64,11 +64,11 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
     names = ['']*4
     if format.colorspace == 'rgb':
         for i in range(4):
-            swizzle = format.out_swizzle[i]
+            swizzle = format.swizzles[i]
             if swizzle < 4:
                 names[swizzle] += 'rgba'[i]
     elif format.colorspace == 'zs':
-        swizzle = format.out_swizzle[0]
+        swizzle = format.swizzles[0]
         if swizzle < 4:
             names[swizzle] = 'z'
         else:
@@ -81,8 +81,8 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
             print '         %s pixel = *src_pixel++;' % src_native_type
             shift = 0;
             for i in range(4):
-                src_type = format.in_types[i]
-                width = src_type.size
+                src_channel = format.channels[i]
+                width = src_channel.size
                 if names[i]:
                     value = 'pixel'
                     mask = (1 << width) - 1
@@ -90,35 +90,35 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
                         value = '(%s >> %u)' % (value, shift)
                     if shift + width < format.block_size():
                         value = '(%s & 0x%x)' % (value, mask)
-                    value = conversion_expr(src_type, dst_type, dst_native_type, value)
+                    value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
                     print '         %s %s = %s;' % (dst_native_type, names[i], value)
                 shift += width
         else:
             for i in range(4):
-                src_type = format.in_types[i]
+                src_channel = format.channels[i]
                 if names[i]:
                     value = '(*src_pixel++)'
-                    value = conversion_expr(src_type, dst_type, dst_native_type, value)
+                    value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
                     print '         %s %s = %s;' % (dst_native_type, names[i], value)
     else:
         assert False
 
     for i in range(4):
         if format.colorspace == 'rgb':
-            swizzle = format.out_swizzle[i]
+            swizzle = format.swizzles[i]
             if swizzle < 4:
                 value = names[swizzle]
             elif swizzle == SWIZZLE_0:
                 value = '0'
             elif swizzle == SWIZZLE_1:
-                value = get_one(dst_type)
+                value = get_one(dst_channel)
             else:
                 assert False
         elif format.colorspace == 'zs':
             if i < 3:
                 value = 'z'
             else:
-                value = get_one(dst_type)
+                value = get_one(dst_channel)
         else:
             assert False
         print '         TILE_PIXEL(dst, x, y, %u) = %s; /* %s */' % (i, value, 'rgba'[i])
@@ -130,7 +130,7 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
     print
     
 
-def pack_rgba(format, src_type, r, g, b, a):
+def pack_rgba(format, src_channel, r, g, b, a):
     """Return an expression for packing r, g, b, a into a pixel of the
     given format.  Ex: '(b << 24) | (g << 16) | (r << 8) | (a << 0)'
     """
@@ -152,21 +152,21 @@ def pack_rgba(format, src_type, r, g, b, a):
             value = None
 
         if value:
-            dst_type = format.in_types[i]
+            dst_channel = format.channels[i]
             dst_native_type = native_type(format)
-            value = conversion_expr(src_type, dst_type, dst_native_type, value)
+            value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
             term = "((%s) << %d)" % (value, shift)
             if expr:
                 expr = expr + " | " + term
             else:
                 expr = term
 
-        width = format.in_types[i].size
+        width = format.channels[i].size
         shift = shift + width
     return expr
 
 
-def emit_unrolled_write_code(format, src_type):
+def emit_unrolled_write_code(format, src_channel):
     '''Emit code for writing a block based on unrolled loops.
     This is considerably faster than the TILE_PIXEL-based code below.
     '''
@@ -185,8 +185,8 @@ def emit_unrolled_write_code(format, src_type):
     print '         const uint8_t *a = src + 3 * TILE_C_STRIDE;'
     print '         (void) r; (void) g; (void) b; (void) a; /* silence warnings */'
     print '         for (i = 0; i < TILE_C_STRIDE; i += 2) {'
-    print '            const uint32_t pixel0 = %s;' % pack_rgba(format, src_type, "r[i+0]", "g[i+0]", "b[i+0]", "a[i+0]")
-    print '            const uint32_t pixel1 = %s;' % pack_rgba(format, src_type, "r[i+1]", "g[i+1]", "b[i+1]", "a[i+1]")
+    print '            const uint32_t pixel0 = %s;' % pack_rgba(format, src_channel, "r[i+0]", "g[i+0]", "b[i+0]", "a[i+0]")
+    print '            const uint32_t pixel1 = %s;' % pack_rgba(format, src_channel, "r[i+1]", "g[i+1]", "b[i+1]", "a[i+1]")
     print '            const unsigned offset = (py + tile_y_offset[i]) * dstpix_stride + (px + tile_x_offset[i]);'
     print '            dstpix[offset + 0] = pixel0;'
     print '            dstpix[offset + 1] = pixel1;'
@@ -196,7 +196,7 @@ def emit_unrolled_write_code(format, src_type):
     print '   }'
 
 
-def emit_tile_pixel_write_code(format, src_type):
+def emit_tile_pixel_write_code(format, src_channel):
     '''Emit code for writing a block based on the TILE_PIXEL macro.'''
     dst_native_type = native_type(format)
 
@@ -213,11 +213,11 @@ def emit_tile_pixel_write_code(format, src_type):
             print '         %s pixel = 0;' % dst_native_type
             shift = 0;
             for i in range(4):
-                dst_type = format.in_types[i]
-                width = dst_type.size
+                dst_channel = format.channels[i]
+                width = dst_channel.size
                 if inv_swizzle[i] is not None:
                     value = 'TILE_PIXEL(src, x, y, %u)' % inv_swizzle[i]
-                    value = conversion_expr(src_type, dst_type, dst_native_type, value)
+                    value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
                     if shift:
                         value = '(%s << %u)' % (value, shift)
                     print '         pixel |= %s;' % value
@@ -225,10 +225,10 @@ def emit_tile_pixel_write_code(format, src_type):
             print '         *dst_pixel++ = pixel;'
         else:
             for i in range(4):
-                dst_type = format.in_types[i]
+                dst_channel = format.channels[i]
                 if inv_swizzle[i] is not None:
                     value = 'TILE_PIXEL(src, x, y, %u)' % inv_swizzle[i]
-                    value = conversion_expr(src_type, dst_type, dst_native_type, value)
+                    value = conversion_expr(src_channel, dst_channel, dst_native_type, value)
                     print '         *dst_pixel++ = %s;' % value
     else:
         assert False
@@ -238,7 +238,7 @@ def emit_tile_pixel_write_code(format, src_type):
     print '   }'
 
 
-def generate_format_write(format, src_type, src_native_type, src_suffix):
+def generate_format_write(format, src_channel, src_native_type, src_suffix):
     '''Generate the function to write pixels to a particular format'''
 
     name = format.short_name()
@@ -251,20 +251,20 @@ def generate_format_write(format, src_type, src_native_type, src_suffix):
         and format.block_size() <= 32 \
         and format.is_pot() \
         and not format.is_mixed() \
-        and format.in_types[0].kind == UNSIGNED:
-        emit_unrolled_write_code(format, src_type)
+        and format.channels[0].type == UNSIGNED:
+        emit_unrolled_write_code(format, src_channel)
     else:
-        emit_tile_pixel_write_code(format, src_type)
+        emit_tile_pixel_write_code(format, src_channel)
     print '}'
     print
     
 
-def generate_read(formats, dst_type, dst_native_type, dst_suffix):
+def generate_read(formats, dst_channel, dst_native_type, dst_suffix):
     '''Generate the dispatch function to read pixels from any format'''
 
     for format in formats:
         if is_format_supported(format):
-            generate_format_read(format, dst_type, dst_native_type, dst_suffix)
+            generate_format_read(format, dst_channel, dst_native_type, dst_suffix)
 
     print 'void'
     print 'lp_tile_read_%s(enum pipe_format format, %s *dst, const void *src, unsigned src_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (dst_suffix, dst_native_type)
@@ -285,12 +285,12 @@ def generate_read(formats, dst_type, dst_native_type, dst_suffix):
     print
 
 
-def generate_write(formats, src_type, src_native_type, src_suffix):
+def generate_write(formats, src_channel, src_native_type, src_suffix):
     '''Generate the dispatch function to write pixels to any format'''
 
     for format in formats:
         if is_format_supported(format):
-            generate_format_write(format, src_type, src_native_type, src_suffix)
+            generate_format_write(format, src_channel, src_native_type, src_suffix)
 
     print 'void'
     print 'lp_tile_write_%s(enum pipe_format format, const %s *src, void *dst, unsigned dst_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (src_suffix, src_native_type)
@@ -351,12 +351,12 @@ def main():
 
     generate_clamp()
 
-    type = Type(UNSIGNED, True, 8)
+    channel = Channel(UNSIGNED, True, 8)
     native_type = 'uint8_t'
     suffix = '4ub'
 
-    generate_read(formats, type, native_type, suffix)
-    generate_write(formats, type, native_type, suffix)
+    generate_read(formats, channel, native_type, suffix)
+    generate_write(formats, channel, native_type, suffix)
 
 
 if __name__ == '__main__':