util/format: Take advantage of sequential nature of pipe_format enum.

Make sure the format descriptor table can be indexed directly.
This commit is contained in:
Michal Krol 2009-12-08 15:46:15 +01:00
parent 714e1880d9
commit ddbd2d08b7
3 changed files with 20 additions and 21 deletions

View File

@ -32,15 +32,14 @@
const struct util_format_description *
util_format_description(enum pipe_format format)
{
const struct util_format_description *desc = util_format_description_table;
const struct util_format_description *desc;
while(TRUE) {
if(desc->format == format)
return desc;
if (format >= PIPE_FORMAT_COUNT) {
return NULL;
}
if(desc->format == PIPE_FORMAT_NONE)
return NULL;
desc = &util_format_description_table[format];
assert(desc->format == format);
++desc;
};
return desc;
}

View File

@ -11,6 +11,8 @@ PIPE_FORMAT_A8_UNORM , arith , 1, 1, un8 , , , , 000x,
PIPE_FORMAT_I8_UNORM , arith , 1, 1, un8 , , , , xxxx, rgb
PIPE_FORMAT_A8L8_UNORM , arith , 1, 1, un8 , un8 , , , xxxy, rgb
PIPE_FORMAT_L16_UNORM , arith , 1, 1, un16, , , , xxx1, rgb
PIPE_FORMAT_YCBCR , yuv , 2, 1, x32 , , , , xyz1, yuv
PIPE_FORMAT_YCBCR_REV , yuv , 2, 1, x32 , , , , xyz1, yuv
PIPE_FORMAT_Z16_UNORM , array , 1, 1, un16, , , , x___, zs
PIPE_FORMAT_Z32_UNORM , array , 1, 1, un32, , , , x___, zs
PIPE_FORMAT_Z32_FLOAT , array , 1, 1, f32 , , , , x___, zs
@ -97,13 +99,11 @@ PIPE_FORMAT_B8G8R8A8_SRGB , arith , 1, 1, u8 , u8 , u8 , u8 , zyxw,
PIPE_FORMAT_B8G8R8X8_SRGB , arith , 1, 1, u8 , u8 , u8 , u8 , zyx1, srgb
PIPE_FORMAT_X8UB8UG8SR8S_NORM , arith , 1, 1, sn8 , sn8 , un8 , x8 , 1zyx, rgb
PIPE_FORMAT_B6UG5SR5S_NORM , arith , 1, 1, sn5 , sn5 , un6 , , xyz1, rgb
PIPE_FORMAT_YCBCR , yuv , 2, 1, x32 , , , , xyz1, yuv
PIPE_FORMAT_YCBCR_REV , yuv , 2, 1, x32 , , , , xyz1, yuv
PIPE_FORMAT_DXT1_RGBA , dxt , 4, 4, x64 , , , , xyzw, rgb
PIPE_FORMAT_DXT1_RGB , dxt , 4, 4, x64 , , , , xyz1, rgb
PIPE_FORMAT_DXT1_RGBA , dxt , 4, 4, x64 , , , , xyzw, rgb
PIPE_FORMAT_DXT3_RGBA , dxt , 4, 4, x128, , , , xyzw, rgb
PIPE_FORMAT_DXT5_RGBA , dxt , 4, 4, x128, , , , xyzw, rgb
PIPE_FORMAT_DXT1_SRGBA , dxt , 4, 4, x64 , , , , xyzw, srgb
PIPE_FORMAT_DXT1_SRGB , dxt , 4, 4, x64 , , , , xyz1, srgb
PIPE_FORMAT_DXT1_SRGBA , dxt , 4, 4, x64 , , , , xyzw, srgb
PIPE_FORMAT_DXT3_SRGBA , dxt , 4, 4, x128, , , , xyzw, srgb
PIPE_FORMAT_DXT5_SRGBA , dxt , 4, 4, x128, , , , xyzw, srgb

1 PIPE_FORMAT_A8R8G8B8_UNORM arith 1 1 un8 un8 un8 un8 zyxw rgb
11 PIPE_FORMAT_I8_UNORM arith 1 1 un8 xxxx rgb
12 PIPE_FORMAT_A8L8_UNORM arith 1 1 un8 un8 xxxy rgb
13 PIPE_FORMAT_L16_UNORM arith 1 1 un16 xxx1 rgb
14 PIPE_FORMAT_YCBCR yuv 2 1 x32 xyz1 yuv
15 PIPE_FORMAT_YCBCR_REV yuv 2 1 x32 xyz1 yuv
16 PIPE_FORMAT_Z16_UNORM array 1 1 un16 x___ zs
17 PIPE_FORMAT_Z32_UNORM array 1 1 un32 x___ zs
18 PIPE_FORMAT_Z32_FLOAT array 1 1 f32 x___ zs
99 PIPE_FORMAT_B8G8R8X8_SRGB arith 1 1 u8 u8 u8 u8 zyx1 srgb
100 PIPE_FORMAT_X8UB8UG8SR8S_NORM arith 1 1 sn8 sn8 un8 x8 1zyx rgb
101 PIPE_FORMAT_B6UG5SR5S_NORM arith 1 1 sn5 sn5 un6 xyz1 rgb
PIPE_FORMAT_YCBCR yuv 2 1 x32 xyz1 yuv
PIPE_FORMAT_YCBCR_REV yuv 2 1 x32 xyz1 yuv
PIPE_FORMAT_DXT1_RGBA dxt 4 4 x64 xyzw rgb
102 PIPE_FORMAT_DXT1_RGB dxt 4 4 x64 xyz1 rgb
103 PIPE_FORMAT_DXT1_RGBA dxt 4 4 x64 xyzw rgb
104 PIPE_FORMAT_DXT3_RGBA dxt 4 4 x128 xyzw rgb
105 PIPE_FORMAT_DXT5_RGBA dxt 4 4 x128 xyzw rgb
PIPE_FORMAT_DXT1_SRGBA dxt 4 4 x64 xyzw srgb
106 PIPE_FORMAT_DXT1_SRGB dxt 4 4 x64 xyz1 srgb
107 PIPE_FORMAT_DXT1_SRGBA dxt 4 4 x64 xyzw srgb
108 PIPE_FORMAT_DXT3_SRGBA dxt 4 4 x128 xyzw srgb
109 PIPE_FORMAT_DXT5_SRGBA dxt 4 4 x128 xyzw srgb

View File

@ -90,6 +90,15 @@ def write_format_table(formats):
print 'const struct util_format_description'
print 'util_format_description_table[] = '
print "{"
print " {"
print " PIPE_FORMAT_NONE,"
print " \"PIPE_FORMAT_NONE\","
print " {0, 0, 0},"
print " 0,"
print " {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},"
print " {0, 0, 0, 0},"
print " 0"
print " },"
for format in formats:
print " {"
print " %s," % (format.name,)
@ -120,15 +129,6 @@ def write_format_table(formats):
print " },"
print " %s," % (colorspace_map(format.colorspace),)
print " },"
print " {"
print " PIPE_FORMAT_NONE,"
print " \"PIPE_FORMAT_NONE\","
print " {0, 0, 0},"
print " 0,"
print " {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},"
print " {0, 0, 0, 0},"
print " 0"
print " },"
print "};"