From 03da51eb07552fdaa2431de63235dbcf7a616ad7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 22 Mar 2020 21:56:20 -0400 Subject: [PATCH] glthread: inline SET_func and add -O1 to build _mesa_create_marshal_table faster The compile time of marshal_generated.c improved from 30.1s to 12.4s. Reviewed-by: Eric Anholt Part-of: --- src/mapi/glapi/gen/gl_marshal.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mapi/glapi/gen/gl_marshal.py b/src/mapi/glapi/gen/gl_marshal.py index bfa3f5bc34b..9f19c914300 100644 --- a/src/mapi/glapi/gen/gl_marshal.py +++ b/src/mapi/glapi/gen/gl_marshal.py @@ -294,6 +294,10 @@ class PrintCode(gl_XML.gl_print_base): out('') def print_create_marshal_table(self, api): + out('/* _mesa_create_marshal_table takes a long time to compile with -O2 */') + out('#ifdef __GNUC__') + out('__attribute__((optimize("O1")))') + out('#endif') out('struct _glapi_table *') out('_mesa_create_marshal_table(const struct gl_context *ctx)') out('{') @@ -308,7 +312,11 @@ class PrintCode(gl_XML.gl_print_base): for func in api.functionIterateAll(): if func.marshal_flavor() == 'skip': continue - out('SET_{0}(table, _mesa_marshal_{0});'.format(func.name)) + # Don't use the SET_* functions, because they increase compile time + # by 20 seconds (on Ryzen 1700X). + out('if (_gloffset_{0} >= 0)'.format(func.name)) + out(' ((_glapi_proc *)(table))[_gloffset_{0}] = (_glapi_proc)_mesa_marshal_{0};' + .format(func.name)) out('') out('return table;') out('}') -- 2.30.2