Commit 8994fc7b by John Plate Committed by Commit Bot

Migrate CL entry points to libGLESv2

Bug: angleproject:5759 Change-Id: I79644e7bda3ad0a15eb041b2805b8765c0d22029 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2822258Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
parent c8ee13c7
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
"scripts/egl_angle_ext.xml": "scripts/egl_angle_ext.xml":
"5bcc01462b355d933cf3ada15198fb68", "5bcc01462b355d933cf3ada15198fb68",
"scripts/generate_loader.py": "scripts/generate_loader.py":
"3125733515c3cee68c3ee07c7b688da2", "e24af68efd9f8149b53225e4b07a20aa",
"scripts/gl.xml": "scripts/gl.xml":
"2a73a58a7e26d8676a2c0af6d528cae6", "2a73a58a7e26d8676a2c0af6d528cae6",
"scripts/gl_angle_ext.xml": "scripts/gl_angle_ext.xml":
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
"src/libEGL/egl_loader_autogen.h": "src/libEGL/egl_loader_autogen.h":
"9cbf4d491497058a32642865eb032276", "9cbf4d491497058a32642865eb032276",
"src/libOpenCL/cl_loader_autogen.cpp": "src/libOpenCL/cl_loader_autogen.cpp":
"e14107689ee438fb750a89ac6635a39e", "1251dfd7f095459ff076abb02a5bbf79",
"src/tests/restricted_traces/trace_egl_loader_autogen.cpp": "src/tests/restricted_traces/trace_egl_loader_autogen.cpp":
"ab1ce9e72e1e248b13302349f2228a89", "ab1ce9e72e1e248b13302349f2228a89",
"src/tests/restricted_traces/trace_egl_loader_autogen.h": "src/tests/restricted_traces/trace_egl_loader_autogen.h":
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"scripts/entry_point_packed_gl_enums.json": "scripts/entry_point_packed_gl_enums.json":
"4f7b43863a5e61991bba4010db463679", "4f7b43863a5e61991bba4010db463679",
"scripts/generate_entry_points.py": "scripts/generate_entry_points.py":
"cddb06dad6ee60412d7b7b149966e2fd", "15459e0793e7bfece50f13991be8d51b",
"scripts/gl.xml": "scripts/gl.xml":
"2a73a58a7e26d8676a2c0af6d528cae6", "2a73a58a7e26d8676a2c0af6d528cae6",
"scripts/gl_angle_ext.xml": "scripts/gl_angle_ext.xml":
...@@ -120,13 +120,17 @@ ...@@ -120,13 +120,17 @@
"src/libGL/libGL_autogen.def": "src/libGL/libGL_autogen.def":
"2789d87b05eea9f53d52e2aff499b785", "2789d87b05eea9f53d52e2aff499b785",
"src/libGLESv2/cl_stubs_autogen.h": "src/libGLESv2/cl_stubs_autogen.h":
"088690549f9eab4aab860d146d4a9c92", "719dd03921e8cfcd8db6c53c0bddd4ae",
"src/libGLESv2/egl_ext_stubs_autogen.h": "src/libGLESv2/egl_ext_stubs_autogen.h":
"2ef3b8d087f2a97f7270b96077c93856", "2ef3b8d087f2a97f7270b96077c93856",
"src/libGLESv2/egl_get_labeled_object_data.json": "src/libGLESv2/egl_get_labeled_object_data.json":
"2f4148b2ddf34e62670e32c5e6da4937", "2f4148b2ddf34e62670e32c5e6da4937",
"src/libGLESv2/egl_stubs_autogen.h": "src/libGLESv2/egl_stubs_autogen.h":
"6439daa350c1663e71dd0af37dcc91df", "6439daa350c1663e71dd0af37dcc91df",
"src/libGLESv2/entry_points_cl_autogen.cpp":
"fc02d4dce683eedc19e4e9e321928238",
"src/libGLESv2/entry_points_cl_autogen.h":
"129fa7936c8bc6a20de9269da0c3c7d3",
"src/libGLESv2/entry_points_egl_autogen.cpp": "src/libGLESv2/entry_points_egl_autogen.cpp":
"e7b708af1c8de435532058eb165d421e", "e7b708af1c8de435532058eb165d421e",
"src/libGLESv2/entry_points_egl_autogen.h": "src/libGLESv2/entry_points_egl_autogen.h":
...@@ -167,10 +171,6 @@ ...@@ -167,10 +171,6 @@
"a29336a4763b0ed66b9ddfe4847f68da", "a29336a4763b0ed66b9ddfe4847f68da",
"src/libGLESv2/libGLESv2_with_capture_autogen.def": "src/libGLESv2/libGLESv2_with_capture_autogen.def":
"301a20588e14724b390409c71d5ccfcd", "301a20588e14724b390409c71d5ccfcd",
"src/libOpenCL/entry_points_cl_autogen.cpp":
"36dc767bd0a475f2ca58549516cf59b1",
"src/libOpenCL/entry_points_cl_autogen.h":
"2e454a6373c1d0964490797898fb630f",
"src/libOpenCL/libOpenCL_autogen.cpp": "src/libOpenCL/libOpenCL_autogen.cpp":
"84da77a2f0a740f3a547e24fb1f40208" "be80b03e4d121921f4a27aba9ad16aa1"
} }
\ No newline at end of file
...@@ -252,6 +252,8 @@ void CL_API_CALL CL_{name}({params}) ...@@ -252,6 +252,8 @@ void CL_API_CALL CL_{name}({params})
CL_EVENT({name}, "{format_params}"{comma_if_needed}{pass_params}); CL_EVENT({name}, "{format_params}"{comma_if_needed}{pass_params});
// TODO: {name} // TODO: {name}
cl::{name}({internal_params});
}} }}
""" """
...@@ -262,7 +264,7 @@ TEMPLATE_CL_ENTRY_POINT_WITH_RETURN = """\ ...@@ -262,7 +264,7 @@ TEMPLATE_CL_ENTRY_POINT_WITH_RETURN = """\
// TODO: {name} // TODO: {name}
return ({return_type})0; return cl::{name}({internal_params});
}} }}
""" """
...@@ -283,8 +285,6 @@ TEMPLATE_CL_STUBS_HEADER = """\ ...@@ -283,8 +285,6 @@ TEMPLATE_CL_STUBS_HEADER = """\
namespace cl namespace cl
{{ {{
class Thread;
{stubs} {stubs}
}} // namespace cl }} // namespace cl
#endif // LIBGLESV2_{annotation_upper}_STUBS_AUTOGEN_H_ #endif // LIBGLESV2_{annotation_upper}_STUBS_AUTOGEN_H_
...@@ -833,19 +833,18 @@ using namespace egl; ...@@ -833,19 +833,18 @@ using namespace egl;
""" """
LIBCL_EXPORT_INCLUDES_AND_PREAMBLE = """ LIBCL_EXPORT_INCLUDES_AND_PREAMBLE = """
//#include "anglebase/no_destructor.h" #include "cl_loader.h"
//#include "common/system_utils.h"
#include <iostream> #include "anglebase/no_destructor.h"
//#include <memory> #include "common/system_utils.h"
#include "cl_loader.h" #include <iostream>
#include <memory>
namespace namespace
{ {
bool gLoaded = false; bool gLoaded = false;
/* TODO(jplate): uncomment after entry points moved to GLESV2 lib http://anglebug.com/5759
std::unique_ptr<angle::Library> &EntryPointsLib() std::unique_ptr<angle::Library> &EntryPointsLib()
{ {
static angle::base::NoDestructor<std::unique_ptr<angle::Library>> sEntryPointsLib; static angle::base::NoDestructor<std::unique_ptr<angle::Library>> sEntryPointsLib;
...@@ -856,7 +855,6 @@ angle::GenericProc CL_API_CALL GlobalLoad(const char *symbol) ...@@ -856,7 +855,6 @@ angle::GenericProc CL_API_CALL GlobalLoad(const char *symbol)
{ {
return reinterpret_cast<angle::GenericProc>(EntryPointsLib()->getSymbol(symbol)); return reinterpret_cast<angle::GenericProc>(EntryPointsLib()->getSymbol(symbol));
} }
*/
void EnsureCLLoaded() void EnsureCLLoaded()
{ {
...@@ -865,10 +863,9 @@ void EnsureCLLoaded() ...@@ -865,10 +863,9 @@ void EnsureCLLoaded()
return; return;
} }
// EntryPointsLib().reset( EntryPointsLib().reset(
// angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ApplicationDir)); angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ApplicationDir));
// angle::LoadCL(GlobalLoad); angle::LoadCL(GlobalLoad);
angle::LoadCL(nullptr);
if (!cl_loader.clGetDeviceIDs) if (!cl_loader.clGetDeviceIDs)
{ {
std::cerr << "Error loading CL entry points." << std::endl; std::cerr << "Error loading CL entry points." << std::endl;
...@@ -970,6 +967,8 @@ LIBCL_HEADER_INCLUDES = """\ ...@@ -970,6 +967,8 @@ LIBCL_HEADER_INCLUDES = """\
LIBCL_SOURCE_INCLUDES = """\ LIBCL_SOURCE_INCLUDES = """\
#include "entry_points_cl_autogen.h" #include "entry_points_cl_autogen.h"
#include "cl_stubs_autogen.h"
#include "entry_points_cl_utils.h" #include "entry_points_cl_utils.h"
""" """
...@@ -2438,11 +2437,12 @@ def write_stubs_header(api, annotation, title, data_source, out_file, all_comman ...@@ -2438,11 +2437,12 @@ def write_stubs_header(api, annotation, title, data_source, out_file, all_comman
continue continue
proto_text = "".join(proto.itertext()) proto_text = "".join(proto.itertext())
params = ["".join(param.itertext()) for param in command.findall('param')] params = [] if api == apis.CL else ["Thread *thread"]
params += ["".join(param.itertext()) for param in command.findall('param')]
return_type = proto_text[:-len(cmd_name)].strip() return_type = proto_text[:-len(cmd_name)].strip()
internal_params = get_internal_params(apis.EGL, cmd_name, ["Thread *thread"] + params, internal_params = get_internal_params(api, cmd_name, params, cmd_packed_egl_enums,
cmd_packed_egl_enums, packed_param_types) packed_param_types)
stubs.append("%s %s(%s);" % (return_type, strip_api_prefix(cmd_name), internal_params)) stubs.append("%s %s(%s);" % (return_type, strip_api_prefix(cmd_name), internal_params))
...@@ -2474,8 +2474,6 @@ def main(): ...@@ -2474,8 +2474,6 @@ def main():
EGL_STUBS_HEADER_PATH, EGL_STUBS_HEADER_PATH,
EGL_EXT_STUBS_HEADER_PATH, EGL_EXT_STUBS_HEADER_PATH,
'../src/libOpenCL/libOpenCL_autogen.cpp', '../src/libOpenCL/libOpenCL_autogen.cpp',
'../src/libOpenCL/entry_points_cl_autogen.cpp',
'../src/libOpenCL/entry_points_cl_autogen.h',
'../src/common/entry_points_enum_autogen.cpp', '../src/common/entry_points_enum_autogen.cpp',
'../src/common/entry_points_enum_autogen.h', '../src/common/entry_points_enum_autogen.h',
'../src/libANGLE/Context_gl_1_autogen.h', '../src/libANGLE/Context_gl_1_autogen.h',
...@@ -2516,6 +2514,8 @@ def main(): ...@@ -2516,6 +2514,8 @@ def main():
'../src/libANGLE/validationGL4_autogen.h', '../src/libANGLE/validationGL4_autogen.h',
'../src/libEGL/libEGL_autogen.cpp', '../src/libEGL/libEGL_autogen.cpp',
'../src/libEGL/libEGL_autogen.def', '../src/libEGL/libEGL_autogen.def',
'../src/libGLESv2/entry_points_cl_autogen.cpp',
'../src/libGLESv2/entry_points_cl_autogen.h',
'../src/libGLESv2/entry_points_egl_autogen.cpp', '../src/libGLESv2/entry_points_egl_autogen.cpp',
'../src/libGLESv2/entry_points_egl_autogen.h', '../src/libGLESv2/entry_points_egl_autogen.h',
'../src/libGLESv2/entry_points_egl_ext_autogen.cpp', '../src/libGLESv2/entry_points_egl_ext_autogen.cpp',
...@@ -2857,9 +2857,9 @@ def main(): ...@@ -2857,9 +2857,9 @@ def main():
libcl_windows_def_exports += [win_def_comment] + get_exports(clxml.commands[version]) libcl_windows_def_exports += [win_def_comment] + get_exports(clxml.commands[version])
write_file("cl", "CL", TEMPLATE_ENTRY_POINT_HEADER, "\n".join(cl_decls), "h", write_file("cl", "CL", TEMPLATE_ENTRY_POINT_HEADER, "\n".join(cl_decls), "h",
LIBCL_HEADER_INCLUDES, "libOpenCL", "cl.xml") LIBCL_HEADER_INCLUDES, "libGLESv2", "cl.xml")
write_file("cl", "CL", TEMPLATE_ENTRY_POINT_SOURCE, "\n".join(cl_defs), "cpp", write_file("cl", "CL", TEMPLATE_ENTRY_POINT_SOURCE, "\n".join(cl_defs), "cpp",
LIBCL_SOURCE_INCLUDES, "libOpenCL", "cl.xml") LIBCL_SOURCE_INCLUDES, "libGLESv2", "cl.xml")
write_stubs_header("CL", "cl", "CL", "cl.xml", CL_STUBS_HEADER_PATH, clxml.all_commands, write_stubs_header("CL", "cl", "CL", "cl.xml", CL_STUBS_HEADER_PATH, clxml.all_commands,
cl_commands, CLEntryPoints.get_packed_enums(), CL_PACKED_TYPES) cl_commands, CLEntryPoints.get_packed_enums(), CL_PACKED_TYPES)
......
...@@ -116,11 +116,8 @@ def gen_libcl_loader(): ...@@ -116,11 +116,8 @@ def gen_libcl_loader():
source_path = registry_xml.path_to(path, "cl_loader_autogen.cpp") source_path = registry_xml.path_to(path, "cl_loader_autogen.cpp")
with open(source_path, "w") as out: with open(source_path, "w") as out:
# TODO(jplate): use first setters after migration in http://anglebug.com/5759 setter = " cl_loader.%s = reinterpret_cast<cl_api_%s>(loadProc(\"CL_%s\"));"
# setter = " cl_loader.%s = reinterpret_cast<cl_api_%s>(loadProc(\"CL_%s\"));" setters = [setter % (cmd, cmd, cmd[2:]) for cmd in all_cmds]
# setters = [setter % (cmd, cmd, cmd[2:]) for cmd in all_cmds]
setter = " cl_loader.%s = CL_%s;"
setters = [setter % (cmd, cmd[2:]) for cmd in all_cmds]
loader_source = template_cl_loader_cpp.format( loader_source = template_cl_loader_cpp.format(
script_name=os.path.basename(sys.argv[0]), script_name=os.path.basename(sys.argv[0]),
...@@ -433,9 +430,6 @@ template_cl_loader_cpp = """// GENERATED FILE - DO NOT EDIT. ...@@ -433,9 +430,6 @@ template_cl_loader_cpp = """// GENERATED FILE - DO NOT EDIT.
#include "cl_loader.h" #include "cl_loader.h"
// TODO(jplate): remove include after entry points moved to GLESV2 lib http://anglebug.com/5759
#include "entry_points_cl_autogen.h"
cl_icd_dispatch cl_loader; cl_icd_dispatch cl_loader;
namespace angle namespace angle
......
...@@ -517,6 +517,9 @@ libglesv2_sources = [ ...@@ -517,6 +517,9 @@ libglesv2_sources = [
"src/libGLESv2/egl_ext_stubs_autogen.h", "src/libGLESv2/egl_ext_stubs_autogen.h",
"src/libGLESv2/egl_stubs.cpp", "src/libGLESv2/egl_stubs.cpp",
"src/libGLESv2/egl_stubs_autogen.h", "src/libGLESv2/egl_stubs_autogen.h",
"src/libGLESv2/entry_points_cl_autogen.cpp",
"src/libGLESv2/entry_points_cl_autogen.h",
"src/libGLESv2/entry_points_cl_utils.h",
"src/libGLESv2/entry_points_egl_autogen.cpp", "src/libGLESv2/entry_points_egl_autogen.cpp",
"src/libGLESv2/entry_points_egl_autogen.h", "src/libGLESv2/entry_points_egl_autogen.h",
"src/libGLESv2/entry_points_egl_ext_autogen.cpp", "src/libGLESv2/entry_points_egl_ext_autogen.cpp",
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
// entry_points_cl_autogen.h: // entry_points_cl_autogen.h:
// Defines the CL entry points. // Defines the CL entry points.
#ifndef LIBOPENCL_ENTRY_POINTS_CL_AUTOGEN_H_ #ifndef LIBGLESV2_ENTRY_POINTS_CL_AUTOGEN_H_
#define LIBOPENCL_ENTRY_POINTS_CL_AUTOGEN_H_ #define LIBGLESV2_ENTRY_POINTS_CL_AUTOGEN_H_
#include "export.h" #include "export.h"
...@@ -618,4 +618,4 @@ ANGLE_EXPORT cl_mem CL_API_CALL CL_CreateImageWithProperties(cl_context context, ...@@ -618,4 +618,4 @@ ANGLE_EXPORT cl_mem CL_API_CALL CL_CreateImageWithProperties(cl_context context,
cl_int *errcode_ret); cl_int *errcode_ret);
} // extern "C" } // extern "C"
#endif // LIBOPENCL_ENTRY_POINTS_CL_AUTOGEN_H_ #endif // LIBGLESV2_ENTRY_POINTS_CL_AUTOGEN_H_
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
// entry_points_cl_utils.h: // entry_points_cl_utils.h:
// These helpers are used in CL entry point routines. // These helpers are used in CL entry point routines.
#ifndef LIBOPENCL_ENTRY_POINTS_CL_UTILS_H_ #ifndef LIBGLESV2_ENTRY_POINTS_CL_UTILS_H_
#define LIBOPENCL_ENTRY_POINTS_CL_UTILS_H_ #define LIBGLESV2_ENTRY_POINTS_CL_UTILS_H_
#include <cinttypes> #include <cinttypes>
#include <cstdio> #include <cstdio>
...@@ -20,4 +20,4 @@ ...@@ -20,4 +20,4 @@
# define CL_EVENT(entryPoint, ...) (void(0)) # define CL_EVENT(entryPoint, ...) (void(0))
#endif #endif
#endif // LIBOPENCL_ENTRY_POINTS_CL_UTILS_H_ #endif // LIBGLESV2_ENTRY_POINTS_CL_UTILS_H_
...@@ -32,15 +32,22 @@ angle_source_set("cl_includes") { ...@@ -32,15 +32,22 @@ angle_source_set("cl_includes") {
angle_shared_library("OpenCL") { angle_shared_library("OpenCL") {
defines = [ "LIBCL_IMPLEMENTATION" ] defines = [ "LIBCL_IMPLEMENTATION" ]
sources = [ sources = [
"cl_loader.h", "cl_loader.h",
"cl_loader_autogen.cpp", "cl_loader_autogen.cpp",
"entry_points_cl_autogen.cpp",
"entry_points_cl_autogen.h",
"entry_points_cl_utils.h",
"libOpenCL_autogen.cpp", "libOpenCL_autogen.cpp",
] ]
deps = [ ":cl_includes" ]
configs += [
"$angle_root:debug_annotations_config",
"$angle_root:library_name_config",
]
deps = [
":cl_includes",
"$angle_root:angle_common",
]
} }
group("angle_cl") { group("angle_cl") {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#ifndef LIBCL_CL_LOADER_H_ #ifndef LIBCL_CL_LOADER_H_
#define LIBCL_CL_LOADER_H_ #define LIBCL_CL_LOADER_H_
#include <export.h> #include "export.h"
#ifndef CL_API_ENTRY #ifndef CL_API_ENTRY
# define CL_API_ENTRY ANGLE_EXPORT # define CL_API_ENTRY ANGLE_EXPORT
......
...@@ -7,19 +7,18 @@ ...@@ -7,19 +7,18 @@
// //
// libOpenCL_autogen.cpp: Implements the exported CL functions. // libOpenCL_autogen.cpp: Implements the exported CL functions.
//#include "anglebase/no_destructor.h" #include "cl_loader.h"
//#include "common/system_utils.h"
#include <iostream> #include "anglebase/no_destructor.h"
//#include <memory> #include "common/system_utils.h"
#include "cl_loader.h" #include <iostream>
#include <memory>
namespace namespace
{ {
bool gLoaded = false; bool gLoaded = false;
/* TODO(jplate): uncomment after entry points moved to GLESV2 lib http://anglebug.com/5759
std::unique_ptr<angle::Library> &EntryPointsLib() std::unique_ptr<angle::Library> &EntryPointsLib()
{ {
static angle::base::NoDestructor<std::unique_ptr<angle::Library>> sEntryPointsLib; static angle::base::NoDestructor<std::unique_ptr<angle::Library>> sEntryPointsLib;
...@@ -30,7 +29,6 @@ angle::GenericProc CL_API_CALL GlobalLoad(const char *symbol) ...@@ -30,7 +29,6 @@ angle::GenericProc CL_API_CALL GlobalLoad(const char *symbol)
{ {
return reinterpret_cast<angle::GenericProc>(EntryPointsLib()->getSymbol(symbol)); return reinterpret_cast<angle::GenericProc>(EntryPointsLib()->getSymbol(symbol));
} }
*/
void EnsureCLLoaded() void EnsureCLLoaded()
{ {
...@@ -39,10 +37,9 @@ void EnsureCLLoaded() ...@@ -39,10 +37,9 @@ void EnsureCLLoaded()
return; return;
} }
// EntryPointsLib().reset( EntryPointsLib().reset(
// angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ApplicationDir)); angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ApplicationDir));
// angle::LoadCL(GlobalLoad); angle::LoadCL(GlobalLoad);
angle::LoadCL(nullptr);
if (!cl_loader.clGetDeviceIDs) if (!cl_loader.clGetDeviceIDs)
{ {
std::cerr << "Error loading CL entry points." << std::endl; std::cerr << "Error loading CL entry points." << std::endl;
......
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