util: Generate linear<->sRGB conversion tables.
authorMichal Krol <michal@vmware.com>
Mon, 1 Mar 2010 18:00:40 +0000 (19:00 +0100)
committerMichal Krol <michal@vmware.com>
Mon, 1 Mar 2010 18:00:40 +0000 (19:00 +0100)
src/gallium/auxiliary/util/u_format_access.py

index 1c9be1b538e6212a1f04696e9d9862a58ff01eee..00424779d285ac59b1883f6a6e58f58ca77929e5 100644 (file)
@@ -37,6 +37,7 @@
 '''
 
 
+import math
 import sys
 
 from u_format_pack import *
@@ -94,6 +95,20 @@ def native_type(format):
         assert False
 
 
+def generate_srgb_tables():
+    print 'static ubyte srgb_to_linear[256] = {'
+    for i in range(256):
+        print '   %s,' % (int(math.pow((i / 255.0 + 0.055) / 1.055, 2.4) * 255))
+    print '};'
+    print
+    print 'static ubyte linear_to_srgb[256] = {'
+    print '   0,'
+    for i in range(1, 256):
+        print '   %s,' % (int((1.055 * math.pow(i / 255.0, 0.41666) - 0.055) * 255))
+    print '};'
+    print
+
+
 def generate_format_read(format, dst_channel, dst_native_type, dst_suffix):
     '''Generate the function to read pixels from a particular format'''
 
@@ -305,6 +320,8 @@ def main():
     print '#include "u_format_pack.h"'
     print
 
+    generate_srgb_tables()
+
     type = Channel(FLOAT, False, 32)
     native_type = 'float'
     suffix = '4f'