diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 03:01:46 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 03:01:46 +0000 |
commit | f8fe689a81f906d1b91bb3220acde2a4ecb14c5b (patch) | |
tree | 26484e9d7e2c67806c2d1760196ff01aaa858e8c /src/VBox/HostServices/SharedOpenGL/crserverlib/server_dispatch.py | |
parent | Initial commit. (diff) | |
download | virtualbox-upstream.tar.xz virtualbox-upstream.zip |
Adding upstream version 6.0.4-dfsg.upstream/6.0.4-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/VBox/HostServices/SharedOpenGL/crserverlib/server_dispatch.py')
-rwxr-xr-x | src/VBox/HostServices/SharedOpenGL/crserverlib/server_dispatch.py | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/src/VBox/HostServices/SharedOpenGL/crserverlib/server_dispatch.py b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_dispatch.py new file mode 100755 index 00000000..de765f04 --- /dev/null +++ b/src/VBox/HostServices/SharedOpenGL/crserverlib/server_dispatch.py @@ -0,0 +1,137 @@ +# Copyright (c) 2001, Stanford University +# All rights reserved. +# +# See the file LICENSE.txt for information on redistributing this software. + +from __future__ import print_function +import sys, string, re + +import apiutil + + + +apiutil.CopyrightC() + +print(""" +/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED BY server_dispatch.py SCRIPT */ +#include "cr_spu.h" +#include "chromium.h" +#include "cr_error.h" +#include "server_dispatch.h" +#include "server.h" +#include "cr_unpack.h" + +CRCurrentStatePointers crServerCurrent; +""") + + +for func_name in apiutil.AllSpecials( sys.argv[1]+"/../state_tracker/state" ): + params = apiutil.Parameters(func_name) + if (apiutil.FindSpecial( "server", func_name ) or + "get" in apiutil.Properties(func_name)): + continue + + wrap = apiutil.GetCategoryWrapper(func_name) + if wrap: + print('#if defined(CR_%s)' % wrap) + print('void SERVER_DISPATCH_APIENTRY crServerDispatch%s(%s)' % ( func_name, apiutil.MakeDeclarationString( params ) )) + print('{') + print('\tcrState%s(%s);' % (func_name, apiutil.MakeCallString( params ) )) + print('\tcr_server.head_spu->dispatch_table.%s(%s);' % (func_name, apiutil.MakeCallString( params ) )) + print('}') + if wrap: + print('#endif') + + +keys = apiutil.GetDispatchedFunctions(sys.argv[1]+"/APIspec.txt") +for func_name in keys: + current = 0 + array = "" + condition = "" + m = re.search( r"^(Color|Normal)([1234])(ub|b|us|s|ui|i|f|d)$", func_name ) + if m : + current = 1 + name = m.group(1)[:1].lower() + m.group(1)[1:] + type = m.group(3) + m.group(2) + m = re.search( r"^(SecondaryColor)(3)(ub|b|us|s|ui|i|f|d)(EXT)$", func_name ) + if m : + current = 1 + name = m.group(1)[:1].lower() + m.group(1)[1:] + type = m.group(3) + m.group(2) + m = re.search( r"^(TexCoord)([1234])(ub|b|us|s|ui|i|f|d)$", func_name ) + if m : + current = 1 + name = m.group(1)[:1].lower() + m.group(1)[1:] + type = m.group(3) + m.group(2) + array = "[0]" + m = re.search( r"^(MultiTexCoord)([1234])(ub|b|us|s|ui|i|f|d)ARB$", func_name ) + if m : + current = 1 + name = "texCoord" + type = m.group(3) + m.group(2) + array = "[texture-GL_TEXTURE0_ARB]" + condition = "if (texture >= GL_TEXTURE0_ARB && texture < GL_TEXTURE0_ARB + CR_MAX_TEXTURE_UNITS)" + m = re.match( r"^(Index)(ub|b|us|s|ui|i|f|d)$", func_name ) + if m : + current = 1 + name = m.group(1)[:1].lower() + m.group(1)[1:] + type = m.group(2) + "1" + m = re.match( r"^(EdgeFlag)$", func_name ) + if m : + current = 1 + name = m.group(1)[:1].lower() + m.group(1)[1:] + type = "l1" + m = re.match( r"^(FogCoord)(f|d)(EXT)$", func_name) + if m : + current = 1 + name = m.group(1)[:1].lower() + m.group(1)[1:] + type = m.group(2) + "1" + + # Vertex attribute commands w/ some special cases + m = re.search( r"^(VertexAttrib)([1234])(s|i|f|d)ARB$", func_name ) + if m : + current = 1 + name = m.group(1)[:1].lower() + m.group(1)[1:] + type = m.group(3) + m.group(2) + array = "[index]" + condition = "if (index < CR_MAX_VERTEX_ATTRIBS)" + if func_name == "VertexAttrib4NubARB": + current = 1 + name = "vertexAttrib" + type = "ub4" + array = "[index]" + condition = "if (index < CR_MAX_VERTEX_ATTRIBS)" + + if current: + params = apiutil.Parameters(func_name) + print('void SERVER_DISPATCH_APIENTRY crServerDispatch%s(%s)' % ( func_name, apiutil.MakeDeclarationString(params) )) + print('{') + print('\t%s' % (condition)) + print('\t{') + print('\t\tcr_server.head_spu->dispatch_table.%s(%s);' % (func_name, apiutil.MakeCallString(params) )) + print("\t\tcr_server.current.c.%s.%s%s = cr_unpackData;" % (name,type,array)) + print('\t}') + print('}\n') + +print(""" +void crServerInitDispatch(void) +{ + crSPUInitDispatchTable( &(cr_server.dispatch) ); + crSPUCopyDispatchTable( &(cr_server.dispatch), &(cr_server.head_spu->dispatch_table ) ); +""") + +for func_name in keys: + if ("get" in apiutil.Properties(func_name) or + apiutil.FindSpecial( "server", func_name ) or + apiutil.FindSpecial( sys.argv[1]+"/../state_tracker/state", func_name )): + + wrap = apiutil.GetCategoryWrapper(func_name) + if wrap: + print('#if defined(CR_%s)' % wrap) + + print('\tcr_server.dispatch.%s = crServerDispatch%s;' % (func_name, func_name)) + if wrap: + print('#endif') + +print('}') + |