Commit b5424bb4 by Geoff Lang Committed by Commit Bot

Generate internal gl entry point functions as C functions.

Some internal GL functions are exported to our libGLESv1_CM library and to properly export them, they must be C functions. Bug: angleproject:5534 Change-Id: I37280312f73fd5e55166e4fa36659267d657a50b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2628139Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 409c1d5e
......@@ -8,7 +8,7 @@
"scripts/entry_point_packed_gl_enums.json":
"846be5dc8cb36076207699b025633fcc",
"scripts/generate_entry_points.py":
"5b3752c3e021d3a5cd76a6ccaf5263d7",
"bc6672944802037582be20087f3b3b37",
"scripts/gl.xml":
"f66967f3f3d696b5d8306fd80bbd49a8",
"scripts/gl_angle_ext.xml":
......@@ -98,23 +98,23 @@
"src/libEGL/libEGL_autogen.def":
"3f504d6280dc1d847bc2dedc51fa2640",
"src/libGL/entry_points_gl_1_autogen.cpp":
"827d821f0407ac8d66f9ed50e4083bb7",
"0f26c0b86e01b7ad7e5cdaab5720b997",
"src/libGL/entry_points_gl_1_autogen.h":
"26f196b4412e307437b84ac3381adc39",
"f5d504daaf2434ca7d0b8a6bb1afc61a",
"src/libGL/entry_points_gl_2_autogen.cpp":
"305ddc110465738e107ab07a37fab35e",
"1201f427b96d61acc81d4927d22509a7",
"src/libGL/entry_points_gl_2_autogen.h":
"d512384dffb856027ce8d540e9a123c4",
"6d3e89c9fa3cb69203153c6cfab9e120",
"src/libGL/entry_points_gl_3_autogen.cpp":
"b38fccb10394497cc85d5b3e67779370",
"02869ec21e923b01af7b5202c67b0a91",
"src/libGL/entry_points_gl_3_autogen.h":
"8c86d5aa9a4e3e45e99739b6d9b112bd",
"2dbae6f95a4f72417e50844e45e6f313",
"src/libGL/entry_points_gl_4_autogen.cpp":
"cb37e88a5fdc673986d02feead963bdf",
"c050f45c0435016e39dd0b729aba8d80",
"src/libGL/entry_points_gl_4_autogen.h":
"e97607aa7f86ce8797fd688d7f6e8337",
"859b5ca20dbbadd7dbb947df91bc09af",
"src/libGL/libGL_autogen.cpp":
"7156393fba9b86b40e8d20c68d7a4013",
"acd2e1984277482df9cc937a83a5df05",
"src/libGL/libGL_autogen.def":
"2789d87b05eea9f53d52e2aff499b785",
"src/libGLESv2/egl_ext_stubs_autogen.h":
......@@ -124,39 +124,39 @@
"src/libGLESv2/egl_stubs_autogen.h":
"6439daa350c1663e71dd0af37dcc91df",
"src/libGLESv2/entry_points_egl_autogen.cpp":
"ba9796b20452dbbe4180480aae02b8a3",
"e7b708af1c8de435532058eb165d421e",
"src/libGLESv2/entry_points_egl_autogen.h":
"3bc7a8df9deadd7cfd615d0cfad0c6a8",
"src/libGLESv2/entry_points_egl_ext_autogen.cpp":
"f6a18ab7478277d6c2f026684801af3a",
"5386f7567505e1eceb3b82440d22508b",
"src/libGLESv2/entry_points_egl_ext_autogen.h":
"5ae83ea21ee98991b68847f66793553f",
"src/libGLESv2/entry_points_gles_1_0_autogen.cpp":
"7d62e6f5a013b303c11a6b78b39ff3fb",
"3f839ee50c3040b6f41a368c9a385762",
"src/libGLESv2/entry_points_gles_1_0_autogen.h":
"899dcff9383465380f94fbdfe5bcf0a0",
"1d3aef77845a416497070985a8e9cb31",
"src/libGLESv2/entry_points_gles_2_0_autogen.cpp":
"f65e421cc249831c0da2c70836156a78",
"6765a75b56164b992de66218ce1263f1",
"src/libGLESv2/entry_points_gles_2_0_autogen.h":
"26387e27cbddf5e34d6cd9f850cb8b64",
"e682cd8f55110969f68d6a59573e0312",
"src/libGLESv2/entry_points_gles_3_0_autogen.cpp":
"c631759ce4615b8ec9465bf13870e8eb",
"6a3a3797a331bddd2929806da77a8e91",
"src/libGLESv2/entry_points_gles_3_0_autogen.h":
"0d246024379fbf55b87204db5d6a37e3",
"3ae6c2e3e9791a9c7491c1181a46abab",
"src/libGLESv2/entry_points_gles_3_1_autogen.cpp":
"12c36295425182cd450dfabc9ab0df3d",
"fc3a696601c70c48d4928359276200f7",
"src/libGLESv2/entry_points_gles_3_1_autogen.h":
"69bae5c94ed4665836a8464b6c353f9a",
"0cadd684407fad3e288654da30527f78",
"src/libGLESv2/entry_points_gles_3_2_autogen.cpp":
"e7009132df507f893f95f70a44d06dae",
"45d9c66f503aacd7d6ed2b7ec97f2231",
"src/libGLESv2/entry_points_gles_3_2_autogen.h":
"5798aa0a73af1d4ba5dfe99b6217a247",
"647f932a299cdb4726b60bbba059f0d2",
"src/libGLESv2/entry_points_gles_ext_autogen.cpp":
"ce88f10e7336dc7538e5edf73adbee77",
"00b8aad01accfac8593f97b8246adf43",
"src/libGLESv2/entry_points_gles_ext_autogen.h":
"9547a10c86a4c21175321919a2ff0d9c",
"3053361e33ec158829377b67b742b260",
"src/libGLESv2/libGLESv2_autogen.cpp":
"fb2f77a0d2f378372917789e73779758",
"fd1292f09a22eba907fec40121b35c5e",
"src/libGLESv2/libGLESv2_autogen.def":
"b190f97f311354cae04844fbeb8b0596",
"src/libGLESv2/libGLESv2_no_capture_autogen.def":
......
......@@ -4,7 +4,7 @@
"scripts/egl_angle_ext.xml":
"5bcc01462b355d933cf3ada15198fb68",
"scripts/gen_proc_table.py":
"1843f52355a9c573a4e39e33e3505c71",
"812d52162301bef358b2d8d38265c375",
"scripts/gl.xml":
"f66967f3f3d696b5d8306fd80bbd49a8",
"scripts/gl_angle_ext.xml":
......@@ -14,7 +14,7 @@
"scripts/wgl.xml":
"c36001431919e1c435f1215a85f7e1db",
"src/libGL/proc_table_wgl_autogen.cpp":
"37b60beed02927fdc38bcd652348f0a6",
"3511db1afe3281d0afc93fe91bd2b030",
"src/libGLESv2/proc_table_egl_autogen.cpp":
"86bd7870bbed3d0ce239204b0e423b6e"
"16244a356318c0b1df2cc72cfaa2872a"
}
\ No newline at end of file
......@@ -132,10 +132,10 @@ def main():
for function in gles_data:
if function.startswith("gl"):
all_functions[function] = "gl::" + function[2:]
all_functions[function] = "GL_" + function[2:]
# Special handling for EGL_ANGLE_explicit_context extension
if support_egl_ANGLE_explicit_context:
all_functions[function + "ContextANGLE"] = "gl::" + function[2:] + "ContextANGLE"
all_functions[function + "ContextANGLE"] = "GL_" + function[2:] + "ContextANGLE"
elif function.startswith("egl"):
all_functions[function] = "EGL_" + function[3:]
else:
......@@ -181,7 +181,7 @@ def main():
for function in gl_data:
if function.startswith("gl"):
all_functions[function] = "gl::" + function[2:]
all_functions[function] = "GL_" + function[2:]
else:
all_functions[function] = function
......
......@@ -60,10 +60,9 @@ TEMPLATE_ENTRY_POINT_HEADER = """\
{includes}
{ns}
{{
extern "C" {{
{entry_points}
}} // {ns}
}} // extern "C"
#endif // {lib}_ENTRY_POINTS_{annotation_upper}_AUTOGEN_H_
"""
......@@ -81,9 +80,9 @@ TEMPLATE_ENTRY_POINT_SOURCE = """\
{includes}
{ns}
{{
{entry_points}}} // {ns}
extern "C" {{
{entry_points}
}} // extern "C"
"""
TEMPLATE_ENTRY_POINTS_ENUM_HEADER = """\
......@@ -165,7 +164,7 @@ extern "C" {{
TEMPLATE_ENTRY_POINT_DECL = """ANGLE_EXPORT {return_type}{api}APIENTRY {name}{explicit_context_suffix}({explicit_context_param}{explicit_context_comma}{params});"""
TEMPLATE_GLES_ENTRY_POINT_NO_RETURN = """\
void GL_APIENTRY {name}{explicit_context_suffix}({explicit_context_param}{explicit_context_comma}{params})
void GL_APIENTRY GL_{name}{explicit_context_suffix}({explicit_context_param}{explicit_context_comma}{params})
{{
Context *context = {context_getter};
{event_comment}EVENT(context, GL{name}, "context = %d{comma_if_needed}{format_params}", CID(context){comma_if_needed}{pass_params});
......@@ -188,7 +187,7 @@ void GL_APIENTRY {name}{explicit_context_suffix}({explicit_context_param}{explic
"""
TEMPLATE_GLES_ENTRY_POINT_WITH_RETURN = """\
{return_type}GL_APIENTRY {name}{explicit_context_suffix}({explicit_context_param}{explicit_context_comma}{params})
{return_type}GL_APIENTRY GL_{name}{explicit_context_suffix}({explicit_context_param}{explicit_context_comma}{params})
{{
Context *context = {context_getter};
{event_comment}EVENT(context, GL{name}, "context = %d{comma_if_needed}{format_params}", CID(context){comma_if_needed}{pass_params});
......@@ -313,7 +312,7 @@ CONTEXT_DECL_FORMAT = """ {return_type} {name_lower_no_suffix}({internal_para
TEMPLATE_GL_ENTRY_POINT_EXPORT = """\
{return_type}GL_APIENTRY gl{name}{explicit_context_suffix}({explicit_context_param}{explicit_context_comma}{params})
{{
return gl::{name}{explicit_context_suffix}({explicit_context_internal_param}{explicit_context_comma}{internal_params});
return GL_{name}{explicit_context_suffix}({explicit_context_internal_param}{explicit_context_comma}{internal_params});
}}
"""
......@@ -620,6 +619,8 @@ TEMPLATE_SOURCES_INCLUDES = """\
#include "libANGLE/validation{validation_header_version}.h"
#include "libANGLE/entry_points_utils.h"
#include "libGLESv2/global_state.h"
using namespace gl;
"""
GLES_EXT_HEADER_INCLUDES = TEMPLATE_HEADER_INCLUDES.format(
......@@ -642,6 +643,8 @@ GLES_EXT_SOURCE_INCLUDES = TEMPLATE_SOURCES_INCLUDES.format(
#include "libANGLE/validationES3.h"
#include "libANGLE/validationES31.h"
#include "libANGLE/validationES32.h"
using namespace gl;
"""
DESKTOP_GL_HEADER_INCLUDES = """\
......@@ -666,6 +669,8 @@ TEMPLATE_DESKTOP_GL_SOURCE_INCLUDES = """\
#include "libANGLE/validationGL{}_autogen.h"
#include "libANGLE/entry_points_utils.h"
#include "libGLESv2/global_state.h"
using namespace gl;
"""
EGL_HEADER_INCLUDES = """\
......@@ -1023,7 +1028,7 @@ def format_entry_point_decl(api, cmd_name, proto, params, is_explicit_context):
stripped = strip_api_prefix(cmd_name)
return TEMPLATE_ENTRY_POINT_DECL.format(
api="EGL" if api == EGL else "GL_",
name="EGL_%s" % stripped if api == EGL else stripped,
name="EGL_%s" % stripped if api == EGL else "GL_%s" % stripped,
return_type=proto[:-len(cmd_name)],
params=", ".join(params),
comma_if_needed=comma_if_needed,
......@@ -1558,7 +1563,7 @@ def get_glext_decls(all_commands, gles_commands, version, is_explicit_context):
return glext_ptrs, glext_protos
def write_file(annotation, comment, template, entry_points, suffix, includes, lib, file, ns):
def write_file(annotation, comment, template, entry_points, suffix, includes, lib, file):
content = template.format(
script_name=os.path.basename(sys.argv[0]),
......@@ -1568,8 +1573,7 @@ def write_file(annotation, comment, template, entry_points, suffix, includes, li
comment=comment,
lib=lib.upper(),
includes=includes,
entry_points=entry_points,
ns=ns)
entry_points=entry_points)
path = path_to(lib, "entry_points_{}_autogen.{}".format(annotation.lower(), suffix))
......@@ -2292,9 +2296,9 @@ def main():
header_version=annotation.lower(), validation_header_version="ES" + version_annotation)
write_file(annotation, "GLES " + comment, TEMPLATE_ENTRY_POINT_HEADER, "\n".join(decls),
"h", header_includes, "libGLESv2", "gl.xml", "namespace gl")
"h", header_includes, "libGLESv2", "gl.xml")
write_file(annotation, "GLES " + comment, TEMPLATE_ENTRY_POINT_SOURCE, "\n".join(defs),
"cpp", source_includes, "libGLESv2", "gl.xml", "namespace gl")
"cpp", source_includes, "libGLESv2", "gl.xml")
glesdecls['core'][(major_version,
minor_version)] = get_decls(GLES, CONTEXT_DECL_FORMAT, all_commands,
......@@ -2498,9 +2502,9 @@ def main():
# Entry point files
write_file(annotation, name, TEMPLATE_ENTRY_POINT_HEADER, "\n".join(ver_decls), "h",
DESKTOP_GL_HEADER_INCLUDES, "libGL", "gl.xml", "namespace gl")
DESKTOP_GL_HEADER_INCLUDES, "libGL", "gl.xml")
write_file(annotation, name, TEMPLATE_ENTRY_POINT_SOURCE, "\n".join(ver_defs), "cpp",
source_includes, "libGL", "gl.xml", "namespace gl")
source_includes, "libGL", "gl.xml")
# Validation files
write_gl_validation_header("GL%s" % major_version, name, validation_protos, "gl.xml")
......@@ -2551,9 +2555,9 @@ def main():
libegl_windows_def_exports += [win_def_comment] + get_exports(eglxml.commands[version])
write_file("egl", "EGL", TEMPLATE_ENTRY_POINT_HEADER, "\n".join(egl_decls), "h",
EGL_HEADER_INCLUDES, "libGLESv2", "egl.xml", "extern \"C\"")
EGL_HEADER_INCLUDES, "libGLESv2", "egl.xml")
write_file("egl", "EGL", TEMPLATE_ENTRY_POINT_SOURCE, "\n".join(egl_defs), "cpp",
EGL_SOURCE_INCLUDES, "libGLESv2", "egl.xml", "extern \"C\"")
EGL_SOURCE_INCLUDES, "libGLESv2", "egl.xml")
write_egl_stubs_header("egl", "EGL", "egl.xml", EGL_STUBS_HEADER_PATH, eglxml.all_commands,
egl_commands, cmd_packed_egl_enums)
......@@ -2590,11 +2594,9 @@ def main():
libegl_windows_def_exports += [win_def_comment] + get_exports(ext_cmd_names)
write_file("egl_ext", "EGL Extension", TEMPLATE_ENTRY_POINT_HEADER, "\n".join(egl_ext_decls),
"h", EGL_EXT_HEADER_INCLUDES, "libGLESv2", "egl.xml and egl_angle_ext.xml",
"extern \"C\"")
"h", EGL_EXT_HEADER_INCLUDES, "libGLESv2", "egl.xml and egl_angle_ext.xml")
write_file("egl_ext", "EGL Extension", TEMPLATE_ENTRY_POINT_SOURCE, "\n".join(egl_ext_defs),
"cpp", EGL_EXT_SOURCE_INCLUDES, "libGLESv2", "egl.xml and egl_angle_ext.xml",
"extern \"C\"")
"cpp", EGL_EXT_SOURCE_INCLUDES, "libGLESv2", "egl.xml and egl_angle_ext.xml")
write_validation_header("EGL", "EGL", egl_validation_protos, "egl.xml and egl_angle_ext.xml",
TEMPLATE_EGL_VALIDATION_HEADER)
write_egl_stubs_header("egl_ext", "EXT extension", "egl.xml and egl_angle_ext.xml",
......@@ -2629,10 +2631,10 @@ def main():
write_file("gles_ext", "GLES extension", TEMPLATE_ENTRY_POINT_HEADER,
"\n".join([item for item in extension_decls]), "h", GLES_EXT_HEADER_INCLUDES,
"libGLESv2", "gl.xml and gl_angle_ext.xml", "namespace gl")
"libGLESv2", "gl.xml and gl_angle_ext.xml")
write_file("gles_ext", "GLES extension", TEMPLATE_ENTRY_POINT_SOURCE,
"\n".join([item for item in extension_defs]), "cpp", GLES_EXT_SOURCE_INCLUDES,
"libGLESv2", "gl.xml and gl_angle_ext.xml", "namespace gl")
"libGLESv2", "gl.xml and gl_angle_ext.xml")
write_gl_validation_header("ESEXT", "ES extension", ext_validation_protos,
"gl.xml and gl_angle_ext.xml")
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -808,4 +808,5 @@ EGLBoolean EGLAPIENTRY EGL_WaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags)
return WaitSync(thread, dpyPacked, syncPacked, flags);
}
} // extern "C"
......@@ -1123,4 +1123,5 @@ EGLBoolean EGLAPIENTRY EGL_StreamConsumerGLTextureExternalAttribsNV(EGLDisplay d
return StreamConsumerGLTextureExternalAttribsNV(thread, dpyPacked, streamPacked,
attrib_listPacked);
}
} // extern "C"
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment