mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-25 03:58:19 +02:00
gl_marshal.py: move the unmarshal table into a separately generated file
It's unrelated to the rest of the script and it's in the way of bigger changes. Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18199>
This commit is contained in:
parent
5c65a3a98f
commit
5e66e26998
4 changed files with 99 additions and 13 deletions
|
|
@ -366,18 +366,6 @@ class PrintCode(gl_XML.gl_print_base):
|
|||
out('')
|
||||
out('')
|
||||
|
||||
def print_unmarshal_dispatch_cmd(self, api):
|
||||
out('const _mesa_unmarshal_func _mesa_unmarshal_dispatch[NUM_DISPATCH_CMD] = {')
|
||||
with indent():
|
||||
for func in api.functionIterateAll():
|
||||
flavor = func.marshal_flavor()
|
||||
if flavor in ('skip', 'sync'):
|
||||
continue
|
||||
out('[DISPATCH_CMD_{0}] = (_mesa_unmarshal_func)_mesa_unmarshal_{0},'.format(func.name))
|
||||
out('};')
|
||||
out('')
|
||||
out('')
|
||||
|
||||
def print_create_marshal_table(self, api):
|
||||
out('/* _mesa_create_marshal_table takes a long time to compile with -O2 */')
|
||||
out('#if defined(__GNUC__) && !defined(__clang__)')
|
||||
|
|
@ -429,7 +417,6 @@ class PrintCode(gl_XML.gl_print_base):
|
|||
def printBody(self, api):
|
||||
# The first file only contains the dispatch tables
|
||||
if file_index == 0:
|
||||
self.print_unmarshal_dispatch_cmd(api)
|
||||
self.print_create_marshal_table(api)
|
||||
return
|
||||
|
||||
|
|
|
|||
89
src/mapi/glapi/gen/gl_unmarshal_table.py
Normal file
89
src/mapi/glapi/gen/gl_unmarshal_table.py
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
# Copyright (C) 2012 Intel Corporation
|
||||
# Copyright (C) 2022 Advanced Micro Devices, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice (including the next
|
||||
# paragraph) shall be included in all copies or substantial portions of the
|
||||
# Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
import contextlib
|
||||
import gl_XML
|
||||
import license
|
||||
import marshal_XML
|
||||
import sys
|
||||
|
||||
header = """#include "glthread_marshal.h"
|
||||
"""
|
||||
|
||||
current_indent = 0
|
||||
|
||||
|
||||
def out(str):
|
||||
if str:
|
||||
print(' '*current_indent + str)
|
||||
else:
|
||||
print('')
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def indent(delta=3):
|
||||
global current_indent
|
||||
current_indent += delta
|
||||
yield
|
||||
current_indent -= delta
|
||||
|
||||
|
||||
class PrintCode(gl_XML.gl_print_base):
|
||||
def __init__(self):
|
||||
super(PrintCode, self).__init__()
|
||||
|
||||
self.name = 'gl_marshal.py'
|
||||
self.license = license.bsd_license_template % (
|
||||
'Copyright (C) 2012 Intel Corporation', 'INTEL CORPORATION')
|
||||
|
||||
def printRealHeader(self):
|
||||
print(header)
|
||||
|
||||
def printRealFooter(self):
|
||||
pass
|
||||
|
||||
def printBody(self, api):
|
||||
out('const _mesa_unmarshal_func _mesa_unmarshal_dispatch[NUM_DISPATCH_CMD] = {')
|
||||
with indent():
|
||||
for func in api.functionIterateAll():
|
||||
flavor = func.marshal_flavor()
|
||||
if flavor in ('skip', 'sync'):
|
||||
continue
|
||||
out('[DISPATCH_CMD_{0}] = (_mesa_unmarshal_func)_mesa_unmarshal_{0},'.format(func.name))
|
||||
out('};')
|
||||
|
||||
|
||||
def show_usage():
|
||||
print('Usage: %s [file_name]' % sys.argv[0])
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
file_name = sys.argv[1]
|
||||
except Exception:
|
||||
show_usage()
|
||||
|
||||
printer = PrintCode()
|
||||
|
||||
api = gl_XML.parse_GL_API(file_name, marshal_XML.marshal_item_factory())
|
||||
printer.Print(api)
|
||||
|
|
@ -271,6 +271,15 @@ main_api_hw_select_init_h = custom_target(
|
|||
capture : true,
|
||||
)
|
||||
|
||||
main_unmarshal_table_c = custom_target(
|
||||
'unmarshal_table.c',
|
||||
input : ['gl_unmarshal_table.py', 'gl_and_es_API.xml'],
|
||||
output : 'unmarshal_table.c',
|
||||
command : [prog_python, '@INPUT0@', '@INPUT1@'],
|
||||
depend_files : files('marshal_XML.py') + glapi_gen_depends,
|
||||
capture : true,
|
||||
)
|
||||
|
||||
main_marshal_generated_c = []
|
||||
foreach x : ['0', '1', '2', '3', '4', '5', '6', '7']
|
||||
main_marshal_generated_c += custom_target(
|
||||
|
|
|
|||
|
|
@ -457,6 +457,7 @@ files_libmesa += [
|
|||
ir_expression_operation_h,
|
||||
main_remap_helper_h,
|
||||
sha1_h,
|
||||
main_unmarshal_table_c,
|
||||
] + main_marshal_generated_c
|
||||
|
||||
if with_sse41
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue