diff --git a/src/mapi/glapi/gen/api_exec_decl_h.py b/src/mapi/glapi/gen/api_exec_decl_h.py new file mode 100644 index 00000000000..d6e39673860 --- /dev/null +++ b/src/mapi/glapi/gen/api_exec_decl_h.py @@ -0,0 +1,79 @@ +# Copyright (C) 2012 Intel Corporation +# Copyright (C) 2021 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. + +# This script generates the file api_exec_decl.h, which contains forward +# declarations of all GL functions prefixed with _mesa_*. + +import argparse +import collections +import license +import gl_XML +import sys +import apiexec +import textwrap + + +class PrintCode(gl_XML.gl_print_base): + def __init__(self): + super().__init__() + + self.name = 'api_exec_decl_h.py' + self.license = license.bsd_license_template % ( + 'Copyright (C) 2012 Intel Corporation\n' + 'Copyright (C) 2021 Advanced Micro Devices, Inc.', + 'AUTHORS') + + def printBody(self, api): + print(textwrap.dedent("""\ + #ifndef API_EXEC_DECL_H + #define API_EXEC_DECL_H + + #include "GL/gl.h" + + #define GL_API GLAPI + #define GL_APIENTRY GLAPIENTRY + #include "GLES/gl.h" + + #ifdef __cplusplus + extern "C" { + #endif + """)) + + for f in api.functionIterateAll(): + if f.exec_flavor == 'skip': + continue + + print('{0} GLAPIENTRY _mesa_{1}({2});'.format( + f.return_type, f.name, f.get_parameter_string())) + if f.has_no_error_variant: + print('{0} GLAPIENTRY _mesa_{1}_no_error({2});'.format( + f.return_type, f.name, f.get_parameter_string())) + print('') + print('#ifdef __cplusplus') + print('}') + print('#endif') + print('') + print('#endif') + + +if __name__ == '__main__': + apiexec.print_glapi_file(PrintCode()) diff --git a/src/mapi/glapi/gen/api_exec_init.py b/src/mapi/glapi/gen/api_exec_init.py index e736dc741df..ec1c2ea6b88 100644 --- a/src/mapi/glapi/gen/api_exec_init.py +++ b/src/mapi/glapi/gen/api_exec_init.py @@ -46,89 +46,10 @@ header = """/** */ -#include "main/accum.h" +#include "api_exec_decl.h" +#include "glapi/glapi.h" #include "main/context.h" -#include "main/arbprogram.h" -#include "main/atifragshader.h" -#include "main/attrib.h" -#include "main/blend.h" -#include "main/blit.h" -#include "main/bufferobj.h" -#include "main/arrayobj.h" -#include "main/bbox.h" -#include "main/buffers.h" -#include "main/clear.h" -#include "main/clip.h" -#include "main/colortab.h" -#include "main/compute.h" -#include "main/condrender.h" -#include "main/conservativeraster.h" -#include "main/context.h" -#include "main/convolve.h" -#include "main/copyimage.h" -#include "main/depth.h" -#include "main/debug_output.h" -#include "main/dlist.h" -#include "main/draw.h" -#include "main/drawpix.h" -#include "main/drawtex.h" -#include "main/rastpos.h" -#include "main/enable.h" -#include "main/errors.h" -#include "main/es1_conversion.h" -#include "main/eval.h" -#include "main/externalobjects.h" -#include "main/get.h" -#include "main/glspirv.h" -#include "main/feedback.h" -#include "main/fog.h" -#include "main/fbobject.h" -#include "main/framebuffer.h" -#include "main/genmipmap.h" -#include "main/hint.h" -#include "main/histogram.h" -#include "main/light.h" -#include "main/lines.h" -#include "main/matrix.h" -#include "main/multisample.h" -#include "main/objectlabel.h" -#include "main/objectpurge.h" -#include "main/performance_monitor.h" -#include "main/performance_query.h" -#include "main/pipelineobj.h" -#include "main/pixel.h" -#include "main/pixelstore.h" -#include "main/points.h" -#include "main/polygon.h" -#include "main/program_resource.h" -#include "main/querymatrix.h" -#include "main/queryobj.h" -#include "main/readpix.h" -#include "main/samplerobj.h" -#include "main/scissor.h" -#include "main/stencil.h" -#include "main/texenv.h" -#include "main/texgetimage.h" -#include "main/teximage.h" -#include "main/texgen.h" -#include "main/texobj.h" -#include "main/texparam.h" -#include "main/texstate.h" -#include "main/texstorage.h" -#include "main/barrier.h" -#include "main/texturebindless.h" -#include "main/textureview.h" -#include "main/transformfeedback.h" -#include "main/mtypes.h" -#include "main/varray.h" -#include "main/viewport.h" -#include "main/shaderapi.h" -#include "main/shaderimage.h" -#include "main/uniforms.h" -#include "main/syncobj.h" -#include "main/formatquery.h" #include "main/dispatch.h" -#include "main/vdpau.h" /** diff --git a/src/mapi/glapi/gen/meson.build b/src/mapi/glapi/gen/meson.build index 17f1a523646..55651bac3cb 100644 --- a/src/mapi/glapi/gen/meson.build +++ b/src/mapi/glapi/gen/meson.build @@ -224,6 +224,15 @@ main_api_exec_c = custom_target( capture : true, ) +main_api_exec_decl_h = custom_target( + 'api_exec_decl.h', + input : ['api_exec_decl_h.py', 'gl_and_es_API.xml'], + output : 'api_exec_decl.h', + command : [prog_python, '@INPUT0@', '-f', '@INPUT1@'], + depend_files : files('apiexec.py') + glapi_gen_depends, + capture : true, +) + main_api_save_init_h = custom_target( 'api_save_init.h', input : ['api_save_init_h.py', 'gl_and_es_API.xml'], diff --git a/src/mesa/meson.build b/src/mesa/meson.build index 06f32cedd65..bcc3744f279 100644 --- a/src/mesa/meson.build +++ b/src/mesa/meson.build @@ -525,6 +525,7 @@ files_libmesa += [ mesa_lex, program_parse_tab, main_api_exec_c, + main_api_exec_decl_h, main_api_save_h, main_api_save_init_h, main_enums_c,