MESA_UTIL_GENERATED_FILES = \
format_srgb.c \
- format/u_format_table.c
+ format/u_format_table.c \
+ format/u_format_pack.h
XMLCONFIG_FILES := \
xmlconfig.c \
)
env.CodeGenerate(
+ target = 'format/u_format_pack.h',
+ script = 'format/u_format_table.py',
+ source = ['format/u_format.csv'],
+ command = python_cmd + ' $SCRIPT $SOURCE --header > $TARGET'
+)
+
+env.Depends('format/u_format_pack.h', [
+ 'format/u_format_parse.py',
+ 'format/u_format_pack.py',
+])
+
+env.CodeGenerate(
target = 'format/u_format_table.c',
script = 'format/u_format_table.py',
source = ['format/u_format.csv'],
'u_format_zs.c',
]
+u_format_pack_h = custom_target(
+ 'u_format_pack.h',
+ input : ['u_format_table.py', 'u_format.csv'],
+ output : 'u_format_pack.h',
+ command : [prog_python, '@INPUT@', '--header'],
+ depend_files : files('u_format_pack.py', 'u_format_parse.py'),
+ capture : true,
+)
+
u_format_table_c = custom_target(
'u_format_table.c',
input : ['u_format_table.py', 'u_format.csv'],
libmesa_format = static_library(
'mesa_format',
- [files_mesa_format, u_format_table_c],
+ [files_mesa_format, u_format_table_c, u_format_pack_h],
include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
dependencies : dep_m,
c_args : [c_msvc_compat_args],
else:
integer_types = (int, )
-
def inv_swizzles(swizzles):
'''Return an array[4] of inverse swizzle terms'''
'''Only pick the first matching value to avoid l8 getting blue and i8 getting alpha'''
name = format.short_name()
- print('static inline void')
+ print('void')
print('util_format_%s_pack_%s(uint8_t *dst_row, unsigned dst_stride, const %s *src_row, unsigned src_stride, unsigned width, unsigned height)' % (name, src_suffix, src_native_type))
print('{')
+
+ print('void util_format_%s_pack_%s(uint8_t *dst_row, unsigned dst_stride, const %s *src_row, unsigned src_stride, unsigned width, unsigned height);' % (name, src_suffix, src_native_type), file=sys.stdout2)
if is_format_supported(format):
print(' unsigned x, y;')
print('#include "util/format_srgb.h"')
print('#include "u_format_yuv.h"')
print('#include "u_format_zs.h"')
+ print('#include "u_format_pack.h"')
print()
for format in formats:
generate_format_unpack(format, channel, native_type, suffix)
generate_format_pack(format, channel, native_type, suffix)
-
'''
-import sys
+import sys, os
from u_format_parse import *
import u_format_pack
return False
return True
-def write_format_table(formats):
- print('/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */')
- print()
+def write_format_table_header(file):
+ print('/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */', file=file)
+ print(file=file)
# This will print the copyright message on the top of this file
- print(CopyRight.strip())
- print()
- print('#include "u_format.h"')
+ print(CopyRight.strip(), file=file)
+ print(file=file)
+ print('#include "util/format/u_format.h"', file=file)
+
+def write_format_table(formats):
+ write_format_table_header(sys.stdout)
print('#include "u_format_bptc.h"')
print('#include "u_format_s3tc.h"')
print('#include "u_format_rgtc.h"')
print('#include "u_format_latc.h"')
print('#include "u_format_etc.h"')
print()
+
+ write_format_table_header(sys.stdout2)
u_format_pack.generate(formats)
generate_table_getter("unpack_")
def main():
-
formats = []
+
+ sys.stdout2 = open(os.devnull, "w")
+
for arg in sys.argv[1:]:
+ if arg == '--header':
+ sys.stdout2 = sys.stdout
+ sys.stdout = open(os.devnull, "w")
+ continue
+
formats.extend(parse(arg))
- write_format_table(formats)
+ write_format_table(formats)
if __name__ == '__main__':
main()