Capture/Replay: Auto-generate EGL capture code.
Replaces the custom code in the EGL stubs. Skips a few "Get"
entry points because this CL doesn't implement pointer capture
like we do for all the GL entry points.
Includes a new state in the AttributeMap that indicates which
type of attribute values we used when initializing the map.
Bug: angleproject:4035
Change-Id: I272eac5e4068602ce710ef66c9a1dce5387943a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949911
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
diff --git a/scripts/code_generation_hashes/GL_EGL_entry_points.json b/scripts/code_generation_hashes/GL_EGL_entry_points.json
index 69ebc82..e639054 100644
--- a/scripts/code_generation_hashes/GL_EGL_entry_points.json
+++ b/scripts/code_generation_hashes/GL_EGL_entry_points.json
@@ -6,7 +6,7 @@
"scripts/entry_point_packed_gl_enums.json":
"44a89e71f42598b0596ef4c25b290dff",
"scripts/generate_entry_points.py":
- "18dd48631e551dcadf8b687953d3c6cb",
+ "679167787fd12c1ec3cbac70957c08df",
"scripts/gl_angle_ext.xml":
"8dd9662655c39ce22fecdc2449594e54",
"scripts/registry_xml.py":
@@ -35,52 +35,56 @@
"48567dca16fd881dfe6d61fee0e3106f",
"src/libANGLE/Context_gles_ext_autogen.h":
"0d065fb2339cc6b6e154d002502192c1",
+ "src/libANGLE/capture/capture_egl_autogen.cpp":
+ "96116af910de967f275d18f5a3dc2d42",
+ "src/libANGLE/capture/capture_egl_autogen.h":
+ "fae4b722da10aceb3cad63d067164940",
"src/libANGLE/capture/capture_gl_1_autogen.cpp":
- "f9bf8c9d8af9c097031be92ea3e805b5",
+ "5dfd57aea4a672d42fb4fd4df332709c",
"src/libANGLE/capture/capture_gl_1_autogen.h":
"48ab591d9671ea49aa9ae977b6a0d2fb",
"src/libANGLE/capture/capture_gl_2_autogen.cpp":
- "2fb35570619b2e7a2088e523d0017b15",
+ "8e4d812520a8f17c5ce1f006e7cacb09",
"src/libANGLE/capture/capture_gl_2_autogen.h":
"1e5b7623566fe1282567e3b31cddbee1",
"src/libANGLE/capture/capture_gl_3_autogen.cpp":
- "257e0e9b36c2111165122799054b6277",
+ "423e570a7f2264ca30b5d936505e24d0",
"src/libANGLE/capture/capture_gl_3_autogen.h":
"32e061964a2bccfc27dc95eb1a69558e",
"src/libANGLE/capture/capture_gl_4_autogen.cpp":
- "334403c06a9ae7b5a537ca762dfb32ff",
+ "9b160c5e3df64deb3d190d7c82d7dbd2",
"src/libANGLE/capture/capture_gl_4_autogen.h":
"985366fe10b1e96e557a84d26769a042",
"src/libANGLE/capture/capture_gles_1_0_autogen.cpp":
- "79678697323312af94be6a41cce62cc4",
+ "9c920afc742fd77145172494faa42146",
"src/libANGLE/capture/capture_gles_1_0_autogen.h":
"141838b474dda3d9a6122e73d3621972",
"src/libANGLE/capture/capture_gles_2_0_autogen.cpp":
- "80e9dd0750299f2ada17042bf0c337f9",
+ "44079a951893f3bd2424946f40b371d8",
"src/libANGLE/capture/capture_gles_2_0_autogen.h":
"73d813905e7e938cf11d1722f98de84b",
"src/libANGLE/capture/capture_gles_3_0_autogen.cpp":
- "124063a757419fa0246948e141312768",
+ "2030b9d08eecf9ec0ee960bd2af25a76",
"src/libANGLE/capture/capture_gles_3_0_autogen.h":
"c5bff0201be9dc51fdb507a63dd9d8f8",
"src/libANGLE/capture/capture_gles_3_1_autogen.cpp":
- "c94c8573246f3c281d3a4b68e8a3301a",
+ "071260877f00a8841751f3cd309069d3",
"src/libANGLE/capture/capture_gles_3_1_autogen.h":
"414b92fe8db95146d8af3c13830e3685",
"src/libANGLE/capture/capture_gles_3_2_autogen.cpp":
- "1c8511a8acf5a58bded506939dad0fef",
+ "3cdbd40c4f971a7770076326bfce51c7",
"src/libANGLE/capture/capture_gles_3_2_autogen.h":
"74ed7366af3a46c0661397cfa29ec6fc",
"src/libANGLE/capture/capture_gles_ext_autogen.cpp":
- "f332b5e5e0573f3f9f6887afb663a5c4",
+ "b9cae90fe442c5a5c081bfbcd3413a78",
"src/libANGLE/capture/capture_gles_ext_autogen.h":
"d9bb79d32a32b331dac93956065c0b66",
"src/libANGLE/capture/frame_capture_replay_autogen.cpp":
"f1c2b5949709f05f71aeddee6d00d701",
"src/libANGLE/capture/frame_capture_utils_autogen.cpp":
- "c87dd3000aef4270b40b98deeb497144",
+ "c332b27634067cc044b78b3d0de700ce",
"src/libANGLE/capture/frame_capture_utils_autogen.h":
- "5bcab4ec3a25b1894bd1715581a7b1d3",
+ "8e136ce01abc762b5cf1862256d14c83",
"src/libANGLE/validationCL_autogen.h":
"0022d0cdb6a9e2ef4a59b71164f62333",
"src/libANGLE/validationEGL_autogen.h":
@@ -122,11 +126,11 @@
"src/libGLESv2/entry_points_cl_autogen.h":
"dde2f94c3004874a7da995dae69da811",
"src/libGLESv2/entry_points_egl_autogen.cpp":
- "2ae6b7456e2e8a858bbaf06ab62246fa",
+ "3ec155b49e891165d7e0cdc4cdad5258",
"src/libGLESv2/entry_points_egl_autogen.h":
"3bc7a8df9deadd7cfd615d0cfad0c6a8",
"src/libGLESv2/entry_points_egl_ext_autogen.cpp":
- "46e86754277c35b101784854532b2e5c",
+ "b02ab9c50a2740a284d044b4415e1383",
"src/libGLESv2/entry_points_egl_ext_autogen.h":
"132314c90c7f1a104d41f911316c169d",
"src/libGLESv2/entry_points_gl_1_autogen.cpp":
diff --git a/scripts/generate_entry_points.py b/scripts/generate_entry_points.py
index 8046bb1..511b436 100755
--- a/scripts/generate_entry_points.py
+++ b/scripts/generate_entry_points.py
@@ -180,7 +180,7 @@
{{
context->{name_lower_no_suffix}({internal_params});
}}
- ANGLE_CAPTURE_GL({name}, isCallValid, {capture_params});
+ ANGLE_CAPTURE_GL({name}, isCallValid, {gl_capture_params});
}}
else
{{
@@ -208,7 +208,7 @@
{{
returnValue = GetDefaultReturnValue<angle::EntryPoint::GL{name}, {return_type}>();
}}
- ANGLE_CAPTURE_GL({name}, isCallValid, {capture_params}, returnValue);
+ ANGLE_CAPTURE_GL({name}, isCallValid, {gl_capture_params}, returnValue);
}}
else
{{
@@ -233,6 +233,7 @@
ANGLE_EGL_VALIDATE_VOID(thread, {name}, {labeled_object}, {internal_params});
{name}(thread{comma_if_needed}{internal_params});
+ ANGLE_CAPTURE_EGL({name}, true, {egl_capture_params});
}}
"""
@@ -256,7 +257,9 @@
ANGLE_EGL_VALIDATE(thread, {name}, {labeled_object}, {return_type}{comma_if_needed}{internal_params});
- return {name}(thread{comma_if_needed}{internal_params});
+ {return_type} returnValue = {name}(thread{comma_if_needed}{internal_params});
+ ANGLE_CAPTURE_EGL({name}, true, {egl_capture_params}, returnValue);
+ return returnValue;
}}
"""
@@ -534,10 +537,10 @@
#include "common/PackedEnums.h"
#include "libANGLE/capture/FrameCapture.h"
-namespace gl
+namespace {namespace}
{{
{prototypes}
-}} // namespace gl
+}} // namespace {namespace}
#endif // LIBANGLE_CAPTURE_{annotation_upper}_AUTOGEN_H_
"""
@@ -562,13 +565,13 @@
using namespace angle;
-namespace gl
+namespace {namespace}
{{
{capture_methods}
-}} // namespace gl
+}} // namespace {namespace}
"""
-TEMPLATE_CAPTURE_METHOD_WITH_RETURN_VALUE = """
+TEMPLATE_CAPTURE_METHOD_WITH_RETURN_VALUE = """\
CallCapture Capture{short_name}({params_with_type}, {return_value_type_original} returnValue)
{{
ParamBuffer paramBuffer;
@@ -579,18 +582,18 @@
InitParamValue(ParamType::T{return_value_type_custom}, returnValue, &returnValueCapture.value);
paramBuffer.addReturnValue(std::move(returnValueCapture));
- return CallCapture(angle::EntryPoint::GL{short_name}, std::move(paramBuffer));
+ return CallCapture(angle::EntryPoint::{api_upper}{short_name}, std::move(paramBuffer));
}}
"""
-TEMPLATE_CAPTURE_METHOD_NO_RETURN_VALUE = """
+TEMPLATE_CAPTURE_METHOD_NO_RETURN_VALUE = """\
CallCapture Capture{short_name}({params_with_type})
{{
ParamBuffer paramBuffer;
{parameter_captures}
- return CallCapture(angle::EntryPoint::GL{short_name}, std::move(paramBuffer));
+ return CallCapture(angle::EntryPoint::{api_upper}{short_name}, std::move(paramBuffer));
}}
"""
@@ -881,6 +884,7 @@
EGL_SOURCE_INCLUDES = """\
#include "libGLESv2/entry_points_egl_autogen.h"
+#include "libANGLE/capture/capture_egl_autogen.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/validationEGL_autogen.h"
#include "libGLESv2/egl_stubs_autogen.h"
@@ -899,6 +903,7 @@
EGL_EXT_SOURCE_INCLUDES = """\
#include "libGLESv2/entry_points_egl_ext_autogen.h"
+#include "libANGLE/capture/capture_egl_autogen.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/validationEGL_autogen.h"
#include "libGLESv2/egl_ext_stubs_autogen.h"
@@ -1262,6 +1267,8 @@
"EGLSyncKHR": "egl::Sync *",
}
+CAPTURE_BLOCKLIST = ['eglGetProcAddress']
+
def is_aliasing_excepted(api, cmd_name):
return api == apis.GLES and cmd_name in ALIASING_EXCEPTIONS
@@ -1578,8 +1585,10 @@
", ".join(pass_params),
"comma_if_needed":
", " if len(params) > 0 else "",
- "capture_params":
+ "gl_capture_params":
", ".join(["context"] + internal_params),
+ "egl_capture_params":
+ ", ".join(["thread"] + internal_params),
"validate_params":
", ".join(["context"] + [entry_point_name] + internal_params),
"format_params":
@@ -1632,14 +1641,17 @@
def format_capture_method(api, command, cmd_name, proto, params, all_param_types,
capture_pointer_funcs, cmd_packed_gl_enums, packed_param_types):
+ context_param_typed = 'egl::Thread *thread' if api == apis.EGL else 'const State &glState'
+ context_param_name = 'thread' if api == apis.EGL else 'glState'
+
packed_gl_enums = get_packed_enums(api, cmd_packed_gl_enums, cmd_name, packed_param_types,
params)
params_with_type = get_internal_params(api, cmd_name,
- ["const State &glState", "bool isCallValid"] + params,
+ [context_param_typed, "bool isCallValid"] + params,
cmd_packed_gl_enums, packed_param_types)
params_just_name = ", ".join(
- ["glState", "isCallValid"] +
+ [context_param_name, "isCallValid"] +
[just_the_name_packed(param, packed_gl_enums) for param in params])
parameter_captures = []
@@ -1648,15 +1660,16 @@
param_name = just_the_name_packed(param, packed_gl_enums)
param_type = just_the_type_packed(param, packed_gl_enums).strip()
- # TODO(http://anglebug.com/4035: Add support for egl::AttributeMap.
if 'AttributeMap' in param_type:
- # egl::AttributeMap is too complex for ParamCapture to handle it.
+ capture = 'paramBuffer.addParam(CaptureAttributeMap(%s));' % param_name
+ parameter_captures += [capture]
continue
pointer_count = param_type.count("*")
capture_param_type = get_capture_param_type_name(param_type)
- if pointer_count > 0:
+ # With EGL capture, we don't currently support capturing specific pointer params.
+ if pointer_count > 0 and api != apis.EGL:
params = params_just_name
capture_name = "Capture%s_%s" % (strip_api_prefix(cmd_name), param_name)
capture = TEMPLATE_PARAMETER_CAPTURE_POINTER.format(
@@ -1680,23 +1693,32 @@
capture = TEMPLATE_PARAMETER_CAPTURE_VALUE.format(
name=param_name, type=capture_param_type)
- all_param_types.add(capture_param_type)
-
- parameter_captures += [capture]
+ # For specific methods we can't easily parse their types. Work around this by omitting
+ # parameter captures, but keeping the capture method as a mostly empty stub.
+ if cmd_name not in CAPTURE_BLOCKLIST:
+ all_param_types.add(capture_param_type)
+ parameter_captures += [capture]
return_type = proto[:-len(cmd_name)].strip()
+ capture_return_type = get_capture_param_type_name(return_type)
+ if capture_return_type != 'void':
+ if cmd_name in CAPTURE_BLOCKLIST:
+ params_with_type += ", %s returnValue" % capture_return_type
+ else:
+ all_param_types.add(capture_return_type)
format_args = {
+ "api_upper": "EGL" if api == apis.EGL else "GL",
"full_name": cmd_name,
"short_name": strip_api_prefix(cmd_name),
"params_with_type": params_with_type,
"params_just_name": params_just_name,
"parameter_captures": "\n ".join(parameter_captures),
"return_value_type_original": return_type,
- "return_value_type_custom": get_capture_param_type_name(return_type)
+ "return_value_type_custom": capture_return_type,
}
- if return_type == "void":
+ if return_type == "void" or cmd_name in CAPTURE_BLOCKLIST:
return TEMPLATE_CAPTURE_METHOD_NO_RETURN_VALUE.format(**format_args)
else:
return TEMPLATE_CAPTURE_METHOD_WITH_RETURN_VALUE.format(**format_args)
@@ -1781,8 +1803,9 @@
def format_capture_proto(api, cmd_name, proto, params, cmd_packed_gl_enums, packed_param_types):
+ context_param_typed = 'egl::Thread *thread' if api == apis.EGL else 'const State &glState'
internal_params = get_internal_params(api, cmd_name,
- ["const State &glState", "bool isCallValid"] + params,
+ [context_param_typed, "bool isCallValid"] + params,
cmd_packed_gl_enums, packed_param_types)
return_type = proto[:-len(cmd_name)].strip()
if return_type != "void":
@@ -1827,6 +1850,7 @@
self.validation_protos.append(
format_validation_proto(self.api, cmd_name, proto_text, param_text,
cmd_packed_enums, packed_param_types))
+
self.capture_protos.append(
format_capture_proto(self.api, cmd_name, proto_text, param_text, cmd_packed_enums,
packed_param_types))
@@ -2103,15 +2127,19 @@
TEMPLATE_GL_VALIDATION_HEADER)
-def write_capture_header(annotation, comment, protos, capture_pointer_funcs):
+def write_capture_header(api, annotation, comment, protos, capture_pointer_funcs):
+ ns = 'egl' if api == apis.EGL else 'gl'
+ combined_protos = ["\n// Method Captures\n"] + protos
+ if capture_pointer_funcs:
+ combined_protos += ["\n// Parameter Captures\n"] + capture_pointer_funcs
content = TEMPLATE_CAPTURE_HEADER.format(
script_name=os.path.basename(sys.argv[0]),
- data_source_name="gl.xml and gl_angle_ext.xml",
+ data_source_name="%s.xml and %s_angle_ext.xml" % (ns, ns),
annotation_lower=annotation.lower(),
annotation_upper=annotation.upper(),
comment=comment,
- prototypes="\n".join(["\n// Method Captures\n"] + protos + ["\n// Parameter Captures\n"] +
- capture_pointer_funcs))
+ namespace=ns,
+ prototypes="\n".join(combined_protos))
path = path_to(os.path.join("libANGLE", "capture"), "capture_%s_autogen.h" % annotation)
@@ -2120,13 +2148,15 @@
out.close()
-def write_capture_source(annotation_with_dash, annotation_no_dash, comment, capture_methods):
+def write_capture_source(api, annotation_with_dash, annotation_no_dash, comment, capture_methods):
+ ns = 'egl' if api == apis.EGL else 'gl'
content = TEMPLATE_CAPTURE_SOURCE.format(
script_name=os.path.basename(sys.argv[0]),
- data_source_name="gl.xml and gl_angle_ext.xml",
+ data_source_name="%s.xml and %s_angle_ext.xml" % (ns, ns),
annotation_with_dash=annotation_with_dash,
annotation_no_dash=annotation_no_dash,
comment=comment,
+ namespace=ns,
capture_methods="\n".join(capture_methods))
path = path_to(
@@ -2138,7 +2168,8 @@
def is_packed_enum_param_type(param_type):
- return param_type[0:2] != "GL" and "void" not in param_type
+ return not param_type.startswith("GL") and not param_type.startswith(
+ "EGL") and "void" not in param_type
def add_namespace(param_type):
@@ -2198,16 +2229,14 @@
def get_gl_param_type_type(param_type):
- if not is_packed_enum_param_type(param_type):
- return get_gl_pointer_type(param_type)
- else:
+ if is_packed_enum_param_type(param_type):
base_type = param_type.replace("Pointer", "").replace("Const", "")
if is_id_type(base_type):
replace_type = "GLuint"
else:
replace_type = "GLenum"
param_type = param_type.replace(base_type, replace_type)
- return get_gl_pointer_type(param_type)
+ return get_gl_pointer_type(param_type)
def get_param_type_union_name(param_type):
@@ -2672,6 +2701,8 @@
'../src/libANGLE/Context_gles_3_1_autogen.h',
'../src/libANGLE/Context_gles_3_2_autogen.h',
'../src/libANGLE/Context_gles_ext_autogen.h',
+ '../src/libANGLE/capture/capture_egl_autogen.cpp',
+ '../src/libANGLE/capture/capture_egl_autogen.h',
'../src/libANGLE/capture/capture_gl_1_autogen.cpp',
'../src/libANGLE/capture/capture_gl_1_autogen.h',
'../src/libANGLE/capture/capture_gl_2_autogen.cpp',
@@ -2829,9 +2860,9 @@
write_gl_validation_header(validation_annotation, "ES %s" % comment, eps.validation_protos,
"gl.xml and gl_angle_ext.xml")
- write_capture_header('gles_' + version, comment, eps.capture_protos,
+ write_capture_header(apis.GLES, 'gles_' + version, comment, eps.capture_protos,
eps.capture_pointer_funcs)
- write_capture_source('gles_' + version, validation_annotation, comment,
+ write_capture_source(apis.GLES, 'gles_' + version, validation_annotation, comment,
eps.capture_methods)
# After we finish with the main entry points, we process the extensions.
@@ -2970,9 +3001,10 @@
source_includes, "libGLESv2", "gl.xml")
# Capture files
- write_capture_header(annotation.lower(), name, capture_protos, capture_pointer_funcs)
- write_capture_source(annotation.lower(), 'GL' + str(major_version) + '_autogen', name,
- capture_defs)
+ write_capture_header(apis.GL, annotation.lower(), name, capture_protos,
+ capture_pointer_funcs)
+ write_capture_source(apis.GL, annotation.lower(), 'GL' + str(major_version) + '_autogen',
+ name, capture_defs)
# Validation files
write_gl_validation_header("GL%s" % major_version, name, validation_protos, "gl.xml")
@@ -3088,6 +3120,8 @@
libegl_ep_defs = []
libegl_windows_def_exports = []
egl_commands = []
+ egl_capture_protos = []
+ egl_capture_methods = []
for major_version, minor_version in registry_xml.EGL_VERSIONS:
version = "%d_%d" % (major_version, minor_version)
@@ -3116,6 +3150,8 @@
libegl_ep_defs += [comment] + eps.export_defs
egl_validation_protos += [comment] + eps.validation_protos
libegl_windows_def_exports += [win_def_comment] + get_exports(eglxml.commands[version])
+ egl_capture_protos += eps.capture_protos
+ egl_capture_methods += eps.capture_methods
egl_decls.append("} // extern \"C\"")
egl_defs.append("} // extern \"C\"")
@@ -3151,6 +3187,8 @@
libegl_ep_defs += [comment] + eps.export_defs
egl_validation_protos += [comment] + eps.validation_protos
libegl_windows_def_exports += [win_def_comment] + get_exports(ext_cmd_names)
+ egl_capture_protos += eps.capture_protos
+ egl_capture_methods += eps.capture_methods
# Avoid writing out entry points defined by a prior extension.
for dupe in eglxml.ext_dupes[extension_name]:
@@ -3170,6 +3208,9 @@
EGL_EXT_STUBS_HEADER_PATH, eglxml.all_commands, egl_ext_commands,
EGLEntryPoints.get_packed_enums(), EGL_PACKED_TYPES)
+ write_capture_header(apis.EGL, 'egl', 'EGL', egl_capture_protos, [])
+ write_capture_source(apis.EGL, 'egl', 'EGL', 'all', egl_capture_methods)
+
wglxml = registry_xml.RegistryXML('wgl.xml')
name_prefix = "WGL_VERSION_"
@@ -3200,8 +3241,9 @@
write_gl_validation_header("ESEXT", "ES extension", ext_validation_protos,
"gl.xml and gl_angle_ext.xml")
- write_capture_header("gles_ext", "extension", ext_capture_protos, ext_capture_pointer_funcs)
- write_capture_source("gles_ext", "ESEXT", "extension", ext_capture_methods)
+ write_capture_header(apis.GLES, "gles_ext", "extension", ext_capture_protos,
+ ext_capture_pointer_funcs)
+ write_capture_source(apis.GLES, "gles_ext", "ESEXT", "extension", ext_capture_methods)
write_context_api_decls(glesdecls, "gles")
write_context_api_decls(desktop_gl_decls, "gl")
diff --git a/src/libANGLE/AttributeMap.cpp b/src/libANGLE/AttributeMap.cpp
index 6b56aee..e0c82be 100644
--- a/src/libANGLE/AttributeMap.cpp
+++ b/src/libANGLE/AttributeMap.cpp
@@ -129,6 +129,7 @@
{
AttributeMap map;
map.mIntPointer = attributes;
+ map.mMapType = AttributeMapType::Int;
return map;
}
@@ -137,6 +138,7 @@
{
AttributeMap map;
map.mAttribPointer = attributes;
+ map.mMapType = AttributeMapType::Attrib;
return map;
}
diff --git a/src/libANGLE/AttributeMap.h b/src/libANGLE/AttributeMap.h
index 60ba913..ceecce6 100644
--- a/src/libANGLE/AttributeMap.h
+++ b/src/libANGLE/AttributeMap.h
@@ -24,6 +24,13 @@
using AttributeValidationFunc =
std::function<bool(const ValidationContext *, const Display *, EGLAttrib)>;
+enum AttributeMapType
+{
+ Invalid,
+ Attrib,
+ Int,
+};
+
class AttributeMap final
{
public:
@@ -76,6 +83,8 @@
static AttributeMap CreateFromIntArray(const EGLint *attributes);
static AttributeMap CreateFromAttribArray(const EGLAttrib *attributes);
+ AttributeMapType getType() const { return mMapType; }
+
private:
bool isValidated() const;
@@ -94,6 +103,7 @@
mutable const EGLint *mIntPointer = nullptr;
mutable const EGLAttrib *mAttribPointer = nullptr;
mutable Map mValidatedAttributes;
+ mutable AttributeMapType mMapType = AttributeMapType::Invalid;
};
} // namespace egl
diff --git a/src/libANGLE/capture/FrameCapture.cpp b/src/libANGLE/capture/FrameCapture.cpp
index 977f571..0fabd25 100644
--- a/src/libANGLE/capture/FrameCapture.cpp
+++ b/src/libANGLE/capture/FrameCapture.cpp
@@ -32,7 +32,7 @@
#include "libANGLE/Shader.h"
#include "libANGLE/Surface.h"
#include "libANGLE/VertexArray.h"
-#include "libANGLE/capture/capture_egl.h"
+#include "libANGLE/capture/capture_egl_autogen.h"
#include "libANGLE/capture/capture_gles_1_0_autogen.h"
#include "libANGLE/capture/capture_gles_2_0_autogen.h"
#include "libANGLE/capture/capture_gles_3_0_autogen.h"
@@ -3843,11 +3843,11 @@
// Create the image on demand
egl::Image *image = nullptr;
- Capture(setupCalls,
- CaptureEGLCreateImage(nullptr, context, EGL_GL_TEXTURE_2D_KHR,
- reinterpret_cast<EGLClientBuffer>(
- static_cast<GLuint64>(stagingTexId.value)),
- retrievedAttribs, image));
+ Capture(setupCalls, egl::CaptureCreateImage(
+ nullptr, true, nullptr, context, EGL_GL_TEXTURE_2D_KHR,
+ reinterpret_cast<EGLClientBuffer>(
+ static_cast<GLuint64>(stagingTexId.value)),
+ retrievedAttribs, image));
// Pass the eglImage to the texture that is bound to GL_TEXTURE_EXTERNAL_OES
// target
@@ -5077,6 +5077,22 @@
// - Same as uniforms, the value can vary, asking above GL_ACTIVE_ATTRIBUTES is an error
return true;
+ case EntryPoint::EGLChooseConfig:
+ case EntryPoint::EGLGetProcAddress:
+ case EntryPoint::EGLGetConfigAttrib:
+ case EntryPoint::EGLGetConfigs:
+ case EntryPoint::EGLGetSyncAttrib:
+ case EntryPoint::EGLGetSyncAttribKHR:
+ case EntryPoint::EGLQuerySurface:
+ // Skip these calls because:
+ // - Some EGL types and pointer parameters aren't yet implemented in EGL capture.
+ return true;
+
+ case EntryPoint::EGLSwapBuffers:
+ // Skip these calls because:
+ // - Swap is handled specially by the trace harness.
+ return true;
+
default:
break;
}
@@ -6235,6 +6251,22 @@
captureClientArraySnapshot(context, indexRange.end + 1, instanceCount);
}
+template <typename AttribT, typename FactoryT>
+void CreateEGLImagePreCallUpdate(const CallCapture &call,
+ ResourceTracker &resourceTracker,
+ ParamType paramType,
+ FactoryT factory)
+{
+ GLeglImageOES image = call.params.getReturnValue().value.voidPointerVal;
+ const ParamCapture ¶m = call.params.getParam("attrib_list", paramType, 4);
+ const AttribT *attribs =
+ param.data.empty() ? nullptr : reinterpret_cast<const AttribT *>(param.data[0].data());
+ egl::AttributeMap attributeMap = factory(attribs);
+ attributeMap.initializeWithoutValidation();
+ resourceTracker.getImageToAttribTable().insert(
+ std::pair<void *, egl::AttributeMap>(image, attributeMap));
+}
+
void FrameCaptureShared::maybeCapturePreCallUpdates(
const gl::Context *context,
CallCapture &call,
@@ -6781,15 +6813,16 @@
}
case EntryPoint::EGLCreateImage:
+ {
+ CreateEGLImagePreCallUpdate<EGLAttrib>(call, mResourceTracker,
+ ParamType::TEGLAttribPointer,
+ egl::AttributeMap::CreateFromAttribArray);
+ break;
+ }
case EntryPoint::EGLCreateImageKHR:
{
- GLeglImageOES image = call.params.getReturnValue().value.voidPointerVal;
- const EGLAttrib *attribs = reinterpret_cast<const EGLAttrib *>(
- call.params.getParam("attrib_list", ParamType::TGLint64Pointer, 4).data[0].data());
- egl::AttributeMap attributeMap = egl::AttributeMap::CreateFromAttribArray(attribs);
- attributeMap.initializeWithoutValidation();
- mResourceTracker.getImageToAttribTable().insert(
- std::pair<void *, egl::AttributeMap>(image, attributeMap));
+ CreateEGLImagePreCallUpdate<EGLint>(call, mResourceTracker, ParamType::TEGLintPointer,
+ egl::AttributeMap::CreateFromIntArray);
break;
}
@@ -7977,9 +8010,8 @@
out << proto << "\n";
out << "{\n";
- out << " gContextMap[0] = EGL_NO_CONTEXT;\n";
out << " EGLContext context = eglGetCurrentContext();\n";
- out << " gContextMap[" << context->id().value << "] = context;\n";
+ out << " gContextMap[" << reinterpret_cast<uintptr_t>(context) << "ul] = context;\n";
out << "\n";
// Setup all of the shared objects.
@@ -8010,8 +8042,8 @@
// beginning of the setup call stream.
out << " EGLContext context" << shareContext->id()
<< " = eglCreateContext(nullptr, nullptr, context, nullptr);\n";
- out << " gContextMap[" << shareContext->id().value << "] = context"
- << shareContext->id() << ";\n";
+ out << " gContextMap[" << reinterpret_cast<uintptr_t>(shareContext)
+ << "ul] = context" << shareContext->id() << ";\n";
// The SetupReplayContextXX() calls only exist if this is a mid-execution capture
// and we can only call them if they exist, so only output the calls if this is a
// MEC.
@@ -8136,7 +8168,8 @@
bodyStream << " // Switching contexts for non-shared Reset\n"
<< " eglMakeCurrent("
<< "EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, "
- << "gContextMap[" << contextID.value << "]);\n\n";
+ << "gContextMap[" << reinterpret_cast<uintptr_t>(context)
+ << "ul]);\n\n";
}
// Then append the Reset calls
@@ -8716,10 +8749,8 @@
const CallCapture &call,
EGLDEBUGPROCKHR value)
{
- // The value isn't actually useful, but this fixes MSVC compile errors:
- // error: implicit conversion between pointer-to-function and pointer-to-object is a Microsoft
- // extension [-Werror,-Wmicrosoft-cast]
- os << reinterpret_cast<void *>(value);
+ // It's not necessary to implement correct capture for these types.
+ os << "0";
}
template <>
@@ -8727,10 +8758,8 @@
const CallCapture &call,
EGLGetBlobFuncANDROID value)
{
- // The value isn't actually useful, but this fixes MSVC compile errors:
- // error: implicit conversion between pointer-to-function and pointer-to-object is a Microsoft
- // extension [-Werror,-Wmicrosoft-cast]
- os << reinterpret_cast<void *>(value);
+ // It's not necessary to implement correct capture for these types.
+ os << "0";
}
template <>
@@ -8738,10 +8767,96 @@
const CallCapture &call,
EGLSetBlobFuncANDROID value)
{
- // The value isn't actually useful, but this fixes MSVC compile errors:
- // error: implicit conversion between pointer-to-function and pointer-to-object is a Microsoft
- // extension [-Werror,-Wmicrosoft-cast]
- os << reinterpret_cast<void *>(value);
+ // It's not necessary to implement correct capture for these types.
+ os << "0";
+}
+
+template <>
+void WriteParamValueReplay<ParamType::Tegl_ConfigPointer>(std::ostream &os,
+ const CallCapture &call,
+ egl::Config *value)
+{
+ os << "EGL_NO_CONFIG_KHR";
+}
+
+template <>
+void WriteParamValueReplay<ParamType::Tegl_SurfacePointer>(std::ostream &os,
+ const CallCapture &call,
+ egl::Surface *value)
+{
+ if (value == nullptr)
+ {
+ os << "EGL_NO_SURFACE";
+ }
+ else
+ {
+ os << "gSurfaceMap[" << reinterpret_cast<uintptr_t>(value) << "ul]";
+ }
+}
+
+template <>
+void WriteParamValueReplay<ParamType::Tgl_ContextPointer>(std::ostream &os,
+ const CallCapture &call,
+ gl::Context *value)
+{
+ if (value == nullptr)
+ {
+ os << "EGL_NO_CONTEXT";
+ }
+ else
+ {
+ os << "gContextMap[" << reinterpret_cast<uintptr_t>(value) << "ul]";
+ }
+}
+
+template <>
+void WriteParamValueReplay<ParamType::Tegl_DisplayPointer>(std::ostream &os,
+ const CallCapture &call,
+ egl::Display *value)
+{
+ os << "EGL_NO_DISPLAY";
+}
+
+template <>
+void WriteParamValueReplay<ParamType::Tegl_ImagePointer>(std::ostream &os,
+ const CallCapture &call,
+ egl::Image *value)
+{
+ uint64_t pointerValue = reinterpret_cast<uint64_t>(value);
+ os << "gEGLImageMap[" << pointerValue << "ul]";
+}
+
+template <>
+void WriteParamValueReplay<ParamType::TEGLClientBuffer>(std::ostream &os,
+ const CallCapture &call,
+ EGLClientBuffer value)
+{
+ const ParamCapture &targetParam = call.params.getParam("target", ParamType::TEGLenum, 2);
+ os << "GetClientBuffer(" << targetParam.value.EGLenumVal << ", " << value << ")";
+}
+
+template <>
+void WriteParamValueReplay<ParamType::Tegl_SyncPointer>(std::ostream &os,
+ const CallCapture &call,
+ egl::Sync *value)
+{
+ os << "EGL_NO_SYNC_KHR";
+}
+
+template <>
+void WriteParamValueReplay<ParamType::TEGLTime>(std::ostream &os,
+ const CallCapture &call,
+ EGLTime value)
+{
+ os << value << "ul";
+}
+
+template <>
+void WriteParamValueReplay<ParamType::TEGLTimeKHR>(std::ostream &os,
+ const CallCapture &call,
+ EGLTimeKHR value)
+{
+ os << value << "ul";
}
// ReplayWriter implementation.
@@ -9031,3 +9146,62 @@
return results;
}
} // namespace angle
+
+namespace egl
+{
+angle::ParamCapture CaptureAttributeMap(const egl::AttributeMap &attribMap)
+{
+ switch (attribMap.getType())
+ {
+ case AttributeMapType::Attrib:
+ {
+ angle::ParamCapture paramCapture("attrib_list", angle::ParamType::TEGLAttribPointer);
+ if (attribMap.isEmpty())
+ {
+ paramCapture.value.EGLAttribPointerVal = nullptr;
+ }
+ else
+ {
+ std::vector<EGLAttrib> attribs;
+ for (const auto &[key, value] : attribMap)
+ {
+ attribs.push_back(key);
+ attribs.push_back(value);
+ }
+ attribs.push_back(EGL_NONE);
+
+ angle::CaptureMemory(attribs.data(), attribs.size() * sizeof(EGLAttrib),
+ ¶mCapture);
+ }
+ return paramCapture;
+ }
+
+ case AttributeMapType::Int:
+ {
+ angle::ParamCapture paramCapture("attrib_list", angle::ParamType::TEGLintPointer);
+ if (attribMap.isEmpty())
+ {
+ paramCapture.value.EGLintPointerVal = nullptr;
+ }
+ else
+ {
+ std::vector<EGLint> attribs;
+ for (const auto &[key, value] : attribMap)
+ {
+ attribs.push_back(static_cast<EGLint>(key));
+ attribs.push_back(static_cast<EGLint>(value));
+ }
+ attribs.push_back(EGL_NONE);
+
+ angle::CaptureMemory(attribs.data(), attribs.size() * sizeof(EGLint),
+ ¶mCapture);
+ }
+ return paramCapture;
+ }
+
+ default:
+ UNREACHABLE();
+ return angle::ParamCapture();
+ }
+}
+} // namespace egl
diff --git a/src/libANGLE/capture/FrameCapture.h b/src/libANGLE/capture/FrameCapture.h
index 6c94ad6..7b2241a 100644
--- a/src/libANGLE/capture/FrameCapture.h
+++ b/src/libANGLE/capture/FrameCapture.h
@@ -13,6 +13,7 @@
#include "common/PackedEnums.h"
#include "common/system_utils.h"
#include "libANGLE/Context.h"
+#include "libANGLE/Thread.h"
#include "libANGLE/angletypes.h"
#include "libANGLE/capture/frame_capture_utils_autogen.h"
#include "libANGLE/entry_points_utils.h"
@@ -882,10 +883,10 @@
};
template <typename CaptureFuncT, typename... ArgsT>
-void CaptureCallToFrameCapture(CaptureFuncT captureFunc,
- bool isCallValid,
- gl::Context *context,
- ArgsT... captureParams)
+void CaptureGLCallToFrameCapture(CaptureFuncT captureFunc,
+ bool isCallValid,
+ gl::Context *context,
+ ArgsT... captureParams)
{
FrameCaptureShared *frameCaptureShared = context->getShareGroup()->getFrameCaptureShared();
if (!frameCaptureShared->isCapturing())
@@ -894,10 +895,32 @@
}
CallCapture call = captureFunc(context->getState(), isCallValid, captureParams...);
-
frameCaptureShared->captureCall(context, std::move(call), isCallValid);
}
+template <typename CaptureFuncT, typename... ArgsT>
+void CaptureEGLCallToFrameCapture(CaptureFuncT captureFunc,
+ bool isCallValid,
+ egl::Thread *thread,
+ ArgsT... captureParams)
+{
+ gl::Context *context = thread->getContext();
+ if (!context)
+ {
+ return;
+ }
+
+ angle::FrameCaptureShared *frameCaptureShared =
+ context->getShareGroup()->getFrameCaptureShared();
+ if (!frameCaptureShared->isCapturing())
+ {
+ return;
+ }
+
+ angle::CallCapture call = captureFunc(thread, isCallValid, captureParams...);
+ frameCaptureShared->captureCall(context, std::move(call), true);
+}
+
template <typename T>
void ParamBuffer::addValueParam(const char *paramName, ParamType paramType, T paramValue)
{
@@ -1149,6 +1172,11 @@
egl::Display *value);
template <>
+void WriteParamValueReplay<ParamType::Tegl_ImagePointer>(std::ostream &os,
+ const CallCapture &call,
+ egl::Image *value);
+
+template <>
void WriteParamValueReplay<ParamType::Tegl_SurfacePointer>(std::ostream &os,
const CallCapture &call,
egl::Surface *value);
@@ -1182,6 +1210,26 @@
const CallCapture &call,
egl::Surface *value);
+template <>
+void WriteParamValueReplay<ParamType::TEGLClientBuffer>(std::ostream &os,
+ const CallCapture &call,
+ EGLClientBuffer value);
+
+template <>
+void WriteParamValueReplay<ParamType::Tegl_SyncPointer>(std::ostream &os,
+ const CallCapture &call,
+ egl::Sync *value);
+
+template <>
+void WriteParamValueReplay<ParamType::TEGLTime>(std::ostream &os,
+ const CallCapture &call,
+ EGLTime value);
+
+template <>
+void WriteParamValueReplay<ParamType::TEGLTimeKHR>(std::ostream &os,
+ const CallCapture &call,
+ EGLTimeKHR value);
+
// General fallback for any unspecific type.
template <ParamType ParamT, typename T>
void WriteParamValueReplay(std::ostream &os, const CallCapture &call, T value)
@@ -1205,4 +1253,9 @@
}
}
+namespace egl
+{
+angle::ParamCapture CaptureAttributeMap(const egl::AttributeMap &attribMap);
+} // namespace egl
+
#endif // LIBANGLE_FRAME_CAPTURE_H_
diff --git a/src/libANGLE/capture/capture_egl.cpp b/src/libANGLE/capture/capture_egl.cpp
deleted file mode 100644
index 89314a9..0000000
--- a/src/libANGLE/capture/capture_egl.cpp
+++ /dev/null
@@ -1,246 +0,0 @@
-//
-// Copyright 2022 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// capture_egl.h:
-// EGL capture functions
-//
-
-#include "libANGLE/capture/capture_egl.h"
-#include "libANGLE/Surface.h"
-#include "libANGLE/capture/FrameCapture.h"
-#include "libANGLE/capture/frame_capture_utils.h"
-#include "libANGLE/capture/gl_enum_utils_autogen.h"
-
-#define USE_SYSTEM_ZLIB
-#include "compression_utils_portable.h"
-
-#if !ANGLE_CAPTURE_ENABLED
-# error Frame capture must be enabled to include this file.
-#endif // !ANGLE_CAPTURE_ENABLED
-
-namespace angle
-{
-template <>
-void WriteParamValueReplay<ParamType::Tgl_ContextPointer>(std::ostream &os,
- const CallCapture &call,
- gl::Context *context)
-{
- if (context == nullptr)
- {
- os << "EGL_NO_CONTEXT";
- }
- else
- {
- os << "gContextMap[" << context->id().value << "]";
- }
-}
-
-template <>
-void WriteParamValueReplay<ParamType::Tegl_DisplayPointer>(std::ostream &os,
- const CallCapture &call,
- egl::Display *display)
-{
- os << "EGL_NO_DISPLAY";
-}
-
-template <>
-void WriteParamValueReplay<ParamType::Tegl_ConfigPointer>(std::ostream &os,
- const CallCapture &call,
- egl::Config *config)
-{
- os << "EGL_NO_CONFIG_KHR";
-}
-
-template <>
-void WriteParamValueReplay<ParamType::Tegl_SurfacePointer>(std::ostream &os,
- const CallCapture &call,
- egl::Surface *surface)
-{
- if (surface == nullptr)
- {
- os << "EGL_NO_SURFACE";
- }
- else
- {
- os << "gSurfaceMap[" << reinterpret_cast<uintptr_t>(surface) << "]";
- }
-}
-
-template <>
-void WriteParamValueReplay<ParamType::TEGLClientBuffer>(std::ostream &os,
- const CallCapture &call,
- EGLClientBuffer value)
-{
- const auto &targetParam = call.params.getParam("target", ParamType::TEGLenum, 2);
- os << "GetClientBuffer(" << targetParam.value.EGLenumVal << ", " << value << ")";
-}
-
-} // namespace angle
-
-namespace egl
-{
-
-static angle::ParamCapture CaptureAttributeMap(const egl::AttributeMap &attribMap)
-{
- std::vector<EGLAttrib> attribs;
- for (const auto &[key, value] : attribMap)
- {
- attribs.push_back(key);
- attribs.push_back(value);
- }
- attribs.push_back(EGL_NONE);
-
- angle::ParamCapture paramCapture("attrib_list", angle::ParamType::TGLint64Pointer);
- angle::CaptureMemory(attribs.data(), attribs.size() * sizeof(EGLAttrib), ¶mCapture);
- return paramCapture;
-}
-
-static angle::ParamCapture CaptureAttributeMapInt(const egl::AttributeMap &attribMap)
-{
- std::vector<EGLint> attribs;
- for (const auto &[key, value] : attribMap)
- {
- attribs.push_back(static_cast<EGLint>(key));
- attribs.push_back(static_cast<EGLint>(value));
- }
- attribs.push_back(EGL_NONE);
-
- angle::ParamCapture paramCapture("attrib_list", angle::ParamType::TGLintPointer);
- angle::CaptureMemory(attribs.data(), attribs.size() * sizeof(EGLint), ¶mCapture);
- return paramCapture;
-}
-
-angle::CallCapture CaptureCreateNativeClientBufferANDROID(const egl::AttributeMap &attribMap,
- EGLClientBuffer eglClientBuffer)
-{
- angle::ParamBuffer paramBuffer;
- paramBuffer.addParam(CaptureAttributeMap(attribMap));
-
- angle::ParamCapture retval;
- angle::SetParamVal<angle::ParamType::TEGLClientBuffer, EGLClientBuffer>(eglClientBuffer,
- &retval.value);
- paramBuffer.addReturnValue(std::move(retval));
-
- return angle::CallCapture(angle::EntryPoint::EGLCreateNativeClientBufferANDROID,
- std::move(paramBuffer));
-}
-
-angle::CallCapture CaptureEGLCreateImage(egl::Display *display,
- gl::Context *context,
- EGLenum target,
- EGLClientBuffer buffer,
- const egl::AttributeMap &attributes,
- egl::Image *image)
-{
- angle::ParamBuffer paramBuffer;
-
- // The EGL display will be queried directly in the emitted code
- // so this is actually just a place holder
- paramBuffer.addValueParam("display", angle::ParamType::Tegl_DisplayPointer, display);
-
- // In CaptureMidExecutionSetup and FrameCaptureShared::captureCall
- // we capture the actual context ID (via CaptureMakeCurrent),
- // so we have to do the same here.
- paramBuffer.addValueParam("context", angle::ParamType::Tgl_ContextPointer, context);
-
- paramBuffer.addEnumParam("target", gl::GLESEnum::AllEnums, angle::ParamType::TEGLenum, target);
-
- angle::ParamCapture paramsClientBuffer("buffer", angle::ParamType::TEGLClientBuffer);
- uint64_t bufferID = reinterpret_cast<uintptr_t>(buffer);
- angle::SetParamVal<angle::ParamType::TGLuint64>(bufferID, ¶msClientBuffer.value);
- paramBuffer.addParam(std::move(paramsClientBuffer));
-
- angle::ParamCapture paramsAttr = CaptureAttributeMap(attributes);
- paramBuffer.addParam(std::move(paramsAttr));
-
- angle::ParamCapture retval;
- angle::SetParamVal<angle::ParamType::TGLeglImageOES, GLeglImageOES>(image, &retval.value);
- paramBuffer.addReturnValue(std::move(retval));
-
- return angle::CallCapture(angle::EntryPoint::EGLCreateImage, std::move(paramBuffer));
-}
-
-angle::CallCapture CaptureEGLDestroyImage(egl::Display *display, egl::Image *image)
-{
- angle::ParamBuffer paramBuffer;
- paramBuffer.addValueParam("display", angle::ParamType::Tegl_DisplayPointer, display);
-
- angle::ParamCapture paramImage("image", angle::ParamType::TGLeglImageOES);
- angle::SetParamVal<angle::ParamType::TGLeglImageOES, GLeglImageOES>(image, ¶mImage.value);
- paramBuffer.addParam(std::move(paramImage));
-
- return angle::CallCapture(angle::EntryPoint::EGLDestroyImage, std::move(paramBuffer));
-}
-
-angle::CallCapture CaptureEGLCreatePbufferSurface(egl::Display *display,
- egl::Config *config,
- const AttributeMap &attrib_list,
- egl::Surface *surface)
-{
- angle::ParamBuffer paramBuffer;
- paramBuffer.addValueParam("display", angle::ParamType::Tegl_DisplayPointer, display);
- paramBuffer.addValueParam("config", angle::ParamType::Tegl_ConfigPointer, config);
-
- angle::ParamCapture paramsAttr = CaptureAttributeMapInt(attrib_list);
- paramBuffer.addParam(std::move(paramsAttr));
-
- angle::ParamCapture retval;
- angle::SetParamVal<angle::ParamType::Tegl_SurfacePointer>(surface, &retval.value);
- paramBuffer.addReturnValue(std::move(retval));
-
- return angle::CallCapture(angle::EntryPoint::EGLCreatePbufferSurface, std::move(paramBuffer));
-}
-angle::CallCapture CaptureEGLDestroySurface(egl::Display *display, egl::Surface *surface)
-{
- angle::ParamBuffer paramBuffer;
- paramBuffer.addValueParam("display", angle::ParamType::Tegl_DisplayPointer, display);
- paramBuffer.addValueParam("surface", angle::ParamType::Tegl_SurfacePointer, surface);
-
- return angle::CallCapture(angle::EntryPoint::EGLDestroySurface, std::move(paramBuffer));
-}
-
-static angle::CallCapture CaptureEGLBindOrReleaseImage(egl::Display *display,
- egl::Surface *surface,
- EGLint buffer,
- angle::EntryPoint entryPoint)
-{
- angle::ParamBuffer paramBuffer;
- paramBuffer.addValueParam("display", angle::ParamType::Tegl_DisplayPointer, display);
- paramBuffer.addValueParam("surface", angle::ParamType::Tegl_SurfacePointer, surface);
- paramBuffer.addValueParam("buffer", angle::ParamType::TEGLint, buffer);
- return angle::CallCapture(entryPoint, std::move(paramBuffer));
-}
-
-angle::CallCapture CaptureEGLBindTexImage(egl::Display *display,
- egl::Surface *surface,
- EGLint buffer)
-{
- return CaptureEGLBindOrReleaseImage(display, surface, buffer,
- angle::EntryPoint::EGLBindTexImage);
-}
-
-angle::CallCapture CaptureEGLReleaseTexImage(egl::Display *display,
- egl::Surface *surface,
- EGLint buffer)
-{
- return CaptureEGLBindOrReleaseImage(display, surface, buffer,
- angle::EntryPoint::EGLReleaseTexImage);
-}
-
-angle::CallCapture CaptureEGLMakeCurrent(egl::Display *display,
- Surface *drawSurface,
- Surface *readSurface,
- gl::Context *context)
-{
- angle::ParamBuffer paramBuffer;
- paramBuffer.addValueParam("display", angle::ParamType::Tegl_DisplayPointer, display);
- paramBuffer.addValueParam("draw", angle::ParamType::Tegl_SurfacePointer, drawSurface);
- paramBuffer.addValueParam("read", angle::ParamType::Tegl_SurfacePointer, readSurface);
- paramBuffer.addValueParam("context", angle::ParamType::Tgl_ContextPointer, context);
-
- return angle::CallCapture(angle::EntryPoint::EGLMakeCurrent, std::move(paramBuffer));
-}
-
-} // namespace egl
diff --git a/src/libANGLE/capture/capture_egl.h b/src/libANGLE/capture/capture_egl.h
deleted file mode 100644
index 13f25a0..0000000
--- a/src/libANGLE/capture/capture_egl.h
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// Copyright 2022 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// capture_egl.h:
-// EGL capture functions
-//
-
-#ifndef LIBANGLE_CAPTURE_EGL_H_
-#define LIBANGLE_CAPTURE_EGL_H_
-
-#include "libANGLE/Context.h"
-#include "libANGLE/Thread.h"
-#include "libANGLE/capture/FrameCapture.h"
-
-namespace gl
-{
-enum class GLenumGroup;
-}
-
-namespace egl
-{
-
-template <typename CaptureFuncT, typename... ArgsT>
-void CaptureCallToCaptureEGL(CaptureFuncT captureFunc, egl::Thread *thread, ArgsT... captureParams)
-{
- gl::Context *context = thread->getContext();
- if (!context)
- {
- return;
- }
-
- angle::FrameCaptureShared *frameCaptureShared =
- context->getShareGroup()->getFrameCaptureShared();
- if (!frameCaptureShared->isCapturing())
- {
- return;
- }
-
- angle::CallCapture call = captureFunc(captureParams...);
-
- frameCaptureShared->captureCall(context, std::move(call), true);
-}
-
-angle::CallCapture CaptureCreateNativeClientBufferANDROID(const egl::AttributeMap &attribMap,
- EGLClientBuffer eglClientBuffer);
-angle::CallCapture CaptureEGLCreateImage(egl::Display *display,
- gl::Context *context,
- EGLenum target,
- EGLClientBuffer buffer,
- const egl::AttributeMap &attributes,
- egl::Image *image);
-angle::CallCapture CaptureEGLDestroyImage(egl::Display *display, egl::Image *image);
-
-angle::CallCapture CaptureEGLCreatePbufferSurface(egl::Display *display,
- egl::Config *config,
- const AttributeMap &attrib_list,
- egl::Surface *surface);
-
-angle::CallCapture CaptureEGLDestroySurface(egl::Display *display, Surface *surface);
-
-angle::CallCapture CaptureEGLBindTexImage(egl::Display *display,
- egl::Surface *surface,
- EGLint buffer);
-
-angle::CallCapture CaptureEGLReleaseTexImage(egl::Display *display,
- egl::Surface *surface,
- EGLint buffer);
-
-angle::CallCapture CaptureEGLMakeCurrent(egl::Display *display,
- Surface *drawSurface,
- Surface *readSurface,
- gl::Context *context);
-} // namespace egl
-
-#endif // LIBANGLE_FRAME_CAPTURE_H_
diff --git a/src/libANGLE/capture/capture_egl_autogen.cpp b/src/libANGLE/capture/capture_egl_autogen.cpp
new file mode 100644
index 0000000..9e22254
--- /dev/null
+++ b/src/libANGLE/capture/capture_egl_autogen.cpp
@@ -0,0 +1,2131 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by generate_entry_points.py using data from egl.xml and egl_angle_ext.xml.
+//
+// Copyright 2020 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// capture_egl_autogen.cpp:
+// Capture functions for the OpenGL ES all entry points.
+
+#include "libANGLE/capture/capture_egl_autogen.h"
+
+#include "libANGLE/Context.h"
+#include "libANGLE/capture/FrameCapture.h"
+#include "libANGLE/capture/gl_enum_utils.h"
+#include "libANGLE/validationEGL.h"
+
+using namespace angle;
+
+namespace egl
+{
+CallCapture CaptureChooseConfig(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLConfig *configs,
+ EGLint config_size,
+ EGLint *num_config,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+ paramBuffer.addValueParam("configs", ParamType::TEGLConfigPointer, configs);
+ paramBuffer.addValueParam("config_size", ParamType::TEGLint, config_size);
+ paramBuffer.addValueParam("num_config", ParamType::TEGLintPointer, num_config);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLChooseConfig, std::move(paramBuffer));
+}
+
+CallCapture CaptureCopyBuffers(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLNativePixmapType target,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("target", ParamType::TEGLNativePixmapType, target);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCopyBuffers, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateContext(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ gl::Context *share_contextPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLContext returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addValueParam("share_contextPacked", ParamType::Tgl_ContextPointer,
+ share_contextPacked);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLContext);
+ InitParamValue(ParamType::TEGLContext, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateContext, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreatePbufferSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreatePbufferSurface, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreatePixmapSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ EGLNativePixmapType pixmap,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addValueParam("pixmap", ParamType::TEGLNativePixmapType, pixmap);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreatePixmapSurface, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateWindowSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ EGLNativeWindowType win,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addValueParam("win", ParamType::TEGLNativeWindowType, win);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateWindowSurface, std::move(paramBuffer));
+}
+
+CallCapture CaptureDestroyContext(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("ctxPacked", ParamType::Tgl_ContextPointer, ctxPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDestroyContext, std::move(paramBuffer));
+}
+
+CallCapture CaptureDestroySurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDestroySurface, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetConfigAttrib(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ EGLint attribute,
+ EGLint *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLintPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetConfigAttrib, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetConfigs(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLConfig *configs,
+ EGLint config_size,
+ EGLint *num_config,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configs", ParamType::TEGLConfigPointer, configs);
+ paramBuffer.addValueParam("config_size", ParamType::TEGLint, config_size);
+ paramBuffer.addValueParam("num_config", ParamType::TEGLintPointer, num_config);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetConfigs, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetCurrentDisplay(egl::Thread *thread, bool isCallValid, EGLDisplay returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLDisplay);
+ InitParamValue(ParamType::TEGLDisplay, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetCurrentDisplay, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetCurrentSurface(egl::Thread *thread,
+ bool isCallValid,
+ EGLint readdraw,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("readdraw", ParamType::TEGLint, readdraw);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetCurrentSurface, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetDisplay(egl::Thread *thread,
+ bool isCallValid,
+ EGLNativeDisplayType display_id,
+ EGLDisplay returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("display_id", ParamType::TEGLNativeDisplayType, display_id);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLDisplay);
+ InitParamValue(ParamType::TEGLDisplay, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetDisplay, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetError(egl::Thread *thread, bool isCallValid, EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetError, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetProcAddress(egl::Thread *thread,
+ bool isCallValid,
+ const char *procname,
+ __eglMustCastToProperFunctionPointerType returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ return CallCapture(angle::EntryPoint::EGLGetProcAddress, std::move(paramBuffer));
+}
+
+CallCapture CaptureInitialize(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint *major,
+ EGLint *minor,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("major", ParamType::TEGLintPointer, major);
+ paramBuffer.addValueParam("minor", ParamType::TEGLintPointer, minor);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLInitialize, std::move(paramBuffer));
+}
+
+CallCapture CaptureMakeCurrent(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *drawPacked,
+ egl::Surface *readPacked,
+ gl::Context *ctxPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("drawPacked", ParamType::Tegl_SurfacePointer, drawPacked);
+ paramBuffer.addValueParam("readPacked", ParamType::Tegl_SurfacePointer, readPacked);
+ paramBuffer.addValueParam("ctxPacked", ParamType::Tgl_ContextPointer, ctxPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLMakeCurrent, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryContext(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked,
+ EGLint attribute,
+ EGLint *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("ctxPacked", ParamType::Tgl_ContextPointer, ctxPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLintPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryContext, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryString(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint name,
+ const char *returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("name", ParamType::TEGLint, name);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TcharConstPointer);
+ InitParamValue(ParamType::TcharConstPointer, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryString, std::move(paramBuffer));
+}
+
+CallCapture CaptureQuerySurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint attribute,
+ EGLint *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLintPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQuerySurface, std::move(paramBuffer));
+}
+
+CallCapture CaptureSwapBuffers(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLSwapBuffers, std::move(paramBuffer));
+}
+
+CallCapture CaptureTerminate(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLTerminate, std::move(paramBuffer));
+}
+
+CallCapture CaptureWaitGL(egl::Thread *thread, bool isCallValid, EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLWaitGL, std::move(paramBuffer));
+}
+
+CallCapture CaptureWaitNative(egl::Thread *thread,
+ bool isCallValid,
+ EGLint engine,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("engine", ParamType::TEGLint, engine);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLWaitNative, std::move(paramBuffer));
+}
+
+CallCapture CaptureBindTexImage(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint buffer,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("buffer", ParamType::TEGLint, buffer);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLBindTexImage, std::move(paramBuffer));
+}
+
+CallCapture CaptureReleaseTexImage(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint buffer,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("buffer", ParamType::TEGLint, buffer);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLReleaseTexImage, std::move(paramBuffer));
+}
+
+CallCapture CaptureSurfaceAttrib(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint attribute,
+ EGLint value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLint, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLSurfaceAttrib, std::move(paramBuffer));
+}
+
+CallCapture CaptureSwapInterval(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint interval,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("interval", ParamType::TEGLint, interval);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLSwapInterval, std::move(paramBuffer));
+}
+
+CallCapture CaptureBindAPI(egl::Thread *thread,
+ bool isCallValid,
+ EGLenum api,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("api", ParamType::TEGLenum, api);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLBindAPI, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreatePbufferFromClientBuffer(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLenum buftype,
+ EGLClientBuffer buffer,
+ egl::Config *configPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("buftype", ParamType::TEGLenum, buftype);
+ paramBuffer.addValueParam("buffer", ParamType::TEGLClientBuffer, buffer);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreatePbufferFromClientBuffer, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryAPI(egl::Thread *thread, bool isCallValid, EGLenum returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLenum);
+ InitParamValue(ParamType::TEGLenum, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryAPI, std::move(paramBuffer));
+}
+
+CallCapture CaptureReleaseThread(egl::Thread *thread, bool isCallValid, EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLReleaseThread, std::move(paramBuffer));
+}
+
+CallCapture CaptureWaitClient(egl::Thread *thread, bool isCallValid, EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLWaitClient, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetCurrentContext(egl::Thread *thread, bool isCallValid, EGLContext returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLContext);
+ InitParamValue(ParamType::TEGLContext, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetCurrentContext, std::move(paramBuffer));
+}
+
+CallCapture CaptureClientWaitSync(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint flags,
+ EGLTime timeout,
+ EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+ paramBuffer.addValueParam("flags", ParamType::TEGLint, flags);
+ paramBuffer.addValueParam("timeout", ParamType::TEGLTime, timeout);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLClientWaitSync, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateImage(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const AttributeMap &attrib_listPacked,
+ EGLImage returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("ctxPacked", ParamType::Tgl_ContextPointer, ctxPacked);
+ paramBuffer.addValueParam("target", ParamType::TEGLenum, target);
+ paramBuffer.addValueParam("buffer", ParamType::TEGLClientBuffer, buffer);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLImage);
+ InitParamValue(ParamType::TEGLImage, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateImage, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreatePlatformPixmapSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ void *native_pixmap,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addValueParam("native_pixmap", ParamType::TvoidPointer, native_pixmap);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreatePlatformPixmapSurface, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreatePlatformWindowSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ void *native_window,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addValueParam("native_window", ParamType::TvoidPointer, native_window);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreatePlatformWindowSurface, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateSync(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLenum type,
+ const AttributeMap &attrib_listPacked,
+ EGLSync returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("type", ParamType::TEGLenum, type);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSync);
+ InitParamValue(ParamType::TEGLSync, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateSync, std::move(paramBuffer));
+}
+
+CallCapture CaptureDestroyImage(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Image *imagePacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("imagePacked", ParamType::Tegl_ImagePointer, imagePacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDestroyImage, std::move(paramBuffer));
+}
+
+CallCapture CaptureDestroySync(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDestroySync, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetPlatformDisplay(egl::Thread *thread,
+ bool isCallValid,
+ EGLenum platform,
+ void *native_display,
+ const AttributeMap &attrib_listPacked,
+ EGLDisplay returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("platform", ParamType::TEGLenum, platform);
+ paramBuffer.addValueParam("native_display", ParamType::TvoidPointer, native_display);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLDisplay);
+ InitParamValue(ParamType::TEGLDisplay, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetPlatformDisplay, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetSyncAttrib(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLAttribPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetSyncAttrib, std::move(paramBuffer));
+}
+
+CallCapture CaptureWaitSync(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint flags,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+ paramBuffer.addValueParam("flags", ParamType::TEGLint, flags);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLWaitSync, std::move(paramBuffer));
+}
+
+CallCapture CaptureSetBlobCacheFuncsANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLSetBlobFuncANDROID set,
+ EGLGetBlobFuncANDROID get)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("set", ParamType::TEGLSetBlobFuncANDROID, set);
+ paramBuffer.addValueParam("get", ParamType::TEGLGetBlobFuncANDROID, get);
+
+ return CallCapture(angle::EntryPoint::EGLSetBlobCacheFuncsANDROID, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateNativeClientBufferANDROID(egl::Thread *thread,
+ bool isCallValid,
+ const AttributeMap &attrib_listPacked,
+ EGLClientBuffer returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLClientBuffer);
+ InitParamValue(ParamType::TEGLClientBuffer, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateNativeClientBufferANDROID,
+ std::move(paramBuffer));
+}
+
+CallCapture CaptureGetCompositorTimingSupportedANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ CompositorTiming namePacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("namePacked", ParamType::TCompositorTiming, namePacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetCompositorTimingSupportedANDROID,
+ std::move(paramBuffer));
+}
+
+CallCapture CaptureGetCompositorTimingANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint numTimestamps,
+ const EGLint *names,
+ EGLnsecsANDROID *values,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("numTimestamps", ParamType::TEGLint, numTimestamps);
+ paramBuffer.addValueParam("names", ParamType::TEGLintConstPointer, names);
+ paramBuffer.addValueParam("values", ParamType::TEGLnsecsANDROIDPointer, values);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetCompositorTimingANDROID, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetNextFrameIdANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLuint64KHR *frameId,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("frameId", ParamType::TEGLuint64KHRPointer, frameId);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetNextFrameIdANDROID, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetFrameTimestampSupportedANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ Timestamp timestampPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("timestampPacked", ParamType::TTimestamp, timestampPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetFrameTimestampSupportedANDROID,
+ std::move(paramBuffer));
+}
+
+CallCapture CaptureGetFrameTimestampsANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLuint64KHR frameId,
+ EGLint numTimestamps,
+ const EGLint *timestamps,
+ EGLnsecsANDROID *values,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("frameId", ParamType::TEGLuint64KHR, frameId);
+ paramBuffer.addValueParam("numTimestamps", ParamType::TEGLint, numTimestamps);
+ paramBuffer.addValueParam("timestamps", ParamType::TEGLintConstPointer, timestamps);
+ paramBuffer.addValueParam("values", ParamType::TEGLnsecsANDROIDPointer, values);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetFrameTimestampsANDROID, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetNativeClientBufferANDROID(egl::Thread *thread,
+ bool isCallValid,
+ const struct AHardwareBuffer *buffer,
+ EGLClientBuffer returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("buffer", ParamType::TAHardwareBufferConstPointer, buffer);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLClientBuffer);
+ InitParamValue(ParamType::TEGLClientBuffer, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetNativeClientBufferANDROID, std::move(paramBuffer));
+}
+
+CallCapture CaptureDupNativeFenceFDANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDupNativeFenceFDANDROID, std::move(paramBuffer));
+}
+
+CallCapture CapturePresentationTimeANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLnsecsANDROID time,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("time", ParamType::TEGLnsecsANDROID, time);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLPresentationTimeANDROID, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateDeviceANGLE(egl::Thread *thread,
+ bool isCallValid,
+ EGLint device_type,
+ void *native_device,
+ const EGLAttrib *attrib_list,
+ EGLDeviceEXT returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("device_type", ParamType::TEGLint, device_type);
+ paramBuffer.addValueParam("native_device", ParamType::TvoidPointer, native_device);
+ paramBuffer.addValueParam("attrib_list", ParamType::TEGLAttribConstPointer, attrib_list);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLDeviceEXT);
+ InitParamValue(ParamType::TEGLDeviceEXT, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateDeviceANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureReleaseDeviceANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Device *devicePacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("devicePacked", ParamType::Tegl_DevicePointer, devicePacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLReleaseDeviceANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryStringiANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint name,
+ EGLint index,
+ const char *returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("name", ParamType::TEGLint, name);
+ paramBuffer.addValueParam("index", ParamType::TEGLint, index);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TcharConstPointer);
+ InitParamValue(ParamType::TcharConstPointer, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryStringiANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryDisplayAttribANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLAttribPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryDisplayAttribANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureCopyMetalSharedEventANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ void *returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TvoidPointer);
+ InitParamValue(ParamType::TvoidPointer, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCopyMetalSharedEventANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureReleaseHighPowerGPUANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("ctxPacked", ParamType::Tgl_ContextPointer, ctxPacked);
+
+ return CallCapture(angle::EntryPoint::EGLReleaseHighPowerGPUANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureReacquireHighPowerGPUANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("ctxPacked", ParamType::Tgl_ContextPointer, ctxPacked);
+
+ return CallCapture(angle::EntryPoint::EGLReacquireHighPowerGPUANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureHandleGPUSwitchANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+
+ return CallCapture(angle::EntryPoint::EGLHandleGPUSwitchANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureForceGPUSwitchANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint gpuIDHigh,
+ EGLint gpuIDLow)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("gpuIDHigh", ParamType::TEGLint, gpuIDHigh);
+ paramBuffer.addValueParam("gpuIDLow", ParamType::TEGLint, gpuIDLow);
+
+ return CallCapture(angle::EntryPoint::EGLForceGPUSwitchANGLE, std::move(paramBuffer));
+}
+
+CallCapture CapturePrepareSwapBuffersANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLPrepareSwapBuffersANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureProgramCacheGetAttribANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLenum attrib,
+ EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("attrib", ParamType::TEGLenum, attrib);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLProgramCacheGetAttribANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureProgramCacheQueryANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint index,
+ void *key,
+ EGLint *keysize,
+ void *binary,
+ EGLint *binarysize)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("index", ParamType::TEGLint, index);
+ paramBuffer.addValueParam("key", ParamType::TvoidPointer, key);
+ paramBuffer.addValueParam("keysize", ParamType::TEGLintPointer, keysize);
+ paramBuffer.addValueParam("binary", ParamType::TvoidPointer, binary);
+ paramBuffer.addValueParam("binarysize", ParamType::TEGLintPointer, binarysize);
+
+ return CallCapture(angle::EntryPoint::EGLProgramCacheQueryANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureProgramCachePopulateANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ const void *key,
+ EGLint keysize,
+ const void *binary,
+ EGLint binarysize)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("key", ParamType::TvoidConstPointer, key);
+ paramBuffer.addValueParam("keysize", ParamType::TEGLint, keysize);
+ paramBuffer.addValueParam("binary", ParamType::TvoidConstPointer, binary);
+ paramBuffer.addValueParam("binarysize", ParamType::TEGLint, binarysize);
+
+ return CallCapture(angle::EntryPoint::EGLProgramCachePopulateANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureProgramCacheResizeANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint limit,
+ EGLint mode,
+ EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("limit", ParamType::TEGLint, limit);
+ paramBuffer.addValueParam("mode", ParamType::TEGLint, mode);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLProgramCacheResizeANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureQuerySurfacePointerANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint attribute,
+ void **value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TvoidPointerPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQuerySurfacePointerANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateStreamProducerD3DTextureANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateStreamProducerD3DTextureANGLE,
+ std::move(paramBuffer));
+}
+
+CallCapture CaptureStreamPostD3DTextureANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ void *texture,
+ const AttributeMap &attrib_listPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+ paramBuffer.addValueParam("texture", ParamType::TvoidPointer, texture);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLStreamPostD3DTextureANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureSwapBuffersWithFrameTokenANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLFrameTokenANGLE frametoken,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("frametoken", ParamType::TEGLFrameTokenANGLE, frametoken);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLSwapBuffersWithFrameTokenANGLE,
+ std::move(paramBuffer));
+}
+
+CallCapture CaptureGetMscRateANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint *numerator,
+ EGLint *denominator,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("numerator", ParamType::TEGLintPointer, numerator);
+ paramBuffer.addValueParam("denominator", ParamType::TEGLintPointer, denominator);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetMscRateANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureExportVkImageANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Image *imagePacked,
+ void *vk_image,
+ void *vk_image_create_info,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("imagePacked", ParamType::Tegl_ImagePointer, imagePacked);
+ paramBuffer.addValueParam("vk_image", ParamType::TvoidPointer, vk_image);
+ paramBuffer.addValueParam("vk_image_create_info", ParamType::TvoidPointer,
+ vk_image_create_info);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLExportVkImageANGLE, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetSyncValuesCHROMIUM(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLuint64KHR *ust,
+ EGLuint64KHR *msc,
+ EGLuint64KHR *sbc,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("ust", ParamType::TEGLuint64KHRPointer, ust);
+ paramBuffer.addValueParam("msc", ParamType::TEGLuint64KHRPointer, msc);
+ paramBuffer.addValueParam("sbc", ParamType::TEGLuint64KHRPointer, sbc);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetSyncValuesCHROMIUM, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryDeviceAttribEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Device *devicePacked,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("devicePacked", ParamType::Tegl_DevicePointer, devicePacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLAttribPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryDeviceAttribEXT, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryDeviceStringEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Device *devicePacked,
+ EGLint name,
+ const char *returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("devicePacked", ParamType::Tegl_DevicePointer, devicePacked);
+ paramBuffer.addValueParam("name", ParamType::TEGLint, name);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TcharConstPointer);
+ InitParamValue(ParamType::TcharConstPointer, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryDeviceStringEXT, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryDisplayAttribEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLAttribPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryDisplayAttribEXT, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryDmaBufFormatsEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint max_formats,
+ EGLint *formats,
+ EGLint *num_formats,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("max_formats", ParamType::TEGLint, max_formats);
+ paramBuffer.addValueParam("formats", ParamType::TEGLintPointer, formats);
+ paramBuffer.addValueParam("num_formats", ParamType::TEGLintPointer, num_formats);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryDmaBufFormatsEXT, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryDmaBufModifiersEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint format,
+ EGLint max_modifiers,
+ EGLuint64KHR *modifiers,
+ EGLBoolean *external_only,
+ EGLint *num_modifiers,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("format", ParamType::TEGLint, format);
+ paramBuffer.addValueParam("max_modifiers", ParamType::TEGLint, max_modifiers);
+ paramBuffer.addValueParam("modifiers", ParamType::TEGLuint64KHRPointer, modifiers);
+ paramBuffer.addValueParam("external_only", ParamType::TEGLBooleanPointer, external_only);
+ paramBuffer.addValueParam("num_modifiers", ParamType::TEGLintPointer, num_modifiers);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryDmaBufModifiersEXT, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreatePlatformPixmapSurfaceEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ void *native_pixmap,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addValueParam("native_pixmap", ParamType::TvoidPointer, native_pixmap);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreatePlatformPixmapSurfaceEXT,
+ std::move(paramBuffer));
+}
+
+CallCapture CaptureCreatePlatformWindowSurfaceEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ void *native_window,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("configPacked", ParamType::Tegl_ConfigPointer, configPacked);
+ paramBuffer.addValueParam("native_window", ParamType::TvoidPointer, native_window);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSurface);
+ InitParamValue(ParamType::TEGLSurface, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreatePlatformWindowSurfaceEXT,
+ std::move(paramBuffer));
+}
+
+CallCapture CaptureGetPlatformDisplayEXT(egl::Thread *thread,
+ bool isCallValid,
+ EGLenum platform,
+ void *native_display,
+ const AttributeMap &attrib_listPacked,
+ EGLDisplay returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("platform", ParamType::TEGLenum, platform);
+ paramBuffer.addValueParam("native_display", ParamType::TvoidPointer, native_display);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLDisplay);
+ InitParamValue(ParamType::TEGLDisplay, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetPlatformDisplayEXT, std::move(paramBuffer));
+}
+
+CallCapture CaptureDebugMessageControlKHR(egl::Thread *thread,
+ bool isCallValid,
+ EGLDEBUGPROCKHR callback,
+ const AttributeMap &attrib_listPacked,
+ EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("callback", ParamType::TEGLDEBUGPROCKHR, callback);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDebugMessageControlKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureLabelObjectKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *displayPacked,
+ ObjectType objectTypePacked,
+ EGLObjectKHR object,
+ EGLLabelKHR label,
+ EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("displayPacked", ParamType::Tegl_DisplayPointer, displayPacked);
+ paramBuffer.addValueParam("objectTypePacked", ParamType::TObjectType, objectTypePacked);
+ paramBuffer.addValueParam("object", ParamType::TEGLObjectKHR, object);
+ paramBuffer.addValueParam("label", ParamType::TEGLLabelKHR, label);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLLabelObjectKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryDebugKHR(egl::Thread *thread,
+ bool isCallValid,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLAttribPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryDebugKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureClientWaitSyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint flags,
+ EGLTimeKHR timeout,
+ EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+ paramBuffer.addValueParam("flags", ParamType::TEGLint, flags);
+ paramBuffer.addValueParam("timeout", ParamType::TEGLTimeKHR, timeout);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLClientWaitSyncKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateSyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLenum type,
+ const AttributeMap &attrib_listPacked,
+ EGLSyncKHR returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("type", ParamType::TEGLenum, type);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLSyncKHR);
+ InitParamValue(ParamType::TEGLSyncKHR, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateSyncKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureDestroySyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDestroySyncKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureGetSyncAttribKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint attribute,
+ EGLint *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLintPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLGetSyncAttribKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateImageKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const AttributeMap &attrib_listPacked,
+ EGLImageKHR returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("ctxPacked", ParamType::Tgl_ContextPointer, ctxPacked);
+ paramBuffer.addValueParam("target", ParamType::TEGLenum, target);
+ paramBuffer.addValueParam("buffer", ParamType::TEGLClientBuffer, buffer);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLImageKHR);
+ InitParamValue(ParamType::TEGLImageKHR, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateImageKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureDestroyImageKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Image *imagePacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("imagePacked", ParamType::Tegl_ImagePointer, imagePacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDestroyImageKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureLockSurfaceKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ const AttributeMap &attrib_listPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLLockSurfaceKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureQuerySurface64KHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint attribute,
+ EGLAttribKHR *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLint, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLAttribKHRPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQuerySurface64KHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureUnlockSurfaceKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLUnlockSurfaceKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureSetDamageRegionKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint *rects,
+ EGLint n_rects,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("rects", ParamType::TEGLintPointer, rects);
+ paramBuffer.addValueParam("n_rects", ParamType::TEGLint, n_rects);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLSetDamageRegionKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureSignalSyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLenum mode,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+ paramBuffer.addValueParam("mode", ParamType::TEGLenum, mode);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLSignalSyncKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureCreateStreamKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLStreamKHR returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLStreamKHR);
+ InitParamValue(ParamType::TEGLStreamKHR, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLCreateStreamKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureDestroyStreamKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLDestroyStreamKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryStreamKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLenum attribute,
+ EGLint *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLenum, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLintPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryStreamKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureQueryStreamu64KHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLenum attribute,
+ EGLuint64KHR *value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLenum, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLuint64KHRPointer, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLQueryStreamu64KHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureStreamAttribKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLenum attribute,
+ EGLint value,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+ paramBuffer.addValueParam("attribute", ParamType::TEGLenum, attribute);
+ paramBuffer.addValueParam("value", ParamType::TEGLint, value);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLStreamAttribKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureStreamConsumerAcquireKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLStreamConsumerAcquireKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureStreamConsumerGLTextureExternalKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLStreamConsumerGLTextureExternalKHR,
+ std::move(paramBuffer));
+}
+
+CallCapture CaptureStreamConsumerReleaseKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLStreamConsumerReleaseKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureSwapBuffersWithDamageKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ const EGLint *rects,
+ EGLint n_rects,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("rects", ParamType::TEGLintConstPointer, rects);
+ paramBuffer.addValueParam("n_rects", ParamType::TEGLint, n_rects);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLSwapBuffersWithDamageKHR, std::move(paramBuffer));
+}
+
+CallCapture CaptureWaitSyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint flags,
+ EGLint returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("syncPacked", ParamType::Tegl_SyncPointer, syncPacked);
+ paramBuffer.addValueParam("flags", ParamType::TEGLint, flags);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLint);
+ InitParamValue(ParamType::TEGLint, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLWaitSyncKHR, std::move(paramBuffer));
+}
+
+CallCapture CapturePostSubBufferNV(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint x,
+ EGLint y,
+ EGLint width,
+ EGLint height,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("surfacePacked", ParamType::Tegl_SurfacePointer, surfacePacked);
+ paramBuffer.addValueParam("x", ParamType::TEGLint, x);
+ paramBuffer.addValueParam("y", ParamType::TEGLint, y);
+ paramBuffer.addValueParam("width", ParamType::TEGLint, width);
+ paramBuffer.addValueParam("height", ParamType::TEGLint, height);
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLPostSubBufferNV, std::move(paramBuffer));
+}
+
+CallCapture CaptureStreamConsumerGLTextureExternalAttribsNV(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLBoolean returnValue)
+{
+ ParamBuffer paramBuffer;
+
+ paramBuffer.addValueParam("dpyPacked", ParamType::Tegl_DisplayPointer, dpyPacked);
+ paramBuffer.addValueParam("streamPacked", ParamType::Tegl_StreamPointer, streamPacked);
+ paramBuffer.addParam(CaptureAttributeMap(attrib_listPacked));
+
+ ParamCapture returnValueCapture("returnValue", ParamType::TEGLBoolean);
+ InitParamValue(ParamType::TEGLBoolean, returnValue, &returnValueCapture.value);
+ paramBuffer.addReturnValue(std::move(returnValueCapture));
+
+ return CallCapture(angle::EntryPoint::EGLStreamConsumerGLTextureExternalAttribsNV,
+ std::move(paramBuffer));
+}
+
+} // namespace egl
diff --git a/src/libANGLE/capture/capture_egl_autogen.h b/src/libANGLE/capture/capture_egl_autogen.h
new file mode 100644
index 0000000..f6c9b87
--- /dev/null
+++ b/src/libANGLE/capture/capture_egl_autogen.h
@@ -0,0 +1,654 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by generate_entry_points.py using data from egl.xml and egl_angle_ext.xml.
+//
+// Copyright 2020 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// capture_egl_autogen.h:
+// Capture functions for the OpenGL ES EGL entry points.
+
+#ifndef LIBANGLE_CAPTURE_EGL_AUTOGEN_H_
+#define LIBANGLE_CAPTURE_EGL_AUTOGEN_H_
+
+#include "common/PackedEnums.h"
+#include "libANGLE/capture/FrameCapture.h"
+
+namespace egl
+{
+
+// Method Captures
+
+angle::CallCapture CaptureChooseConfig(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLConfig *configs,
+ EGLint config_size,
+ EGLint *num_config,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCopyBuffers(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLNativePixmapType target,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCreateContext(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ gl::Context *share_contextPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLContext returnValue);
+angle::CallCapture CaptureCreatePbufferSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue);
+angle::CallCapture CaptureCreatePixmapSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ EGLNativePixmapType pixmap,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue);
+angle::CallCapture CaptureCreateWindowSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ EGLNativeWindowType win,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue);
+angle::CallCapture CaptureDestroyContext(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureDestroySurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetConfigAttrib(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ EGLint attribute,
+ EGLint *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetConfigs(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLConfig *configs,
+ EGLint config_size,
+ EGLint *num_config,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetCurrentDisplay(egl::Thread *thread,
+ bool isCallValid,
+ EGLDisplay returnValue);
+angle::CallCapture CaptureGetCurrentSurface(egl::Thread *thread,
+ bool isCallValid,
+ EGLint readdraw,
+ EGLSurface returnValue);
+angle::CallCapture CaptureGetDisplay(egl::Thread *thread,
+ bool isCallValid,
+ EGLNativeDisplayType display_id,
+ EGLDisplay returnValue);
+angle::CallCapture CaptureGetError(egl::Thread *thread, bool isCallValid, EGLint returnValue);
+angle::CallCapture CaptureGetProcAddress(egl::Thread *thread,
+ bool isCallValid,
+ const char *procname,
+ __eglMustCastToProperFunctionPointerType returnValue);
+angle::CallCapture CaptureInitialize(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint *major,
+ EGLint *minor,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureMakeCurrent(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *drawPacked,
+ egl::Surface *readPacked,
+ gl::Context *ctxPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryContext(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked,
+ EGLint attribute,
+ EGLint *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryString(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint name,
+ const char *returnValue);
+angle::CallCapture CaptureQuerySurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint attribute,
+ EGLint *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureSwapBuffers(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureTerminate(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureWaitGL(egl::Thread *thread, bool isCallValid, EGLBoolean returnValue);
+angle::CallCapture CaptureWaitNative(egl::Thread *thread,
+ bool isCallValid,
+ EGLint engine,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureBindTexImage(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint buffer,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureReleaseTexImage(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint buffer,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureSurfaceAttrib(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint attribute,
+ EGLint value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureSwapInterval(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint interval,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureBindAPI(egl::Thread *thread,
+ bool isCallValid,
+ EGLenum api,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCreatePbufferFromClientBuffer(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLenum buftype,
+ EGLClientBuffer buffer,
+ egl::Config *configPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue);
+angle::CallCapture CaptureQueryAPI(egl::Thread *thread, bool isCallValid, EGLenum returnValue);
+angle::CallCapture CaptureReleaseThread(egl::Thread *thread,
+ bool isCallValid,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureWaitClient(egl::Thread *thread, bool isCallValid, EGLBoolean returnValue);
+angle::CallCapture CaptureGetCurrentContext(egl::Thread *thread,
+ bool isCallValid,
+ EGLContext returnValue);
+angle::CallCapture CaptureClientWaitSync(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint flags,
+ EGLTime timeout,
+ EGLint returnValue);
+angle::CallCapture CaptureCreateImage(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const AttributeMap &attrib_listPacked,
+ EGLImage returnValue);
+angle::CallCapture CaptureCreatePlatformPixmapSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ void *native_pixmap,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue);
+angle::CallCapture CaptureCreatePlatformWindowSurface(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ void *native_window,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue);
+angle::CallCapture CaptureCreateSync(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLenum type,
+ const AttributeMap &attrib_listPacked,
+ EGLSync returnValue);
+angle::CallCapture CaptureDestroyImage(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Image *imagePacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureDestroySync(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetPlatformDisplay(egl::Thread *thread,
+ bool isCallValid,
+ EGLenum platform,
+ void *native_display,
+ const AttributeMap &attrib_listPacked,
+ EGLDisplay returnValue);
+angle::CallCapture CaptureGetSyncAttrib(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureWaitSync(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint flags,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureSetBlobCacheFuncsANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLSetBlobFuncANDROID set,
+ EGLGetBlobFuncANDROID get);
+angle::CallCapture CaptureCreateNativeClientBufferANDROID(egl::Thread *thread,
+ bool isCallValid,
+ const AttributeMap &attrib_listPacked,
+ EGLClientBuffer returnValue);
+angle::CallCapture CaptureGetCompositorTimingSupportedANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ CompositorTiming namePacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetCompositorTimingANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint numTimestamps,
+ const EGLint *names,
+ EGLnsecsANDROID *values,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetNextFrameIdANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLuint64KHR *frameId,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetFrameTimestampSupportedANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ Timestamp timestampPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetFrameTimestampsANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLuint64KHR frameId,
+ EGLint numTimestamps,
+ const EGLint *timestamps,
+ EGLnsecsANDROID *values,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetNativeClientBufferANDROID(egl::Thread *thread,
+ bool isCallValid,
+ const struct AHardwareBuffer *buffer,
+ EGLClientBuffer returnValue);
+angle::CallCapture CaptureDupNativeFenceFDANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint returnValue);
+angle::CallCapture CapturePresentationTimeANDROID(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLnsecsANDROID time,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCreateDeviceANGLE(egl::Thread *thread,
+ bool isCallValid,
+ EGLint device_type,
+ void *native_device,
+ const EGLAttrib *attrib_list,
+ EGLDeviceEXT returnValue);
+angle::CallCapture CaptureReleaseDeviceANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Device *devicePacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryStringiANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint name,
+ EGLint index,
+ const char *returnValue);
+angle::CallCapture CaptureQueryDisplayAttribANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCopyMetalSharedEventANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ void *returnValue);
+angle::CallCapture CaptureReleaseHighPowerGPUANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked);
+angle::CallCapture CaptureReacquireHighPowerGPUANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked);
+angle::CallCapture CaptureHandleGPUSwitchANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked);
+angle::CallCapture CaptureForceGPUSwitchANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint gpuIDHigh,
+ EGLint gpuIDLow);
+angle::CallCapture CapturePrepareSwapBuffersANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureProgramCacheGetAttribANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLenum attrib,
+ EGLint returnValue);
+angle::CallCapture CaptureProgramCacheQueryANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint index,
+ void *key,
+ EGLint *keysize,
+ void *binary,
+ EGLint *binarysize);
+angle::CallCapture CaptureProgramCachePopulateANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ const void *key,
+ EGLint keysize,
+ const void *binary,
+ EGLint binarysize);
+angle::CallCapture CaptureProgramCacheResizeANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint limit,
+ EGLint mode,
+ EGLint returnValue);
+angle::CallCapture CaptureQuerySurfacePointerANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint attribute,
+ void **value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCreateStreamProducerD3DTextureANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureStreamPostD3DTextureANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ void *texture,
+ const AttributeMap &attrib_listPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureSwapBuffersWithFrameTokenANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLFrameTokenANGLE frametoken,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetMscRateANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint *numerator,
+ EGLint *denominator,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureExportVkImageANGLE(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Image *imagePacked,
+ void *vk_image,
+ void *vk_image_create_info,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetSyncValuesCHROMIUM(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLuint64KHR *ust,
+ EGLuint64KHR *msc,
+ EGLuint64KHR *sbc,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryDeviceAttribEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Device *devicePacked,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryDeviceStringEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Device *devicePacked,
+ EGLint name,
+ const char *returnValue);
+angle::CallCapture CaptureQueryDisplayAttribEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryDmaBufFormatsEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint max_formats,
+ EGLint *formats,
+ EGLint *num_formats,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryDmaBufModifiersEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLint format,
+ EGLint max_modifiers,
+ EGLuint64KHR *modifiers,
+ EGLBoolean *external_only,
+ EGLint *num_modifiers,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCreatePlatformPixmapSurfaceEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ void *native_pixmap,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue);
+angle::CallCapture CaptureCreatePlatformWindowSurfaceEXT(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Config *configPacked,
+ void *native_window,
+ const AttributeMap &attrib_listPacked,
+ EGLSurface returnValue);
+angle::CallCapture CaptureGetPlatformDisplayEXT(egl::Thread *thread,
+ bool isCallValid,
+ EGLenum platform,
+ void *native_display,
+ const AttributeMap &attrib_listPacked,
+ EGLDisplay returnValue);
+angle::CallCapture CaptureDebugMessageControlKHR(egl::Thread *thread,
+ bool isCallValid,
+ EGLDEBUGPROCKHR callback,
+ const AttributeMap &attrib_listPacked,
+ EGLint returnValue);
+angle::CallCapture CaptureLabelObjectKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *displayPacked,
+ ObjectType objectTypePacked,
+ EGLObjectKHR object,
+ EGLLabelKHR label,
+ EGLint returnValue);
+angle::CallCapture CaptureQueryDebugKHR(egl::Thread *thread,
+ bool isCallValid,
+ EGLint attribute,
+ EGLAttrib *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureClientWaitSyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint flags,
+ EGLTimeKHR timeout,
+ EGLint returnValue);
+angle::CallCapture CaptureCreateSyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ EGLenum type,
+ const AttributeMap &attrib_listPacked,
+ EGLSyncKHR returnValue);
+angle::CallCapture CaptureDestroySyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureGetSyncAttribKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint attribute,
+ EGLint *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCreateImageKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ gl::Context *ctxPacked,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const AttributeMap &attrib_listPacked,
+ EGLImageKHR returnValue);
+angle::CallCapture CaptureDestroyImageKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Image *imagePacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureLockSurfaceKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ const AttributeMap &attrib_listPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQuerySurface64KHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint attribute,
+ EGLAttribKHR *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureUnlockSurfaceKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureSetDamageRegionKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint *rects,
+ EGLint n_rects,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureSignalSyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLenum mode,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureCreateStreamKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLStreamKHR returnValue);
+angle::CallCapture CaptureDestroyStreamKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryStreamKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLenum attribute,
+ EGLint *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureQueryStreamu64KHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLenum attribute,
+ EGLuint64KHR *value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureStreamAttribKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLenum attribute,
+ EGLint value,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureStreamConsumerAcquireKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureStreamConsumerGLTextureExternalKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureStreamConsumerReleaseKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureSwapBuffersWithDamageKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ const EGLint *rects,
+ EGLint n_rects,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureWaitSyncKHR(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Sync *syncPacked,
+ EGLint flags,
+ EGLint returnValue);
+angle::CallCapture CapturePostSubBufferNV(egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Surface *surfacePacked,
+ EGLint x,
+ EGLint y,
+ EGLint width,
+ EGLint height,
+ EGLBoolean returnValue);
+angle::CallCapture CaptureStreamConsumerGLTextureExternalAttribsNV(
+ egl::Thread *thread,
+ bool isCallValid,
+ egl::Display *dpyPacked,
+ egl::Stream *streamPacked,
+ const AttributeMap &attrib_listPacked,
+ EGLBoolean returnValue);
+} // namespace egl
+
+#endif // LIBANGLE_CAPTURE_EGL_AUTOGEN_H_
diff --git a/src/libANGLE/capture/capture_gl_1_autogen.cpp b/src/libANGLE/capture/capture_gl_1_autogen.cpp
index e4359f8..0159a9f 100644
--- a/src/libANGLE/capture/capture_gl_1_autogen.cpp
+++ b/src/libANGLE/capture/capture_gl_1_autogen.cpp
@@ -21,7 +21,6 @@
{
// GL 1.0
-
CallCapture CaptureAccum(const State &glState, bool isCallValid, GLenum op, GLfloat value)
{
ParamBuffer paramBuffer;
@@ -4458,7 +4457,6 @@
}
// GL 1.1
-
CallCapture CaptureAreTexturesResident(const State &glState,
bool isCallValid,
GLsizei n,
@@ -4783,7 +4781,6 @@
// GL 1.2
// GL 1.3
-
CallCapture CaptureCompressedTexImage1D(const State &glState,
bool isCallValid,
GLenum target,
@@ -5638,7 +5635,6 @@
}
// GL 1.4
-
CallCapture CaptureFogCoordPointer(const State &glState,
bool isCallValid,
GLenum type,
@@ -6470,7 +6466,6 @@
}
// GL 1.5
-
CallCapture CaptureGetBufferSubData(const State &glState,
bool isCallValid,
GLenum target,
diff --git a/src/libANGLE/capture/capture_gl_2_autogen.cpp b/src/libANGLE/capture/capture_gl_2_autogen.cpp
index 336522d..e10738b 100644
--- a/src/libANGLE/capture/capture_gl_2_autogen.cpp
+++ b/src/libANGLE/capture/capture_gl_2_autogen.cpp
@@ -21,7 +21,6 @@
{
// GL 2.0
-
CallCapture CaptureGetVertexAttribdv(const State &glState,
bool isCallValid,
GLuint index,
diff --git a/src/libANGLE/capture/capture_gl_3_autogen.cpp b/src/libANGLE/capture/capture_gl_3_autogen.cpp
index d0b950e..d507510 100644
--- a/src/libANGLE/capture/capture_gl_3_autogen.cpp
+++ b/src/libANGLE/capture/capture_gl_3_autogen.cpp
@@ -21,7 +21,6 @@
{
// GL 3.0
-
CallCapture CaptureBeginConditionalRender(const State &glState,
bool isCallValid,
GLuint id,
@@ -479,7 +478,6 @@
}
// GL 3.1
-
CallCapture CaptureGetActiveUniformName(const State &glState,
bool isCallValid,
ShaderProgramID programPacked,
@@ -539,7 +537,6 @@
}
// GL 3.2
-
CallCapture CaptureMultiDrawElementsBaseVertex(const State &glState,
bool isCallValid,
PrimitiveMode modePacked,
@@ -669,7 +666,6 @@
}
// GL 3.3
-
CallCapture CaptureBindFragDataLocationIndexed(const State &glState,
bool isCallValid,
ShaderProgramID programPacked,
diff --git a/src/libANGLE/capture/capture_gl_4_autogen.cpp b/src/libANGLE/capture/capture_gl_4_autogen.cpp
index b66ebf0..bd39def 100644
--- a/src/libANGLE/capture/capture_gl_4_autogen.cpp
+++ b/src/libANGLE/capture/capture_gl_4_autogen.cpp
@@ -21,7 +21,6 @@
{
// GL 4.0
-
CallCapture CaptureBeginQueryIndexed(const State &glState,
bool isCallValid,
GLenum target,
@@ -931,7 +930,6 @@
}
// GL 4.1
-
CallCapture CaptureDepthRangeArrayv(const State &glState,
bool isCallValid,
GLuint first,
@@ -1923,7 +1921,6 @@
}
// GL 4.2
-
CallCapture CaptureDrawArraysInstancedBaseInstance(const State &glState,
bool isCallValid,
PrimitiveMode modePacked,
@@ -2108,7 +2105,6 @@
}
// GL 4.3
-
CallCapture CaptureClearBufferData(const State &glState,
bool isCallValid,
GLenum target,
@@ -2446,7 +2442,6 @@
}
// GL 4.4
-
CallCapture CaptureBindBuffersBase(const State &glState,
bool isCallValid,
GLenum target,
@@ -2811,7 +2806,6 @@
}
// GL 4.5
-
CallCapture CaptureBindTextureUnit(const State &glState,
bool isCallValid,
GLuint unit,
@@ -5961,7 +5955,6 @@
}
// GL 4.6
-
CallCapture CaptureMultiDrawArraysIndirectCount(const State &glState,
bool isCallValid,
GLenum mode,
diff --git a/src/libANGLE/capture/capture_gles_1_0_autogen.cpp b/src/libANGLE/capture/capture_gles_1_0_autogen.cpp
index 6c4be7a..edd34fa 100644
--- a/src/libANGLE/capture/capture_gles_1_0_autogen.cpp
+++ b/src/libANGLE/capture/capture_gles_1_0_autogen.cpp
@@ -19,7 +19,6 @@
namespace gl
{
-
CallCapture CaptureAlphaFunc(const State &glState,
bool isCallValid,
AlphaTestFunc funcPacked,
diff --git a/src/libANGLE/capture/capture_gles_2_0_autogen.cpp b/src/libANGLE/capture/capture_gles_2_0_autogen.cpp
index 0aff42a..dc15aae 100644
--- a/src/libANGLE/capture/capture_gles_2_0_autogen.cpp
+++ b/src/libANGLE/capture/capture_gles_2_0_autogen.cpp
@@ -19,7 +19,6 @@
namespace gl
{
-
CallCapture CaptureActiveTexture(const State &glState, bool isCallValid, GLenum texture)
{
ParamBuffer paramBuffer;
diff --git a/src/libANGLE/capture/capture_gles_3_0_autogen.cpp b/src/libANGLE/capture/capture_gles_3_0_autogen.cpp
index 9f30f10..00bd25d 100644
--- a/src/libANGLE/capture/capture_gles_3_0_autogen.cpp
+++ b/src/libANGLE/capture/capture_gles_3_0_autogen.cpp
@@ -19,7 +19,6 @@
namespace gl
{
-
CallCapture CaptureBeginQuery(const State &glState,
bool isCallValid,
QueryType targetPacked,
diff --git a/src/libANGLE/capture/capture_gles_3_1_autogen.cpp b/src/libANGLE/capture/capture_gles_3_1_autogen.cpp
index 2ec8de0..da2defa 100644
--- a/src/libANGLE/capture/capture_gles_3_1_autogen.cpp
+++ b/src/libANGLE/capture/capture_gles_3_1_autogen.cpp
@@ -19,7 +19,6 @@
namespace gl
{
-
CallCapture CaptureActiveShaderProgram(const State &glState,
bool isCallValid,
ProgramPipelineID pipelinePacked,
diff --git a/src/libANGLE/capture/capture_gles_3_2_autogen.cpp b/src/libANGLE/capture/capture_gles_3_2_autogen.cpp
index 91abf36..8d7c156 100644
--- a/src/libANGLE/capture/capture_gles_3_2_autogen.cpp
+++ b/src/libANGLE/capture/capture_gles_3_2_autogen.cpp
@@ -19,7 +19,6 @@
namespace gl
{
-
CallCapture CaptureBlendBarrier(const State &glState, bool isCallValid)
{
ParamBuffer paramBuffer;
diff --git a/src/libANGLE/capture/capture_gles_ext_autogen.cpp b/src/libANGLE/capture/capture_gles_ext_autogen.cpp
index 81097ec..4a50832 100644
--- a/src/libANGLE/capture/capture_gles_ext_autogen.cpp
+++ b/src/libANGLE/capture/capture_gles_ext_autogen.cpp
@@ -19,7 +19,6 @@
namespace gl
{
-
CallCapture CaptureBeginPerfMonitorAMD(const State &glState, bool isCallValid, GLuint monitor)
{
ParamBuffer paramBuffer;
diff --git a/src/libANGLE/capture/frame_capture_utils_autogen.cpp b/src/libANGLE/capture/frame_capture_utils_autogen.cpp
index 1d37bca..717a507 100644
--- a/src/libANGLE/capture/frame_capture_utils_autogen.cpp
+++ b/src/libANGLE/capture/frame_capture_utils_autogen.cpp
@@ -71,6 +71,9 @@
WriteParamValueReplay<ParamType::TEGLAttribPointer>(os, call,
param.value.EGLAttribPointerVal);
break;
+ case ParamType::TEGLBoolean:
+ WriteParamValueReplay<ParamType::TEGLBoolean>(os, call, param.value.EGLBooleanVal);
+ break;
case ParamType::TEGLBooleanPointer:
WriteParamValueReplay<ParamType::TEGLBooleanPointer>(os, call,
param.value.EGLBooleanPointerVal);
@@ -83,10 +86,19 @@
WriteParamValueReplay<ParamType::TEGLConfigPointer>(os, call,
param.value.EGLConfigPointerVal);
break;
+ case ParamType::TEGLContext:
+ WriteParamValueReplay<ParamType::TEGLContext>(os, call, param.value.EGLContextVal);
+ break;
case ParamType::TEGLDEBUGPROCKHR:
WriteParamValueReplay<ParamType::TEGLDEBUGPROCKHR>(os, call,
param.value.EGLDEBUGPROCKHRVal);
break;
+ case ParamType::TEGLDeviceEXT:
+ WriteParamValueReplay<ParamType::TEGLDeviceEXT>(os, call, param.value.EGLDeviceEXTVal);
+ break;
+ case ParamType::TEGLDisplay:
+ WriteParamValueReplay<ParamType::TEGLDisplay>(os, call, param.value.EGLDisplayVal);
+ break;
case ParamType::TEGLFrameTokenANGLE:
WriteParamValueReplay<ParamType::TEGLFrameTokenANGLE>(
os, call, param.value.EGLFrameTokenANGLEVal);
@@ -95,6 +107,12 @@
WriteParamValueReplay<ParamType::TEGLGetBlobFuncANDROID>(
os, call, param.value.EGLGetBlobFuncANDROIDVal);
break;
+ case ParamType::TEGLImage:
+ WriteParamValueReplay<ParamType::TEGLImage>(os, call, param.value.EGLImageVal);
+ break;
+ case ParamType::TEGLImageKHR:
+ WriteParamValueReplay<ParamType::TEGLImageKHR>(os, call, param.value.EGLImageKHRVal);
+ break;
case ParamType::TEGLLabelKHR:
WriteParamValueReplay<ParamType::TEGLLabelKHR>(os, call, param.value.EGLLabelKHRVal);
break;
@@ -117,6 +135,18 @@
WriteParamValueReplay<ParamType::TEGLSetBlobFuncANDROID>(
os, call, param.value.EGLSetBlobFuncANDROIDVal);
break;
+ case ParamType::TEGLStreamKHR:
+ WriteParamValueReplay<ParamType::TEGLStreamKHR>(os, call, param.value.EGLStreamKHRVal);
+ break;
+ case ParamType::TEGLSurface:
+ WriteParamValueReplay<ParamType::TEGLSurface>(os, call, param.value.EGLSurfaceVal);
+ break;
+ case ParamType::TEGLSync:
+ WriteParamValueReplay<ParamType::TEGLSync>(os, call, param.value.EGLSyncVal);
+ break;
+ case ParamType::TEGLSyncKHR:
+ WriteParamValueReplay<ParamType::TEGLSyncKHR>(os, call, param.value.EGLSyncKHRVal);
+ break;
case ParamType::TEGLTime:
WriteParamValueReplay<ParamType::TEGLTime>(os, call, param.value.EGLTimeVal);
break;
@@ -647,55 +677,75 @@
case ParamType::TDrawElementsType:
return "GLenum";
case ParamType::TEGLAttribConstPointer:
- return "const GLenum *";
+ return "const EGLAttrib *";
case ParamType::TEGLAttribKHRPointer:
- return "GLenum *";
+ return "EGLAttribKHR *";
case ParamType::TEGLAttribPointer:
- return "GLenum *";
+ return "EGLAttrib *";
+ case ParamType::TEGLBoolean:
+ return "EGLBoolean";
case ParamType::TEGLBooleanPointer:
- return "GLenum *";
+ return "EGLBoolean *";
case ParamType::TEGLClientBuffer:
- return "GLenum";
+ return "EGLClientBuffer";
case ParamType::TEGLConfigPointer:
- return "GLenum *";
+ return "EGLConfig *";
+ case ParamType::TEGLContext:
+ return "EGLContext";
case ParamType::TEGLDEBUGPROCKHR:
- return "GLenum";
+ return "EGLDEBUGPROCKHR";
+ case ParamType::TEGLDeviceEXT:
+ return "EGLDeviceEXT";
+ case ParamType::TEGLDisplay:
+ return "EGLDisplay";
case ParamType::TEGLFrameTokenANGLE:
- return "GLenum";
+ return "EGLFrameTokenANGLE";
case ParamType::TEGLGetBlobFuncANDROID:
- return "GLenum";
+ return "EGLGetBlobFuncANDROID";
+ case ParamType::TEGLImage:
+ return "EGLImage";
+ case ParamType::TEGLImageKHR:
+ return "EGLImageKHR";
case ParamType::TEGLLabelKHR:
- return "GLenum";
+ return "EGLLabelKHR";
case ParamType::TEGLNativeDisplayType:
- return "GLenum";
+ return "EGLNativeDisplayType";
case ParamType::TEGLNativePixmapType:
- return "GLenum";
+ return "EGLNativePixmapType";
case ParamType::TEGLNativeWindowType:
- return "GLenum";
+ return "EGLNativeWindowType";
case ParamType::TEGLObjectKHR:
- return "GLenum";
+ return "EGLObjectKHR";
case ParamType::TEGLSetBlobFuncANDROID:
- return "GLenum";
+ return "EGLSetBlobFuncANDROID";
+ case ParamType::TEGLStreamKHR:
+ return "EGLStreamKHR";
+ case ParamType::TEGLSurface:
+ return "EGLSurface";
+ case ParamType::TEGLSync:
+ return "EGLSync";
+ case ParamType::TEGLSyncKHR:
+ return "EGLSyncKHR";
case ParamType::TEGLTime:
- return "GLenum";
+ return "EGLTime";
case ParamType::TEGLTimeKHR:
- return "GLenum";
+ return "EGLTimeKHR";
case ParamType::TEGLenum:
- return "GLenum";
+ return "EGLenum";
case ParamType::TEGLint:
- return "GLenum";
+ return "EGLint";
case ParamType::TEGLintConstPointer:
- return "const GLenum *";
+ return "const EGLint *";
case ParamType::TEGLintPointer:
- return "GLenum *";
+ return "EGLint *";
case ParamType::TEGLnsecsANDROID:
- return "GLenum";
+ return "EGLnsecsANDROID";
case ParamType::TEGLnsecsANDROIDPointer:
- return "GLenum *";
+ return "EGLnsecsANDROID *";
case ParamType::TEGLuint64KHR:
- return "GLenum";
+ return "EGLuint64KHR";
case ParamType::TEGLuint64KHRPointer:
- return "GLenum *";
+ return "EGLuint64KHR *";
case ParamType::TFenceNVID:
return "GLuint";
case ParamType::TFenceNVIDConstPointer:
diff --git a/src/libANGLE/capture/frame_capture_utils_autogen.h b/src/libANGLE/capture/frame_capture_utils_autogen.h
index 653e70c..dddd724 100644
--- a/src/libANGLE/capture/frame_capture_utils_autogen.h
+++ b/src/libANGLE/capture/frame_capture_utils_autogen.h
@@ -31,18 +31,28 @@
TEGLAttribConstPointer,
TEGLAttribKHRPointer,
TEGLAttribPointer,
+ TEGLBoolean,
TEGLBooleanPointer,
TEGLClientBuffer,
TEGLConfigPointer,
+ TEGLContext,
TEGLDEBUGPROCKHR,
+ TEGLDeviceEXT,
+ TEGLDisplay,
TEGLFrameTokenANGLE,
TEGLGetBlobFuncANDROID,
+ TEGLImage,
+ TEGLImageKHR,
TEGLLabelKHR,
TEGLNativeDisplayType,
TEGLNativePixmapType,
TEGLNativeWindowType,
TEGLObjectKHR,
TEGLSetBlobFuncANDROID,
+ TEGLStreamKHR,
+ TEGLSurface,
+ TEGLSync,
+ TEGLSyncKHR,
TEGLTime,
TEGLTimeKHR,
TEGLenum,
@@ -179,7 +189,7 @@
TvoidPointerPointer,
};
-constexpr uint32_t kParamTypeCount = 160;
+constexpr uint32_t kParamTypeCount = 170;
union ParamValue
{
@@ -197,18 +207,28 @@
const EGLAttrib *EGLAttribConstPointerVal;
EGLAttribKHR *EGLAttribKHRPointerVal;
EGLAttrib *EGLAttribPointerVal;
+ EGLBoolean EGLBooleanVal;
EGLBoolean *EGLBooleanPointerVal;
EGLClientBuffer EGLClientBufferVal;
EGLConfig *EGLConfigPointerVal;
+ EGLContext EGLContextVal;
EGLDEBUGPROCKHR EGLDEBUGPROCKHRVal;
+ EGLDeviceEXT EGLDeviceEXTVal;
+ EGLDisplay EGLDisplayVal;
EGLFrameTokenANGLE EGLFrameTokenANGLEVal;
EGLGetBlobFuncANDROID EGLGetBlobFuncANDROIDVal;
+ EGLImage EGLImageVal;
+ EGLImageKHR EGLImageKHRVal;
EGLLabelKHR EGLLabelKHRVal;
EGLNativeDisplayType EGLNativeDisplayTypeVal;
EGLNativePixmapType EGLNativePixmapTypeVal;
EGLNativeWindowType EGLNativeWindowTypeVal;
EGLObjectKHR EGLObjectKHRVal;
EGLSetBlobFuncANDROID EGLSetBlobFuncANDROIDVal;
+ EGLStreamKHR EGLStreamKHRVal;
+ EGLSurface EGLSurfaceVal;
+ EGLSync EGLSyncVal;
+ EGLSyncKHR EGLSyncKHRVal;
EGLTime EGLTimeVal;
EGLTimeKHR EGLTimeKHRVal;
EGLenum EGLenumVal;
@@ -445,6 +465,12 @@
}
template <>
+inline EGLBoolean GetParamVal<ParamType::TEGLBoolean, EGLBoolean>(const ParamValue &value)
+{
+ return value.EGLBooleanVal;
+}
+
+template <>
inline EGLBoolean *GetParamVal<ParamType::TEGLBooleanPointer, EGLBoolean *>(const ParamValue &value)
{
return value.EGLBooleanPointerVal;
@@ -464,6 +490,12 @@
}
template <>
+inline EGLContext GetParamVal<ParamType::TEGLContext, EGLContext>(const ParamValue &value)
+{
+ return value.EGLContextVal;
+}
+
+template <>
inline EGLDEBUGPROCKHR GetParamVal<ParamType::TEGLDEBUGPROCKHR, EGLDEBUGPROCKHR>(
const ParamValue &value)
{
@@ -471,6 +503,18 @@
}
template <>
+inline EGLDeviceEXT GetParamVal<ParamType::TEGLDeviceEXT, EGLDeviceEXT>(const ParamValue &value)
+{
+ return value.EGLDeviceEXTVal;
+}
+
+template <>
+inline EGLDisplay GetParamVal<ParamType::TEGLDisplay, EGLDisplay>(const ParamValue &value)
+{
+ return value.EGLDisplayVal;
+}
+
+template <>
inline EGLFrameTokenANGLE GetParamVal<ParamType::TEGLFrameTokenANGLE, EGLFrameTokenANGLE>(
const ParamValue &value)
{
@@ -485,6 +529,18 @@
}
template <>
+inline EGLImage GetParamVal<ParamType::TEGLImage, EGLImage>(const ParamValue &value)
+{
+ return value.EGLImageVal;
+}
+
+template <>
+inline EGLImageKHR GetParamVal<ParamType::TEGLImageKHR, EGLImageKHR>(const ParamValue &value)
+{
+ return value.EGLImageKHRVal;
+}
+
+template <>
inline EGLLabelKHR GetParamVal<ParamType::TEGLLabelKHR, EGLLabelKHR>(const ParamValue &value)
{
return value.EGLLabelKHRVal;
@@ -525,6 +581,30 @@
}
template <>
+inline EGLStreamKHR GetParamVal<ParamType::TEGLStreamKHR, EGLStreamKHR>(const ParamValue &value)
+{
+ return value.EGLStreamKHRVal;
+}
+
+template <>
+inline EGLSurface GetParamVal<ParamType::TEGLSurface, EGLSurface>(const ParamValue &value)
+{
+ return value.EGLSurfaceVal;
+}
+
+template <>
+inline EGLSync GetParamVal<ParamType::TEGLSync, EGLSync>(const ParamValue &value)
+{
+ return value.EGLSyncVal;
+}
+
+template <>
+inline EGLSyncKHR GetParamVal<ParamType::TEGLSyncKHR, EGLSyncKHR>(const ParamValue &value)
+{
+ return value.EGLSyncKHRVal;
+}
+
+template <>
inline EGLTime GetParamVal<ParamType::TEGLTime, EGLTime>(const ParamValue &value)
{
return value.EGLTimeVal;
@@ -1449,18 +1529,30 @@
return GetParamVal<ParamType::TEGLAttribKHRPointer, T>(value);
case ParamType::TEGLAttribPointer:
return GetParamVal<ParamType::TEGLAttribPointer, T>(value);
+ case ParamType::TEGLBoolean:
+ return GetParamVal<ParamType::TEGLBoolean, T>(value);
case ParamType::TEGLBooleanPointer:
return GetParamVal<ParamType::TEGLBooleanPointer, T>(value);
case ParamType::TEGLClientBuffer:
return GetParamVal<ParamType::TEGLClientBuffer, T>(value);
case ParamType::TEGLConfigPointer:
return GetParamVal<ParamType::TEGLConfigPointer, T>(value);
+ case ParamType::TEGLContext:
+ return GetParamVal<ParamType::TEGLContext, T>(value);
case ParamType::TEGLDEBUGPROCKHR:
return GetParamVal<ParamType::TEGLDEBUGPROCKHR, T>(value);
+ case ParamType::TEGLDeviceEXT:
+ return GetParamVal<ParamType::TEGLDeviceEXT, T>(value);
+ case ParamType::TEGLDisplay:
+ return GetParamVal<ParamType::TEGLDisplay, T>(value);
case ParamType::TEGLFrameTokenANGLE:
return GetParamVal<ParamType::TEGLFrameTokenANGLE, T>(value);
case ParamType::TEGLGetBlobFuncANDROID:
return GetParamVal<ParamType::TEGLGetBlobFuncANDROID, T>(value);
+ case ParamType::TEGLImage:
+ return GetParamVal<ParamType::TEGLImage, T>(value);
+ case ParamType::TEGLImageKHR:
+ return GetParamVal<ParamType::TEGLImageKHR, T>(value);
case ParamType::TEGLLabelKHR:
return GetParamVal<ParamType::TEGLLabelKHR, T>(value);
case ParamType::TEGLNativeDisplayType:
@@ -1473,6 +1565,14 @@
return GetParamVal<ParamType::TEGLObjectKHR, T>(value);
case ParamType::TEGLSetBlobFuncANDROID:
return GetParamVal<ParamType::TEGLSetBlobFuncANDROID, T>(value);
+ case ParamType::TEGLStreamKHR:
+ return GetParamVal<ParamType::TEGLStreamKHR, T>(value);
+ case ParamType::TEGLSurface:
+ return GetParamVal<ParamType::TEGLSurface, T>(value);
+ case ParamType::TEGLSync:
+ return GetParamVal<ParamType::TEGLSync, T>(value);
+ case ParamType::TEGLSyncKHR:
+ return GetParamVal<ParamType::TEGLSyncKHR, T>(value);
case ParamType::TEGLTime:
return GetParamVal<ParamType::TEGLTime, T>(value);
case ParamType::TEGLTimeKHR:
@@ -1841,6 +1941,12 @@
}
template <>
+inline void SetParamVal<ParamType::TEGLBoolean>(EGLBoolean valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLBooleanVal = valueIn;
+}
+
+template <>
inline void SetParamVal<ParamType::TEGLBooleanPointer>(EGLBoolean *valueIn, ParamValue *valueOut)
{
valueOut->EGLBooleanPointerVal = valueIn;
@@ -1859,12 +1965,30 @@
}
template <>
+inline void SetParamVal<ParamType::TEGLContext>(EGLContext valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLContextVal = valueIn;
+}
+
+template <>
inline void SetParamVal<ParamType::TEGLDEBUGPROCKHR>(EGLDEBUGPROCKHR valueIn, ParamValue *valueOut)
{
valueOut->EGLDEBUGPROCKHRVal = valueIn;
}
template <>
+inline void SetParamVal<ParamType::TEGLDeviceEXT>(EGLDeviceEXT valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLDeviceEXTVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLDisplay>(EGLDisplay valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLDisplayVal = valueIn;
+}
+
+template <>
inline void SetParamVal<ParamType::TEGLFrameTokenANGLE>(EGLFrameTokenANGLE valueIn,
ParamValue *valueOut)
{
@@ -1879,6 +2003,18 @@
}
template <>
+inline void SetParamVal<ParamType::TEGLImage>(EGLImage valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLImageVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLImageKHR>(EGLImageKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLImageKHRVal = valueIn;
+}
+
+template <>
inline void SetParamVal<ParamType::TEGLLabelKHR>(EGLLabelKHR valueIn, ParamValue *valueOut)
{
valueOut->EGLLabelKHRVal = valueIn;
@@ -1919,6 +2055,30 @@
}
template <>
+inline void SetParamVal<ParamType::TEGLStreamKHR>(EGLStreamKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLStreamKHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLSurface>(EGLSurface valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLSurfaceVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLSync>(EGLSync valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLSyncVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLSyncKHR>(EGLSyncKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLSyncKHRVal = valueIn;
+}
+
+template <>
inline void SetParamVal<ParamType::TEGLTime>(EGLTime valueIn, ParamValue *valueOut)
{
valueOut->EGLTimeVal = valueIn;
@@ -2831,6 +2991,9 @@
case ParamType::TEGLAttribPointer:
SetParamVal<ParamType::TEGLAttribPointer>(valueIn, valueOut);
break;
+ case ParamType::TEGLBoolean:
+ SetParamVal<ParamType::TEGLBoolean>(valueIn, valueOut);
+ break;
case ParamType::TEGLBooleanPointer:
SetParamVal<ParamType::TEGLBooleanPointer>(valueIn, valueOut);
break;
@@ -2840,15 +3003,30 @@
case ParamType::TEGLConfigPointer:
SetParamVal<ParamType::TEGLConfigPointer>(valueIn, valueOut);
break;
+ case ParamType::TEGLContext:
+ SetParamVal<ParamType::TEGLContext>(valueIn, valueOut);
+ break;
case ParamType::TEGLDEBUGPROCKHR:
SetParamVal<ParamType::TEGLDEBUGPROCKHR>(valueIn, valueOut);
break;
+ case ParamType::TEGLDeviceEXT:
+ SetParamVal<ParamType::TEGLDeviceEXT>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLDisplay:
+ SetParamVal<ParamType::TEGLDisplay>(valueIn, valueOut);
+ break;
case ParamType::TEGLFrameTokenANGLE:
SetParamVal<ParamType::TEGLFrameTokenANGLE>(valueIn, valueOut);
break;
case ParamType::TEGLGetBlobFuncANDROID:
SetParamVal<ParamType::TEGLGetBlobFuncANDROID>(valueIn, valueOut);
break;
+ case ParamType::TEGLImage:
+ SetParamVal<ParamType::TEGLImage>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLImageKHR:
+ SetParamVal<ParamType::TEGLImageKHR>(valueIn, valueOut);
+ break;
case ParamType::TEGLLabelKHR:
SetParamVal<ParamType::TEGLLabelKHR>(valueIn, valueOut);
break;
@@ -2867,6 +3045,18 @@
case ParamType::TEGLSetBlobFuncANDROID:
SetParamVal<ParamType::TEGLSetBlobFuncANDROID>(valueIn, valueOut);
break;
+ case ParamType::TEGLStreamKHR:
+ SetParamVal<ParamType::TEGLStreamKHR>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLSurface:
+ SetParamVal<ParamType::TEGLSurface>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLSync:
+ SetParamVal<ParamType::TEGLSync>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLSyncKHR:
+ SetParamVal<ParamType::TEGLSyncKHR>(valueIn, valueOut);
+ break;
case ParamType::TEGLTime:
SetParamVal<ParamType::TEGLTime>(valueIn, valueOut);
break;
diff --git a/src/libANGLE/capture/trace_fixture.h b/src/libANGLE/capture/trace_fixture.h
index be9a4dd..755da0e 100644
--- a/src/libANGLE/capture/trace_fixture.h
+++ b/src/libANGLE/capture/trace_fixture.h
@@ -110,7 +110,7 @@
// TODO(http://www.anglebug.com/5878): avoid std::unordered_map, it's slow
using SyncResourceMap = std::unordered_map<uintptr_t, GLsync>;
extern SyncResourceMap gSyncMap;
-using ContextMap = std::unordered_map<uint32_t, EGLContext>;
+using ContextMap = std::unordered_map<uintptr_t, EGLContext>;
extern ContextMap gContextMap;
using SurfaceMap = std::unordered_map<uintptr_t, EGLSurface>;
@@ -137,7 +137,6 @@
void UpdateTextureID(GLuint id, GLsizei readBufferOffset);
void UpdateTransformFeedbackID(GLuint id, GLsizei readBufferOffset);
void UpdateVertexArrayID(GLuint id, GLsizei readBufferOffset);
-void UpdateBufferID2(GLuint id, GLsizei readBufferOffset);
void UpdateClientBuffer(EGLClientBuffer key, EGLClientBuffer data);
EGLClientBuffer GetClientBuffer(EGLenum target, uint64_t key);
diff --git a/src/libANGLE/entry_points_utils.h b/src/libANGLE/entry_points_utils.h
index c5a3178..65981ce 100644
--- a/src/libANGLE/entry_points_utils.h
+++ b/src/libANGLE/entry_points_utils.h
@@ -91,11 +91,9 @@
}
#if ANGLE_CAPTURE_ENABLED
-# define ANGLE_CAPTURE_GL(Func, ...) CaptureCallToFrameCapture(Capture##Func, __VA_ARGS__)
-# define ANGLE_CAPTURE_EGL(Func, ...) CaptureCallToCaptureEGL(Capture##Func, __VA_ARGS__)
+# define ANGLE_CAPTURE_GL(Func, ...) CaptureGLCallToFrameCapture(Capture##Func, __VA_ARGS__)
#else
# define ANGLE_CAPTURE_GL(...)
-# define ANGLE_CAPTURE_EGL(...)
#endif // ANGLE_CAPTURE_ENABLED
#define EGL_EVENT(EP, FMT, ...) EVENT(nullptr, EGL##EP, FMT, ##__VA_ARGS__)
@@ -122,6 +120,12 @@
}
return gl::CID(contextPtr);
}
+
+#if ANGLE_CAPTURE_ENABLED
+# define ANGLE_CAPTURE_EGL(Func, ...) CaptureEGLCallToFrameCapture(Capture##Func, __VA_ARGS__)
+#else
+# define ANGLE_CAPTURE_EGL(...)
+#endif // ANGLE_CAPTURE_ENABLED
} // namespace egl
#endif // LIBANGLE_ENTRY_POINT_UTILS_H_
diff --git a/src/libGLESv2.gni b/src/libGLESv2.gni
index 1626d63..a215c5c 100644
--- a/src/libGLESv2.gni
+++ b/src/libGLESv2.gni
@@ -543,7 +543,7 @@
# The frame capture headers are always visible to libANGLE.
libangle_sources += [
"src/libANGLE/capture/FrameCapture.h",
- "src/libANGLE/capture/capture_egl.h",
+ "src/libANGLE/capture/capture_egl_autogen.h",
"src/libANGLE/capture/capture_gl_1_autogen.h",
"src/libANGLE/capture/capture_gl_2_autogen.h",
"src/libANGLE/capture/capture_gl_3_autogen.h",
@@ -562,7 +562,7 @@
libangle_capture_sources = [
"src/libANGLE/capture/FrameCapture.cpp",
- "src/libANGLE/capture/capture_egl.cpp",
+ "src/libANGLE/capture/capture_egl_autogen.cpp",
"src/libANGLE/capture/capture_gl_1_autogen.cpp",
"src/libANGLE/capture/capture_gl_1_params.cpp",
"src/libANGLE/capture/capture_gl_2_autogen.cpp",
diff --git a/src/libGLESv2/egl_ext_stubs.cpp b/src/libGLESv2/egl_ext_stubs.cpp
index a8b5142..78cdea4 100644
--- a/src/libGLESv2/egl_ext_stubs.cpp
+++ b/src/libGLESv2/egl_ext_stubs.cpp
@@ -13,8 +13,6 @@
#include "libANGLE/EGLSync.h"
#include "libANGLE/Surface.h"
#include "libANGLE/Thread.h"
-#include "libANGLE/capture/capture_egl.h"
-#include "libANGLE/capture/frame_capture_utils_autogen.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/queryutils.h"
#include "libANGLE/renderer/DisplayImpl.h"
@@ -55,8 +53,6 @@
ANGLE_EGL_TRY_RETURN(thread, display->createImage(context, target, buffer, attributes, &image),
"", GetDisplayIfValid(display), EGL_NO_IMAGE);
- ANGLE_CAPTURE_EGL(EGLCreateImage, thread, display, context, target, buffer, attributes, image);
-
thread->setSuccess();
return static_cast<EGLImage>(image);
}
@@ -68,8 +64,6 @@
egl::Display::CreateNativeClientBuffer(attribMap, &eglClientBuffer),
"eglCreateNativeClientBufferANDROID", nullptr, nullptr);
- ANGLE_CAPTURE_EGL(CreateNativeClientBufferANDROID, thread, attribMap, eglClientBuffer);
-
thread->setSuccess();
return eglClientBuffer;
}
@@ -157,8 +151,6 @@
GetDisplayIfValid(display), EGL_FALSE);
display->destroyImage(img);
- ANGLE_CAPTURE_EGL(EGLDestroyImage, thread, display, img);
-
thread->setSuccess();
return EGL_TRUE;
}
diff --git a/src/libGLESv2/egl_stubs.cpp b/src/libGLESv2/egl_stubs.cpp
index 6907cfc..cdaa21a 100644
--- a/src/libGLESv2/egl_stubs.cpp
+++ b/src/libGLESv2/egl_stubs.cpp
@@ -14,8 +14,6 @@
#include "libANGLE/EGLSync.h"
#include "libANGLE/Surface.h"
#include "libANGLE/Thread.h"
-#include "libANGLE/capture/capture_egl.h"
-#include "libANGLE/capture/frame_capture_utils_autogen.h"
#include "libANGLE/capture/gl_enum_utils_autogen.h"
#include "libANGLE/queryutils.h"
#include "libANGLE/validationEGL.h"
@@ -71,8 +69,6 @@
gl::Texture *textureObject = context->getTextureByType(type);
ANGLE_EGL_TRY_RETURN(thread, eglSurface->bindTexImage(context, textureObject, buffer),
"eglBindTexImage", GetSurfaceIfValid(display, eglSurface), EGL_FALSE);
-
- ANGLE_CAPTURE_EGL(EGLBindTexImage, thread, display, eglSurface, buffer);
}
thread->setSuccess();
@@ -159,8 +155,6 @@
return EGL_NO_IMAGE;
}
- ANGLE_CAPTURE_EGL(EGLCreateImage, thread, display, context, target, buffer, attributes, image);
-
thread->setSuccess();
return static_cast<EGLImage>(image);
}
@@ -195,8 +189,6 @@
ANGLE_EGL_TRY_RETURN(thread, display->createPbufferSurface(configuration, attributes, &surface),
"eglCreatePbufferSurface", GetDisplayIfValid(display), EGL_NO_SURFACE);
- ANGLE_CAPTURE_EGL(EGLCreatePbufferSurface, thread, display, configuration, attributes, surface);
-
return static_cast<EGLSurface>(surface);
}
@@ -302,16 +294,12 @@
GetDisplayIfValid(display), EGL_FALSE);
display->destroyImage(img);
- ANGLE_CAPTURE_EGL(EGLDestroyImage, thread, display, img);
-
thread->setSuccess();
return EGL_TRUE;
}
EGLBoolean DestroySurface(Thread *thread, Display *display, Surface *eglSurface)
{
- ANGLE_CAPTURE_EGL(EGLDestroySurface, thread, display, eglSurface);
-
ANGLE_EGL_TRY_RETURN(thread, display->prepareForCall(), "eglDestroySurface",
GetDisplayIfValid(display), EGL_FALSE);
@@ -502,8 +490,6 @@
thread,
display->makeCurrent(thread, previousContext, drawSurface, readSurface, context),
"eglMakeCurrent", GetContextIfValid(display, context), EGL_FALSE);
-
- ANGLE_CAPTURE_EGL(EGLMakeCurrent, thread, display, drawSurface, readSurface, context);
}
thread->setSuccess();
@@ -605,7 +591,6 @@
ANGLE_EGL_TRY_RETURN(thread, eglSurface->releaseTexImage(thread->getContext(), buffer),
"eglReleaseTexImage", GetSurfaceIfValid(display, eglSurface),
EGL_FALSE);
- ANGLE_CAPTURE_EGL(EGLReleaseTexImage, thread, display, eglSurface, buffer);
}
}
thread->setSuccess();
diff --git a/src/libGLESv2/entry_points_egl_autogen.cpp b/src/libGLESv2/entry_points_egl_autogen.cpp
index 318f8f0..5f82b7f 100644
--- a/src/libGLESv2/entry_points_egl_autogen.cpp
+++ b/src/libGLESv2/entry_points_egl_autogen.cpp
@@ -10,6 +10,7 @@
#include "libGLESv2/entry_points_egl_autogen.h"
+#include "libANGLE/capture/capture_egl_autogen.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/validationEGL_autogen.h"
#include "libGLESv2/egl_ext_stubs_autogen.h"
@@ -43,7 +44,11 @@
ANGLE_EGL_VALIDATE(thread, ChooseConfig, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
attrib_listPacked, configs, config_size, num_config);
- return ChooseConfig(thread, dpyPacked, attrib_listPacked, configs, config_size, num_config);
+ EGLBoolean returnValue =
+ ChooseConfig(thread, dpyPacked, attrib_listPacked, configs, config_size, num_config);
+ ANGLE_CAPTURE_EGL(ChooseConfig, true, thread, dpyPacked, attrib_listPacked, configs,
+ config_size, num_config, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_CopyBuffers(EGLDisplay dpy,
@@ -65,7 +70,9 @@
ANGLE_EGL_VALIDATE(thread, CopyBuffers, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked, target);
- return CopyBuffers(thread, dpyPacked, surfacePacked, target);
+ EGLBoolean returnValue = CopyBuffers(thread, dpyPacked, surfacePacked, target);
+ ANGLE_CAPTURE_EGL(CopyBuffers, true, thread, dpyPacked, surfacePacked, target, returnValue);
+ return returnValue;
}
EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy,
@@ -90,7 +97,11 @@
ANGLE_EGL_VALIDATE(thread, CreateContext, GetDisplayIfValid(dpyPacked), EGLContext, dpyPacked,
configPacked, share_contextPacked, attrib_listPacked);
- return CreateContext(thread, dpyPacked, configPacked, share_contextPacked, attrib_listPacked);
+ EGLContext returnValue =
+ CreateContext(thread, dpyPacked, configPacked, share_contextPacked, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateContext, true, thread, dpyPacked, configPacked, share_contextPacked,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
EGLSurface EGLAPIENTRY EGL_CreatePbufferSurface(EGLDisplay dpy,
@@ -113,7 +124,11 @@
ANGLE_EGL_VALIDATE(thread, CreatePbufferSurface, GetDisplayIfValid(dpyPacked), EGLSurface,
dpyPacked, configPacked, attrib_listPacked);
- return CreatePbufferSurface(thread, dpyPacked, configPacked, attrib_listPacked);
+ EGLSurface returnValue =
+ CreatePbufferSurface(thread, dpyPacked, configPacked, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreatePbufferSurface, true, thread, dpyPacked, configPacked,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
EGLSurface EGLAPIENTRY EGL_CreatePixmapSurface(EGLDisplay dpy,
@@ -137,7 +152,11 @@
ANGLE_EGL_VALIDATE(thread, CreatePixmapSurface, GetDisplayIfValid(dpyPacked), EGLSurface,
dpyPacked, configPacked, pixmap, attrib_listPacked);
- return CreatePixmapSurface(thread, dpyPacked, configPacked, pixmap, attrib_listPacked);
+ EGLSurface returnValue =
+ CreatePixmapSurface(thread, dpyPacked, configPacked, pixmap, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreatePixmapSurface, true, thread, dpyPacked, configPacked, pixmap,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
EGLSurface EGLAPIENTRY EGL_CreateWindowSurface(EGLDisplay dpy,
@@ -161,7 +180,11 @@
ANGLE_EGL_VALIDATE(thread, CreateWindowSurface, GetDisplayIfValid(dpyPacked), EGLSurface,
dpyPacked, configPacked, win, attrib_listPacked);
- return CreateWindowSurface(thread, dpyPacked, configPacked, win, attrib_listPacked);
+ EGLSurface returnValue =
+ CreateWindowSurface(thread, dpyPacked, configPacked, win, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateWindowSurface, true, thread, dpyPacked, configPacked, win,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_DestroyContext(EGLDisplay dpy, EGLContext ctx)
@@ -179,7 +202,9 @@
ANGLE_EGL_VALIDATE(thread, DestroyContext, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
ctxPacked);
- return DestroyContext(thread, dpyPacked, ctxPacked);
+ EGLBoolean returnValue = DestroyContext(thread, dpyPacked, ctxPacked);
+ ANGLE_CAPTURE_EGL(DestroyContext, true, thread, dpyPacked, ctxPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_DestroySurface(EGLDisplay dpy, EGLSurface surface)
@@ -198,7 +223,9 @@
ANGLE_EGL_VALIDATE(thread, DestroySurface, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked);
- return DestroySurface(thread, dpyPacked, surfacePacked);
+ EGLBoolean returnValue = DestroySurface(thread, dpyPacked, surfacePacked);
+ ANGLE_CAPTURE_EGL(DestroySurface, true, thread, dpyPacked, surfacePacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_GetConfigAttrib(EGLDisplay dpy,
@@ -221,7 +248,10 @@
ANGLE_EGL_VALIDATE(thread, GetConfigAttrib, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
configPacked, attribute, value);
- return GetConfigAttrib(thread, dpyPacked, configPacked, attribute, value);
+ EGLBoolean returnValue = GetConfigAttrib(thread, dpyPacked, configPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(GetConfigAttrib, true, thread, dpyPacked, configPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_GetConfigs(EGLDisplay dpy,
@@ -243,7 +273,10 @@
ANGLE_EGL_VALIDATE(thread, GetConfigs, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
configs, config_size, num_config);
- return GetConfigs(thread, dpyPacked, configs, config_size, num_config);
+ EGLBoolean returnValue = GetConfigs(thread, dpyPacked, configs, config_size, num_config);
+ ANGLE_CAPTURE_EGL(GetConfigs, true, thread, dpyPacked, configs, config_size, num_config,
+ returnValue);
+ return returnValue;
}
EGLDisplay EGLAPIENTRY EGL_GetCurrentDisplay()
@@ -256,7 +289,9 @@
ANGLE_EGL_VALIDATE(thread, GetCurrentDisplay, nullptr, EGLDisplay);
- return GetCurrentDisplay(thread);
+ EGLDisplay returnValue = GetCurrentDisplay(thread);
+ ANGLE_CAPTURE_EGL(GetCurrentDisplay, true, thread, returnValue);
+ return returnValue;
}
EGLSurface EGLAPIENTRY EGL_GetCurrentSurface(EGLint readdraw)
@@ -269,7 +304,9 @@
ANGLE_EGL_VALIDATE(thread, GetCurrentSurface, nullptr, EGLSurface, readdraw);
- return GetCurrentSurface(thread, readdraw);
+ EGLSurface returnValue = GetCurrentSurface(thread, readdraw);
+ ANGLE_CAPTURE_EGL(GetCurrentSurface, true, thread, readdraw, returnValue);
+ return returnValue;
}
EGLDisplay EGLAPIENTRY EGL_GetDisplay(EGLNativeDisplayType display_id)
@@ -282,7 +319,9 @@
ANGLE_EGL_VALIDATE(thread, GetDisplay, nullptr, EGLDisplay, display_id);
- return GetDisplay(thread, display_id);
+ EGLDisplay returnValue = GetDisplay(thread, display_id);
+ ANGLE_CAPTURE_EGL(GetDisplay, true, thread, display_id, returnValue);
+ return returnValue;
}
EGLint EGLAPIENTRY EGL_GetError()
@@ -295,7 +334,9 @@
ANGLE_EGL_VALIDATE(thread, GetError, nullptr, EGLint);
- return GetError(thread);
+ EGLint returnValue = GetError(thread);
+ ANGLE_CAPTURE_EGL(GetError, true, thread, returnValue);
+ return returnValue;
}
__eglMustCastToProperFunctionPointerType EGLAPIENTRY EGL_GetProcAddress(const char *procname)
@@ -309,7 +350,9 @@
ANGLE_EGL_VALIDATE(thread, GetProcAddress, nullptr, __eglMustCastToProperFunctionPointerType,
procname);
- return GetProcAddress(thread, procname);
+ __eglMustCastToProperFunctionPointerType returnValue = GetProcAddress(thread, procname);
+ ANGLE_CAPTURE_EGL(GetProcAddress, true, thread, procname, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
@@ -327,7 +370,9 @@
ANGLE_EGL_VALIDATE(thread, Initialize, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
major, minor);
- return Initialize(thread, dpyPacked, major, minor);
+ EGLBoolean returnValue = Initialize(thread, dpyPacked, major, minor);
+ ANGLE_CAPTURE_EGL(Initialize, true, thread, dpyPacked, major, minor, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_MakeCurrent(EGLDisplay dpy,
@@ -353,7 +398,10 @@
ANGLE_EGL_VALIDATE(thread, MakeCurrent, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
drawPacked, readPacked, ctxPacked);
- return MakeCurrent(thread, dpyPacked, drawPacked, readPacked, ctxPacked);
+ EGLBoolean returnValue = MakeCurrent(thread, dpyPacked, drawPacked, readPacked, ctxPacked);
+ ANGLE_CAPTURE_EGL(MakeCurrent, true, thread, dpyPacked, drawPacked, readPacked, ctxPacked,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QueryContext(EGLDisplay dpy,
@@ -376,7 +424,10 @@
ANGLE_EGL_VALIDATE(thread, QueryContext, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
ctxPacked, attribute, value);
- return QueryContext(thread, dpyPacked, ctxPacked, attribute, value);
+ EGLBoolean returnValue = QueryContext(thread, dpyPacked, ctxPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QueryContext, true, thread, dpyPacked, ctxPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
const char *EGLAPIENTRY EGL_QueryString(EGLDisplay dpy, EGLint name)
@@ -392,7 +443,9 @@
ANGLE_EGL_VALIDATE(thread, QueryString, GetDisplayIfValid(dpyPacked), const char *, dpyPacked,
name);
- return QueryString(thread, dpyPacked, name);
+ const char *returnValue = QueryString(thread, dpyPacked, name);
+ ANGLE_CAPTURE_EGL(QueryString, true, thread, dpyPacked, name, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QuerySurface(EGLDisplay dpy,
@@ -416,7 +469,10 @@
ANGLE_EGL_VALIDATE(thread, QuerySurface, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked, attribute, value);
- return QuerySurface(thread, dpyPacked, surfacePacked, attribute, value);
+ EGLBoolean returnValue = QuerySurface(thread, dpyPacked, surfacePacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QuerySurface, true, thread, dpyPacked, surfacePacked, attribute, value,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_SwapBuffers(EGLDisplay dpy, EGLSurface surface)
@@ -435,7 +491,9 @@
ANGLE_EGL_VALIDATE(thread, SwapBuffers, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked);
- return SwapBuffers(thread, dpyPacked, surfacePacked);
+ EGLBoolean returnValue = SwapBuffers(thread, dpyPacked, surfacePacked);
+ ANGLE_CAPTURE_EGL(SwapBuffers, true, thread, dpyPacked, surfacePacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_Terminate(EGLDisplay dpy)
@@ -450,7 +508,9 @@
ANGLE_EGL_VALIDATE(thread, Terminate, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked);
- return Terminate(thread, dpyPacked);
+ EGLBoolean returnValue = Terminate(thread, dpyPacked);
+ ANGLE_CAPTURE_EGL(Terminate, true, thread, dpyPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_WaitGL()
@@ -463,7 +523,9 @@
ANGLE_EGL_VALIDATE(thread, WaitGL, nullptr, EGLBoolean);
- return WaitGL(thread);
+ EGLBoolean returnValue = WaitGL(thread);
+ ANGLE_CAPTURE_EGL(WaitGL, true, thread, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_WaitNative(EGLint engine)
@@ -476,7 +538,9 @@
ANGLE_EGL_VALIDATE(thread, WaitNative, nullptr, EGLBoolean, engine);
- return WaitNative(thread, engine);
+ EGLBoolean returnValue = WaitNative(thread, engine);
+ ANGLE_CAPTURE_EGL(WaitNative, true, thread, engine, returnValue);
+ return returnValue;
}
// EGL 1.1
@@ -496,7 +560,9 @@
ANGLE_EGL_VALIDATE(thread, BindTexImage, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked, buffer);
- return BindTexImage(thread, dpyPacked, surfacePacked, buffer);
+ EGLBoolean returnValue = BindTexImage(thread, dpyPacked, surfacePacked, buffer);
+ ANGLE_CAPTURE_EGL(BindTexImage, true, thread, dpyPacked, surfacePacked, buffer, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
@@ -515,7 +581,9 @@
ANGLE_EGL_VALIDATE(thread, ReleaseTexImage, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked, buffer);
- return ReleaseTexImage(thread, dpyPacked, surfacePacked, buffer);
+ EGLBoolean returnValue = ReleaseTexImage(thread, dpyPacked, surfacePacked, buffer);
+ ANGLE_CAPTURE_EGL(ReleaseTexImage, true, thread, dpyPacked, surfacePacked, buffer, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_SurfaceAttrib(EGLDisplay dpy,
@@ -538,7 +606,10 @@
ANGLE_EGL_VALIDATE(thread, SurfaceAttrib, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked, attribute, value);
- return SurfaceAttrib(thread, dpyPacked, surfacePacked, attribute, value);
+ EGLBoolean returnValue = SurfaceAttrib(thread, dpyPacked, surfacePacked, attribute, value);
+ ANGLE_CAPTURE_EGL(SurfaceAttrib, true, thread, dpyPacked, surfacePacked, attribute, value,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_SwapInterval(EGLDisplay dpy, EGLint interval)
@@ -554,7 +625,9 @@
ANGLE_EGL_VALIDATE(thread, SwapInterval, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
interval);
- return SwapInterval(thread, dpyPacked, interval);
+ EGLBoolean returnValue = SwapInterval(thread, dpyPacked, interval);
+ ANGLE_CAPTURE_EGL(SwapInterval, true, thread, dpyPacked, interval, returnValue);
+ return returnValue;
}
// EGL 1.2
@@ -568,7 +641,9 @@
ANGLE_EGL_VALIDATE(thread, BindAPI, nullptr, EGLBoolean, api);
- return BindAPI(thread, api);
+ EGLBoolean returnValue = BindAPI(thread, api);
+ ANGLE_CAPTURE_EGL(BindAPI, true, thread, api, returnValue);
+ return returnValue;
}
EGLSurface EGLAPIENTRY EGL_CreatePbufferFromClientBuffer(EGLDisplay dpy,
@@ -594,8 +669,11 @@
ANGLE_EGL_VALIDATE(thread, CreatePbufferFromClientBuffer, GetDisplayIfValid(dpyPacked),
EGLSurface, dpyPacked, buftype, buffer, configPacked, attrib_listPacked);
- return CreatePbufferFromClientBuffer(thread, dpyPacked, buftype, buffer, configPacked,
- attrib_listPacked);
+ EGLSurface returnValue = CreatePbufferFromClientBuffer(thread, dpyPacked, buftype, buffer,
+ configPacked, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreatePbufferFromClientBuffer, true, thread, dpyPacked, buftype, buffer,
+ configPacked, attrib_listPacked, returnValue);
+ return returnValue;
}
EGLenum EGLAPIENTRY EGL_QueryAPI()
@@ -608,7 +686,9 @@
ANGLE_EGL_VALIDATE(thread, QueryAPI, nullptr, EGLenum);
- return QueryAPI(thread);
+ EGLenum returnValue = QueryAPI(thread);
+ ANGLE_CAPTURE_EGL(QueryAPI, true, thread, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_ReleaseThread()
@@ -621,7 +701,9 @@
ANGLE_EGL_VALIDATE(thread, ReleaseThread, nullptr, EGLBoolean);
- return ReleaseThread(thread);
+ EGLBoolean returnValue = ReleaseThread(thread);
+ ANGLE_CAPTURE_EGL(ReleaseThread, true, thread, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_WaitClient()
@@ -634,7 +716,9 @@
ANGLE_EGL_VALIDATE(thread, WaitClient, nullptr, EGLBoolean);
- return WaitClient(thread);
+ EGLBoolean returnValue = WaitClient(thread);
+ ANGLE_CAPTURE_EGL(WaitClient, true, thread, returnValue);
+ return returnValue;
}
// EGL 1.4
@@ -648,7 +732,9 @@
ANGLE_EGL_VALIDATE(thread, GetCurrentContext, nullptr, EGLContext);
- return GetCurrentContext(thread);
+ EGLContext returnValue = GetCurrentContext(thread);
+ ANGLE_CAPTURE_EGL(GetCurrentContext, true, thread, returnValue);
+ return returnValue;
}
// EGL 1.5
@@ -668,7 +754,10 @@
ANGLE_EGL_VALIDATE(thread, ClientWaitSync, GetDisplayIfValid(dpyPacked), EGLint, dpyPacked,
syncPacked, flags, timeout);
- return ClientWaitSync(thread, dpyPacked, syncPacked, flags, timeout);
+ EGLint returnValue = ClientWaitSync(thread, dpyPacked, syncPacked, flags, timeout);
+ ANGLE_CAPTURE_EGL(ClientWaitSync, true, thread, dpyPacked, syncPacked, flags, timeout,
+ returnValue);
+ return returnValue;
}
EGLImage EGLAPIENTRY EGL_CreateImage(EGLDisplay dpy,
@@ -693,7 +782,11 @@
ANGLE_EGL_VALIDATE(thread, CreateImage, GetDisplayIfValid(dpyPacked), EGLImage, dpyPacked,
ctxPacked, target, buffer, attrib_listPacked);
- return CreateImage(thread, dpyPacked, ctxPacked, target, buffer, attrib_listPacked);
+ EGLImage returnValue =
+ CreateImage(thread, dpyPacked, ctxPacked, target, buffer, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateImage, true, thread, dpyPacked, ctxPacked, target, buffer,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
EGLSurface EGLAPIENTRY EGL_CreatePlatformPixmapSurface(EGLDisplay dpy,
@@ -717,8 +810,11 @@
ANGLE_EGL_VALIDATE(thread, CreatePlatformPixmapSurface, GetDisplayIfValid(dpyPacked),
EGLSurface, dpyPacked, configPacked, native_pixmap, attrib_listPacked);
- return CreatePlatformPixmapSurface(thread, dpyPacked, configPacked, native_pixmap,
- attrib_listPacked);
+ EGLSurface returnValue = CreatePlatformPixmapSurface(thread, dpyPacked, configPacked,
+ native_pixmap, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreatePlatformPixmapSurface, true, thread, dpyPacked, configPacked,
+ native_pixmap, attrib_listPacked, returnValue);
+ return returnValue;
}
EGLSurface EGLAPIENTRY EGL_CreatePlatformWindowSurface(EGLDisplay dpy,
@@ -742,8 +838,11 @@
ANGLE_EGL_VALIDATE(thread, CreatePlatformWindowSurface, GetDisplayIfValid(dpyPacked),
EGLSurface, dpyPacked, configPacked, native_window, attrib_listPacked);
- return CreatePlatformWindowSurface(thread, dpyPacked, configPacked, native_window,
- attrib_listPacked);
+ EGLSurface returnValue = CreatePlatformWindowSurface(thread, dpyPacked, configPacked,
+ native_window, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreatePlatformWindowSurface, true, thread, dpyPacked, configPacked,
+ native_window, attrib_listPacked, returnValue);
+ return returnValue;
}
EGLSync EGLAPIENTRY EGL_CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
@@ -761,7 +860,9 @@
ANGLE_EGL_VALIDATE(thread, CreateSync, GetDisplayIfValid(dpyPacked), EGLSync, dpyPacked, type,
attrib_listPacked);
- return CreateSync(thread, dpyPacked, type, attrib_listPacked);
+ EGLSync returnValue = CreateSync(thread, dpyPacked, type, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateSync, true, thread, dpyPacked, type, attrib_listPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_DestroyImage(EGLDisplay dpy, EGLImage image)
@@ -779,7 +880,9 @@
ANGLE_EGL_VALIDATE(thread, DestroyImage, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
imagePacked);
- return DestroyImage(thread, dpyPacked, imagePacked);
+ EGLBoolean returnValue = DestroyImage(thread, dpyPacked, imagePacked);
+ ANGLE_CAPTURE_EGL(DestroyImage, true, thread, dpyPacked, imagePacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_DestroySync(EGLDisplay dpy, EGLSync sync)
@@ -797,7 +900,9 @@
ANGLE_EGL_VALIDATE(thread, DestroySync, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
syncPacked);
- return DestroySync(thread, dpyPacked, syncPacked);
+ EGLBoolean returnValue = DestroySync(thread, dpyPacked, syncPacked);
+ ANGLE_CAPTURE_EGL(DestroySync, true, thread, dpyPacked, syncPacked, returnValue);
+ return returnValue;
}
EGLDisplay EGLAPIENTRY EGL_GetPlatformDisplay(EGLenum platform,
@@ -818,7 +923,11 @@
ANGLE_EGL_VALIDATE(thread, GetPlatformDisplay, nullptr, EGLDisplay, platform, native_display,
attrib_listPacked);
- return GetPlatformDisplay(thread, platform, native_display, attrib_listPacked);
+ EGLDisplay returnValue =
+ GetPlatformDisplay(thread, platform, native_display, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(GetPlatformDisplay, true, thread, platform, native_display, attrib_listPacked,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_GetSyncAttrib(EGLDisplay dpy,
@@ -841,7 +950,10 @@
ANGLE_EGL_VALIDATE(thread, GetSyncAttrib, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
syncPacked, attribute, value);
- return GetSyncAttrib(thread, dpyPacked, syncPacked, attribute, value);
+ EGLBoolean returnValue = GetSyncAttrib(thread, dpyPacked, syncPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(GetSyncAttrib, true, thread, dpyPacked, syncPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_WaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags)
@@ -859,7 +971,9 @@
ANGLE_EGL_VALIDATE(thread, WaitSync, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
syncPacked, flags);
- return WaitSync(thread, dpyPacked, syncPacked, flags);
+ EGLBoolean returnValue = WaitSync(thread, dpyPacked, syncPacked, flags);
+ ANGLE_CAPTURE_EGL(WaitSync, true, thread, dpyPacked, syncPacked, flags, returnValue);
+ return returnValue;
}
} // extern "C"
diff --git a/src/libGLESv2/entry_points_egl_ext_autogen.cpp b/src/libGLESv2/entry_points_egl_ext_autogen.cpp
index c8957f0..224ce6f 100644
--- a/src/libGLESv2/entry_points_egl_ext_autogen.cpp
+++ b/src/libGLESv2/entry_points_egl_ext_autogen.cpp
@@ -10,6 +10,7 @@
#include "libGLESv2/entry_points_egl_ext_autogen.h"
+#include "libANGLE/capture/capture_egl_autogen.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/validationEGL_autogen.h"
#include "libGLESv2/egl_ext_stubs_autogen.h"
@@ -38,6 +39,7 @@
dpyPacked, set, get);
SetBlobCacheFuncsANDROID(thread, dpyPacked, set, get);
+ ANGLE_CAPTURE_EGL(SetBlobCacheFuncsANDROID, true, thread, dpyPacked, set, get);
}
// EGL_ANDROID_create_native_client_buffer
@@ -55,7 +57,10 @@
ANGLE_EGL_VALIDATE(thread, CreateNativeClientBufferANDROID, nullptr, EGLClientBuffer,
attrib_listPacked);
- return CreateNativeClientBufferANDROID(thread, attrib_listPacked);
+ EGLClientBuffer returnValue = CreateNativeClientBufferANDROID(thread, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateNativeClientBufferANDROID, true, thread, attrib_listPacked,
+ returnValue);
+ return returnValue;
}
// EGL_ANDROID_get_frame_timestamps
@@ -79,7 +84,11 @@
ANGLE_EGL_VALIDATE(thread, GetCompositorTimingSupportedANDROID, GetDisplayIfValid(dpyPacked),
EGLBoolean, dpyPacked, surfacePacked, namePacked);
- return GetCompositorTimingSupportedANDROID(thread, dpyPacked, surfacePacked, namePacked);
+ EGLBoolean returnValue =
+ GetCompositorTimingSupportedANDROID(thread, dpyPacked, surfacePacked, namePacked);
+ ANGLE_CAPTURE_EGL(GetCompositorTimingSupportedANDROID, true, thread, dpyPacked, surfacePacked,
+ namePacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_GetCompositorTimingANDROID(EGLDisplay dpy,
@@ -105,8 +114,11 @@
ANGLE_EGL_VALIDATE(thread, GetCompositorTimingANDROID, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, numTimestamps, names, values);
- return GetCompositorTimingANDROID(thread, dpyPacked, surfacePacked, numTimestamps, names,
- values);
+ EGLBoolean returnValue =
+ GetCompositorTimingANDROID(thread, dpyPacked, surfacePacked, numTimestamps, names, values);
+ ANGLE_CAPTURE_EGL(GetCompositorTimingANDROID, true, thread, dpyPacked, surfacePacked,
+ numTimestamps, names, values, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_GetNextFrameIdANDROID(EGLDisplay dpy,
@@ -128,7 +140,10 @@
ANGLE_EGL_VALIDATE(thread, GetNextFrameIdANDROID, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, frameId);
- return GetNextFrameIdANDROID(thread, dpyPacked, surfacePacked, frameId);
+ EGLBoolean returnValue = GetNextFrameIdANDROID(thread, dpyPacked, surfacePacked, frameId);
+ ANGLE_CAPTURE_EGL(GetNextFrameIdANDROID, true, thread, dpyPacked, surfacePacked, frameId,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampSupportedANDROID(EGLDisplay dpy,
@@ -151,7 +166,11 @@
ANGLE_EGL_VALIDATE(thread, GetFrameTimestampSupportedANDROID, GetDisplayIfValid(dpyPacked),
EGLBoolean, dpyPacked, surfacePacked, timestampPacked);
- return GetFrameTimestampSupportedANDROID(thread, dpyPacked, surfacePacked, timestampPacked);
+ EGLBoolean returnValue =
+ GetFrameTimestampSupportedANDROID(thread, dpyPacked, surfacePacked, timestampPacked);
+ ANGLE_CAPTURE_EGL(GetFrameTimestampSupportedANDROID, true, thread, dpyPacked, surfacePacked,
+ timestampPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampsANDROID(EGLDisplay dpy,
@@ -179,8 +198,11 @@
ANGLE_EGL_VALIDATE(thread, GetFrameTimestampsANDROID, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, frameId, numTimestamps, timestamps, values);
- return GetFrameTimestampsANDROID(thread, dpyPacked, surfacePacked, frameId, numTimestamps,
- timestamps, values);
+ EGLBoolean returnValue = GetFrameTimestampsANDROID(thread, dpyPacked, surfacePacked, frameId,
+ numTimestamps, timestamps, values);
+ ANGLE_CAPTURE_EGL(GetFrameTimestampsANDROID, true, thread, dpyPacked, surfacePacked, frameId,
+ numTimestamps, timestamps, values, returnValue);
+ return returnValue;
}
// EGL_ANDROID_get_native_client_buffer
@@ -194,7 +216,9 @@
ANGLE_EGL_VALIDATE(thread, GetNativeClientBufferANDROID, nullptr, EGLClientBuffer, buffer);
- return GetNativeClientBufferANDROID(thread, buffer);
+ EGLClientBuffer returnValue = GetNativeClientBufferANDROID(thread, buffer);
+ ANGLE_CAPTURE_EGL(GetNativeClientBufferANDROID, true, thread, buffer, returnValue);
+ return returnValue;
}
// EGL_ANDROID_native_fence_sync
@@ -213,7 +237,9 @@
ANGLE_EGL_VALIDATE(thread, DupNativeFenceFDANDROID, GetDisplayIfValid(dpyPacked), EGLint,
dpyPacked, syncPacked);
- return DupNativeFenceFDANDROID(thread, dpyPacked, syncPacked);
+ EGLint returnValue = DupNativeFenceFDANDROID(thread, dpyPacked, syncPacked);
+ ANGLE_CAPTURE_EGL(DupNativeFenceFDANDROID, true, thread, dpyPacked, syncPacked, returnValue);
+ return returnValue;
}
// EGL_ANDROID_presentation_time
@@ -236,7 +262,10 @@
ANGLE_EGL_VALIDATE(thread, PresentationTimeANDROID, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, time);
- return PresentationTimeANDROID(thread, dpyPacked, surfacePacked, time);
+ EGLBoolean returnValue = PresentationTimeANDROID(thread, dpyPacked, surfacePacked, time);
+ ANGLE_CAPTURE_EGL(PresentationTimeANDROID, true, thread, dpyPacked, surfacePacked, time,
+ returnValue);
+ return returnValue;
}
// EGL_ANGLE_device_creation
@@ -256,7 +285,10 @@
ANGLE_EGL_VALIDATE(thread, CreateDeviceANGLE, nullptr, EGLDeviceEXT, device_type, native_device,
attrib_list);
- return CreateDeviceANGLE(thread, device_type, native_device, attrib_list);
+ EGLDeviceEXT returnValue = CreateDeviceANGLE(thread, device_type, native_device, attrib_list);
+ ANGLE_CAPTURE_EGL(CreateDeviceANGLE, true, thread, device_type, native_device, attrib_list,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_ReleaseDeviceANGLE(EGLDeviceEXT device)
@@ -271,7 +303,9 @@
ANGLE_EGL_VALIDATE(thread, ReleaseDeviceANGLE, nullptr, EGLBoolean, devicePacked);
- return ReleaseDeviceANGLE(thread, devicePacked);
+ EGLBoolean returnValue = ReleaseDeviceANGLE(thread, devicePacked);
+ ANGLE_CAPTURE_EGL(ReleaseDeviceANGLE, true, thread, devicePacked, returnValue);
+ return returnValue;
}
// EGL_ANGLE_feature_control
@@ -289,7 +323,9 @@
ANGLE_EGL_VALIDATE(thread, QueryStringiANGLE, GetDisplayIfValid(dpyPacked), const char *,
dpyPacked, name, index);
- return QueryStringiANGLE(thread, dpyPacked, name, index);
+ const char *returnValue = QueryStringiANGLE(thread, dpyPacked, name, index);
+ ANGLE_CAPTURE_EGL(QueryStringiANGLE, true, thread, dpyPacked, name, index, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribANGLE(EGLDisplay dpy,
@@ -309,7 +345,10 @@
ANGLE_EGL_VALIDATE(thread, QueryDisplayAttribANGLE, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, attribute, value);
- return QueryDisplayAttribANGLE(thread, dpyPacked, attribute, value);
+ EGLBoolean returnValue = QueryDisplayAttribANGLE(thread, dpyPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QueryDisplayAttribANGLE, true, thread, dpyPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
// EGL_ANGLE_metal_shared_event_sync
@@ -328,7 +367,9 @@
ANGLE_EGL_VALIDATE(thread, CopyMetalSharedEventANGLE, GetDisplayIfValid(dpyPacked), void *,
dpyPacked, syncPacked);
- return CopyMetalSharedEventANGLE(thread, dpyPacked, syncPacked);
+ void *returnValue = CopyMetalSharedEventANGLE(thread, dpyPacked, syncPacked);
+ ANGLE_CAPTURE_EGL(CopyMetalSharedEventANGLE, true, thread, dpyPacked, syncPacked, returnValue);
+ return returnValue;
}
// EGL_ANGLE_power_preference
@@ -348,6 +389,7 @@
dpyPacked, ctxPacked);
ReleaseHighPowerGPUANGLE(thread, dpyPacked, ctxPacked);
+ ANGLE_CAPTURE_EGL(ReleaseHighPowerGPUANGLE, true, thread, dpyPacked, ctxPacked);
}
void EGLAPIENTRY EGL_ReacquireHighPowerGPUANGLE(EGLDisplay dpy, EGLContext ctx)
@@ -366,6 +408,7 @@
dpyPacked, ctxPacked);
ReacquireHighPowerGPUANGLE(thread, dpyPacked, ctxPacked);
+ ANGLE_CAPTURE_EGL(ReacquireHighPowerGPUANGLE, true, thread, dpyPacked, ctxPacked);
}
void EGLAPIENTRY EGL_HandleGPUSwitchANGLE(EGLDisplay dpy)
@@ -381,6 +424,7 @@
ANGLE_EGL_VALIDATE_VOID(thread, HandleGPUSwitchANGLE, GetDisplayIfValid(dpyPacked), dpyPacked);
HandleGPUSwitchANGLE(thread, dpyPacked);
+ ANGLE_CAPTURE_EGL(HandleGPUSwitchANGLE, true, thread, dpyPacked);
}
void EGLAPIENTRY EGL_ForceGPUSwitchANGLE(EGLDisplay dpy, EGLint gpuIDHigh, EGLint gpuIDLow)
@@ -398,6 +442,7 @@
gpuIDHigh, gpuIDLow);
ForceGPUSwitchANGLE(thread, dpyPacked, gpuIDHigh, gpuIDLow);
+ ANGLE_CAPTURE_EGL(ForceGPUSwitchANGLE, true, thread, dpyPacked, gpuIDHigh, gpuIDLow);
}
// EGL_ANGLE_prepare_swap_buffers
@@ -421,7 +466,9 @@
ANGLE_EGL_VALIDATE(thread, ProgramCacheGetAttribANGLE, GetDisplayIfValid(dpyPacked), EGLint,
dpyPacked, attrib);
- return ProgramCacheGetAttribANGLE(thread, dpyPacked, attrib);
+ EGLint returnValue = ProgramCacheGetAttribANGLE(thread, dpyPacked, attrib);
+ ANGLE_CAPTURE_EGL(ProgramCacheGetAttribANGLE, true, thread, dpyPacked, attrib, returnValue);
+ return returnValue;
}
void EGLAPIENTRY EGL_ProgramCacheQueryANGLE(EGLDisplay dpy,
@@ -448,6 +495,8 @@
index, key, keysize, binary, binarysize);
ProgramCacheQueryANGLE(thread, dpyPacked, index, key, keysize, binary, binarysize);
+ ANGLE_CAPTURE_EGL(ProgramCacheQueryANGLE, true, thread, dpyPacked, index, key, keysize, binary,
+ binarysize);
}
void EGLAPIENTRY EGL_ProgramCachePopulateANGLE(EGLDisplay dpy,
@@ -471,6 +520,8 @@
dpyPacked, key, keysize, binary, binarysize);
ProgramCachePopulateANGLE(thread, dpyPacked, key, keysize, binary, binarysize);
+ ANGLE_CAPTURE_EGL(ProgramCachePopulateANGLE, true, thread, dpyPacked, key, keysize, binary,
+ binarysize);
}
EGLint EGLAPIENTRY EGL_ProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limit, EGLint mode)
@@ -487,7 +538,9 @@
ANGLE_EGL_VALIDATE(thread, ProgramCacheResizeANGLE, GetDisplayIfValid(dpyPacked), EGLint,
dpyPacked, limit, mode);
- return ProgramCacheResizeANGLE(thread, dpyPacked, limit, mode);
+ EGLint returnValue = ProgramCacheResizeANGLE(thread, dpyPacked, limit, mode);
+ ANGLE_CAPTURE_EGL(ProgramCacheResizeANGLE, true, thread, dpyPacked, limit, mode, returnValue);
+ return returnValue;
}
// EGL_ANGLE_query_surface_pointer
@@ -512,7 +565,11 @@
ANGLE_EGL_VALIDATE(thread, QuerySurfacePointerANGLE, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, attribute, value);
- return QuerySurfacePointerANGLE(thread, dpyPacked, surfacePacked, attribute, value);
+ EGLBoolean returnValue =
+ QuerySurfacePointerANGLE(thread, dpyPacked, surfacePacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QuerySurfacePointerANGLE, true, thread, dpyPacked, surfacePacked, attribute,
+ value, returnValue);
+ return returnValue;
}
// EGL_ANGLE_stream_producer_d3d_texture
@@ -536,7 +593,11 @@
ANGLE_EGL_VALIDATE(thread, CreateStreamProducerD3DTextureANGLE, GetDisplayIfValid(dpyPacked),
EGLBoolean, dpyPacked, streamPacked, attrib_listPacked);
- return CreateStreamProducerD3DTextureANGLE(thread, dpyPacked, streamPacked, attrib_listPacked);
+ EGLBoolean returnValue =
+ CreateStreamProducerD3DTextureANGLE(thread, dpyPacked, streamPacked, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateStreamProducerD3DTextureANGLE, true, thread, dpyPacked, streamPacked,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_StreamPostD3DTextureANGLE(EGLDisplay dpy,
@@ -560,7 +621,11 @@
ANGLE_EGL_VALIDATE(thread, StreamPostD3DTextureANGLE, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, streamPacked, texture, attrib_listPacked);
- return StreamPostD3DTextureANGLE(thread, dpyPacked, streamPacked, texture, attrib_listPacked);
+ EGLBoolean returnValue =
+ StreamPostD3DTextureANGLE(thread, dpyPacked, streamPacked, texture, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(StreamPostD3DTextureANGLE, true, thread, dpyPacked, streamPacked, texture,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
// EGL_ANGLE_swap_with_frame_token
@@ -583,7 +648,11 @@
ANGLE_EGL_VALIDATE(thread, SwapBuffersWithFrameTokenANGLE, GetDisplayIfValid(dpyPacked),
EGLBoolean, dpyPacked, surfacePacked, frametoken);
- return SwapBuffersWithFrameTokenANGLE(thread, dpyPacked, surfacePacked, frametoken);
+ EGLBoolean returnValue =
+ SwapBuffersWithFrameTokenANGLE(thread, dpyPacked, surfacePacked, frametoken);
+ ANGLE_CAPTURE_EGL(SwapBuffersWithFrameTokenANGLE, true, thread, dpyPacked, surfacePacked,
+ frametoken, returnValue);
+ return returnValue;
}
// EGL_ANGLE_sync_control_rate
@@ -608,7 +677,11 @@
ANGLE_EGL_VALIDATE(thread, GetMscRateANGLE, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked, numerator, denominator);
- return GetMscRateANGLE(thread, dpyPacked, surfacePacked, numerator, denominator);
+ EGLBoolean returnValue =
+ GetMscRateANGLE(thread, dpyPacked, surfacePacked, numerator, denominator);
+ ANGLE_CAPTURE_EGL(GetMscRateANGLE, true, thread, dpyPacked, surfacePacked, numerator,
+ denominator, returnValue);
+ return returnValue;
}
// EGL_ANGLE_vulkan_image
@@ -633,7 +706,11 @@
ANGLE_EGL_VALIDATE(thread, ExportVkImageANGLE, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, imagePacked, vk_image, vk_image_create_info);
- return ExportVkImageANGLE(thread, dpyPacked, imagePacked, vk_image, vk_image_create_info);
+ EGLBoolean returnValue =
+ ExportVkImageANGLE(thread, dpyPacked, imagePacked, vk_image, vk_image_create_info);
+ ANGLE_CAPTURE_EGL(ExportVkImageANGLE, true, thread, dpyPacked, imagePacked, vk_image,
+ vk_image_create_info, returnValue);
+ return returnValue;
}
// EGL_CHROMIUM_sync_control
@@ -659,7 +736,10 @@
ANGLE_EGL_VALIDATE(thread, GetSyncValuesCHROMIUM, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, ust, msc, sbc);
- return GetSyncValuesCHROMIUM(thread, dpyPacked, surfacePacked, ust, msc, sbc);
+ EGLBoolean returnValue = GetSyncValuesCHROMIUM(thread, dpyPacked, surfacePacked, ust, msc, sbc);
+ ANGLE_CAPTURE_EGL(GetSyncValuesCHROMIUM, true, thread, dpyPacked, surfacePacked, ust, msc, sbc,
+ returnValue);
+ return returnValue;
}
// EGL_EXT_device_query
@@ -680,7 +760,10 @@
ANGLE_EGL_VALIDATE(thread, QueryDeviceAttribEXT, nullptr, EGLBoolean, devicePacked, attribute,
value);
- return QueryDeviceAttribEXT(thread, devicePacked, attribute, value);
+ EGLBoolean returnValue = QueryDeviceAttribEXT(thread, devicePacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QueryDeviceAttribEXT, true, thread, devicePacked, attribute, value,
+ returnValue);
+ return returnValue;
}
const char *EGLAPIENTRY EGL_QueryDeviceStringEXT(EGLDeviceEXT device, EGLint name)
@@ -696,7 +779,9 @@
ANGLE_EGL_VALIDATE(thread, QueryDeviceStringEXT, nullptr, const char *, devicePacked, name);
- return QueryDeviceStringEXT(thread, devicePacked, name);
+ const char *returnValue = QueryDeviceStringEXT(thread, devicePacked, name);
+ ANGLE_CAPTURE_EGL(QueryDeviceStringEXT, true, thread, devicePacked, name, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribEXT(EGLDisplay dpy, EGLint attribute, EGLAttrib *value)
@@ -714,7 +799,10 @@
ANGLE_EGL_VALIDATE(thread, QueryDisplayAttribEXT, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, attribute, value);
- return QueryDisplayAttribEXT(thread, dpyPacked, attribute, value);
+ EGLBoolean returnValue = QueryDisplayAttribEXT(thread, dpyPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QueryDisplayAttribEXT, true, thread, dpyPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
// EGL_EXT_image_dma_buf_import_modifiers
@@ -737,7 +825,11 @@
ANGLE_EGL_VALIDATE(thread, QueryDmaBufFormatsEXT, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, max_formats, formats, num_formats);
- return QueryDmaBufFormatsEXT(thread, dpyPacked, max_formats, formats, num_formats);
+ EGLBoolean returnValue =
+ QueryDmaBufFormatsEXT(thread, dpyPacked, max_formats, formats, num_formats);
+ ANGLE_CAPTURE_EGL(QueryDmaBufFormatsEXT, true, thread, dpyPacked, max_formats, formats,
+ num_formats, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QueryDmaBufModifiersEXT(EGLDisplay dpy,
@@ -762,8 +854,11 @@
ANGLE_EGL_VALIDATE(thread, QueryDmaBufModifiersEXT, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, format, max_modifiers, modifiers, external_only, num_modifiers);
- return QueryDmaBufModifiersEXT(thread, dpyPacked, format, max_modifiers, modifiers,
- external_only, num_modifiers);
+ EGLBoolean returnValue = QueryDmaBufModifiersEXT(thread, dpyPacked, format, max_modifiers,
+ modifiers, external_only, num_modifiers);
+ ANGLE_CAPTURE_EGL(QueryDmaBufModifiersEXT, true, thread, dpyPacked, format, max_modifiers,
+ modifiers, external_only, num_modifiers, returnValue);
+ return returnValue;
}
// EGL_EXT_platform_base
@@ -788,8 +883,11 @@
ANGLE_EGL_VALIDATE(thread, CreatePlatformPixmapSurfaceEXT, GetDisplayIfValid(dpyPacked),
EGLSurface, dpyPacked, configPacked, native_pixmap, attrib_listPacked);
- return CreatePlatformPixmapSurfaceEXT(thread, dpyPacked, configPacked, native_pixmap,
- attrib_listPacked);
+ EGLSurface returnValue = CreatePlatformPixmapSurfaceEXT(thread, dpyPacked, configPacked,
+ native_pixmap, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreatePlatformPixmapSurfaceEXT, true, thread, dpyPacked, configPacked,
+ native_pixmap, attrib_listPacked, returnValue);
+ return returnValue;
}
EGLSurface EGLAPIENTRY EGL_CreatePlatformWindowSurfaceEXT(EGLDisplay dpy,
@@ -813,8 +911,11 @@
ANGLE_EGL_VALIDATE(thread, CreatePlatformWindowSurfaceEXT, GetDisplayIfValid(dpyPacked),
EGLSurface, dpyPacked, configPacked, native_window, attrib_listPacked);
- return CreatePlatformWindowSurfaceEXT(thread, dpyPacked, configPacked, native_window,
- attrib_listPacked);
+ EGLSurface returnValue = CreatePlatformWindowSurfaceEXT(thread, dpyPacked, configPacked,
+ native_window, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreatePlatformWindowSurfaceEXT, true, thread, dpyPacked, configPacked,
+ native_window, attrib_listPacked, returnValue);
+ return returnValue;
}
EGLDisplay EGLAPIENTRY EGL_GetPlatformDisplayEXT(EGLenum platform,
@@ -835,7 +936,11 @@
ANGLE_EGL_VALIDATE(thread, GetPlatformDisplayEXT, nullptr, EGLDisplay, platform, native_display,
attrib_listPacked);
- return GetPlatformDisplayEXT(thread, platform, native_display, attrib_listPacked);
+ EGLDisplay returnValue =
+ GetPlatformDisplayEXT(thread, platform, native_display, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(GetPlatformDisplayEXT, true, thread, platform, native_display,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
// EGL_KHR_debug
@@ -855,7 +960,10 @@
ANGLE_EGL_VALIDATE(thread, DebugMessageControlKHR, nullptr, EGLint, callback,
attrib_listPacked);
- return DebugMessageControlKHR(thread, callback, attrib_listPacked);
+ EGLint returnValue = DebugMessageControlKHR(thread, callback, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(DebugMessageControlKHR, true, thread, callback, attrib_listPacked,
+ returnValue);
+ return returnValue;
}
EGLint EGLAPIENTRY EGL_LabelObjectKHR(EGLDisplay display,
@@ -878,7 +986,10 @@
ANGLE_EGL_VALIDATE(thread, LabelObjectKHR, GetDisplayIfValid(displayPacked), EGLint,
displayPacked, objectTypePacked, object, label);
- return LabelObjectKHR(thread, displayPacked, objectTypePacked, object, label);
+ EGLint returnValue = LabelObjectKHR(thread, displayPacked, objectTypePacked, object, label);
+ ANGLE_CAPTURE_EGL(LabelObjectKHR, true, thread, displayPacked, objectTypePacked, object, label,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QueryDebugKHR(EGLint attribute, EGLAttrib *value)
@@ -892,7 +1003,9 @@
ANGLE_EGL_VALIDATE(thread, QueryDebugKHR, nullptr, EGLBoolean, attribute, value);
- return QueryDebugKHR(thread, attribute, value);
+ EGLBoolean returnValue = QueryDebugKHR(thread, attribute, value);
+ ANGLE_CAPTURE_EGL(QueryDebugKHR, true, thread, attribute, value, returnValue);
+ return returnValue;
}
// EGL_KHR_fence_sync
@@ -915,7 +1028,10 @@
ANGLE_EGL_VALIDATE(thread, ClientWaitSyncKHR, GetDisplayIfValid(dpyPacked), EGLint, dpyPacked,
syncPacked, flags, timeout);
- return ClientWaitSyncKHR(thread, dpyPacked, syncPacked, flags, timeout);
+ EGLint returnValue = ClientWaitSyncKHR(thread, dpyPacked, syncPacked, flags, timeout);
+ ANGLE_CAPTURE_EGL(ClientWaitSyncKHR, true, thread, dpyPacked, syncPacked, flags, timeout,
+ returnValue);
+ return returnValue;
}
EGLSyncKHR EGLAPIENTRY EGL_CreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
@@ -934,7 +1050,9 @@
ANGLE_EGL_VALIDATE(thread, CreateSyncKHR, GetDisplayIfValid(dpyPacked), EGLSyncKHR, dpyPacked,
type, attrib_listPacked);
- return CreateSyncKHR(thread, dpyPacked, type, attrib_listPacked);
+ EGLSyncKHR returnValue = CreateSyncKHR(thread, dpyPacked, type, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateSyncKHR, true, thread, dpyPacked, type, attrib_listPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
@@ -952,7 +1070,9 @@
ANGLE_EGL_VALIDATE(thread, DestroySyncKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
syncPacked);
- return DestroySyncKHR(thread, dpyPacked, syncPacked);
+ EGLBoolean returnValue = DestroySyncKHR(thread, dpyPacked, syncPacked);
+ ANGLE_CAPTURE_EGL(DestroySyncKHR, true, thread, dpyPacked, syncPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_GetSyncAttribKHR(EGLDisplay dpy,
@@ -975,7 +1095,10 @@
ANGLE_EGL_VALIDATE(thread, GetSyncAttribKHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, syncPacked, attribute, value);
- return GetSyncAttribKHR(thread, dpyPacked, syncPacked, attribute, value);
+ EGLBoolean returnValue = GetSyncAttribKHR(thread, dpyPacked, syncPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(GetSyncAttribKHR, true, thread, dpyPacked, syncPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
// EGL_KHR_image
@@ -1001,7 +1124,11 @@
ANGLE_EGL_VALIDATE(thread, CreateImageKHR, GetDisplayIfValid(dpyPacked), EGLImageKHR, dpyPacked,
ctxPacked, target, buffer, attrib_listPacked);
- return CreateImageKHR(thread, dpyPacked, ctxPacked, target, buffer, attrib_listPacked);
+ EGLImageKHR returnValue =
+ CreateImageKHR(thread, dpyPacked, ctxPacked, target, buffer, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateImageKHR, true, thread, dpyPacked, ctxPacked, target, buffer,
+ attrib_listPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
@@ -1019,7 +1146,9 @@
ANGLE_EGL_VALIDATE(thread, DestroyImageKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
imagePacked);
- return DestroyImageKHR(thread, dpyPacked, imagePacked);
+ EGLBoolean returnValue = DestroyImageKHR(thread, dpyPacked, imagePacked);
+ ANGLE_CAPTURE_EGL(DestroyImageKHR, true, thread, dpyPacked, imagePacked, returnValue);
+ return returnValue;
}
// EGL_KHR_lock_surface3
@@ -1044,7 +1173,10 @@
ANGLE_EGL_VALIDATE(thread, LockSurfaceKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked, attrib_listPacked);
- return LockSurfaceKHR(thread, dpyPacked, surfacePacked, attrib_listPacked);
+ EGLBoolean returnValue = LockSurfaceKHR(thread, dpyPacked, surfacePacked, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(LockSurfaceKHR, true, thread, dpyPacked, surfacePacked, attrib_listPacked,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QuerySurface64KHR(EGLDisplay dpy,
@@ -1068,7 +1200,10 @@
ANGLE_EGL_VALIDATE(thread, QuerySurface64KHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, attribute, value);
- return QuerySurface64KHR(thread, dpyPacked, surfacePacked, attribute, value);
+ EGLBoolean returnValue = QuerySurface64KHR(thread, dpyPacked, surfacePacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QuerySurface64KHR, true, thread, dpyPacked, surfacePacked, attribute, value,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_UnlockSurfaceKHR(EGLDisplay dpy, EGLSurface surface)
@@ -1087,7 +1222,9 @@
ANGLE_EGL_VALIDATE(thread, UnlockSurfaceKHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked);
- return UnlockSurfaceKHR(thread, dpyPacked, surfacePacked);
+ EGLBoolean returnValue = UnlockSurfaceKHR(thread, dpyPacked, surfacePacked);
+ ANGLE_CAPTURE_EGL(UnlockSurfaceKHR, true, thread, dpyPacked, surfacePacked, returnValue);
+ return returnValue;
}
// EGL_KHR_partial_update
@@ -1112,7 +1249,10 @@
ANGLE_EGL_VALIDATE(thread, SetDamageRegionKHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, rects, n_rects);
- return SetDamageRegionKHR(thread, dpyPacked, surfacePacked, rects, n_rects);
+ EGLBoolean returnValue = SetDamageRegionKHR(thread, dpyPacked, surfacePacked, rects, n_rects);
+ ANGLE_CAPTURE_EGL(SetDamageRegionKHR, true, thread, dpyPacked, surfacePacked, rects, n_rects,
+ returnValue);
+ return returnValue;
}
// EGL_KHR_reusable_sync
@@ -1131,7 +1271,9 @@
ANGLE_EGL_VALIDATE(thread, SignalSyncKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
syncPacked, mode);
- return SignalSyncKHR(thread, dpyPacked, syncPacked, mode);
+ EGLBoolean returnValue = SignalSyncKHR(thread, dpyPacked, syncPacked, mode);
+ ANGLE_CAPTURE_EGL(SignalSyncKHR, true, thread, dpyPacked, syncPacked, mode, returnValue);
+ return returnValue;
}
// ClientWaitSyncKHR is already defined.
@@ -1158,7 +1300,9 @@
ANGLE_EGL_VALIDATE(thread, CreateStreamKHR, GetDisplayIfValid(dpyPacked), EGLStreamKHR,
dpyPacked, attrib_listPacked);
- return CreateStreamKHR(thread, dpyPacked, attrib_listPacked);
+ EGLStreamKHR returnValue = CreateStreamKHR(thread, dpyPacked, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(CreateStreamKHR, true, thread, dpyPacked, attrib_listPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_DestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream)
@@ -1176,7 +1320,9 @@
ANGLE_EGL_VALIDATE(thread, DestroyStreamKHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, streamPacked);
- return DestroyStreamKHR(thread, dpyPacked, streamPacked);
+ EGLBoolean returnValue = DestroyStreamKHR(thread, dpyPacked, streamPacked);
+ ANGLE_CAPTURE_EGL(DestroyStreamKHR, true, thread, dpyPacked, streamPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QueryStreamKHR(EGLDisplay dpy,
@@ -1199,7 +1345,10 @@
ANGLE_EGL_VALIDATE(thread, QueryStreamKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
streamPacked, attribute, value);
- return QueryStreamKHR(thread, dpyPacked, streamPacked, attribute, value);
+ EGLBoolean returnValue = QueryStreamKHR(thread, dpyPacked, streamPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QueryStreamKHR, true, thread, dpyPacked, streamPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_QueryStreamu64KHR(EGLDisplay dpy,
@@ -1222,7 +1371,10 @@
ANGLE_EGL_VALIDATE(thread, QueryStreamu64KHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, streamPacked, attribute, value);
- return QueryStreamu64KHR(thread, dpyPacked, streamPacked, attribute, value);
+ EGLBoolean returnValue = QueryStreamu64KHR(thread, dpyPacked, streamPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(QueryStreamu64KHR, true, thread, dpyPacked, streamPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_StreamAttribKHR(EGLDisplay dpy,
@@ -1244,7 +1396,10 @@
ANGLE_EGL_VALIDATE(thread, StreamAttribKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
streamPacked, attribute, value);
- return StreamAttribKHR(thread, dpyPacked, streamPacked, attribute, value);
+ EGLBoolean returnValue = StreamAttribKHR(thread, dpyPacked, streamPacked, attribute, value);
+ ANGLE_CAPTURE_EGL(StreamAttribKHR, true, thread, dpyPacked, streamPacked, attribute, value,
+ returnValue);
+ return returnValue;
}
// EGL_KHR_stream_consumer_gltexture
@@ -1263,7 +1418,9 @@
ANGLE_EGL_VALIDATE(thread, StreamConsumerAcquireKHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, streamPacked);
- return StreamConsumerAcquireKHR(thread, dpyPacked, streamPacked);
+ EGLBoolean returnValue = StreamConsumerAcquireKHR(thread, dpyPacked, streamPacked);
+ ANGLE_CAPTURE_EGL(StreamConsumerAcquireKHR, true, thread, dpyPacked, streamPacked, returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_StreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EGLStreamKHR stream)
@@ -1282,7 +1439,10 @@
ANGLE_EGL_VALIDATE(thread, StreamConsumerGLTextureExternalKHR, GetDisplayIfValid(dpyPacked),
EGLBoolean, dpyPacked, streamPacked);
- return StreamConsumerGLTextureExternalKHR(thread, dpyPacked, streamPacked);
+ EGLBoolean returnValue = StreamConsumerGLTextureExternalKHR(thread, dpyPacked, streamPacked);
+ ANGLE_CAPTURE_EGL(StreamConsumerGLTextureExternalKHR, true, thread, dpyPacked, streamPacked,
+ returnValue);
+ return returnValue;
}
EGLBoolean EGLAPIENTRY EGL_StreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream)
@@ -1300,7 +1460,9 @@
ANGLE_EGL_VALIDATE(thread, StreamConsumerReleaseKHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, streamPacked);
- return StreamConsumerReleaseKHR(thread, dpyPacked, streamPacked);
+ EGLBoolean returnValue = StreamConsumerReleaseKHR(thread, dpyPacked, streamPacked);
+ ANGLE_CAPTURE_EGL(StreamConsumerReleaseKHR, true, thread, dpyPacked, streamPacked, returnValue);
+ return returnValue;
}
// EGL_KHR_swap_buffers_with_damage
@@ -1325,7 +1487,11 @@
ANGLE_EGL_VALIDATE(thread, SwapBuffersWithDamageKHR, GetDisplayIfValid(dpyPacked), EGLBoolean,
dpyPacked, surfacePacked, rects, n_rects);
- return SwapBuffersWithDamageKHR(thread, dpyPacked, surfacePacked, rects, n_rects);
+ EGLBoolean returnValue =
+ SwapBuffersWithDamageKHR(thread, dpyPacked, surfacePacked, rects, n_rects);
+ ANGLE_CAPTURE_EGL(SwapBuffersWithDamageKHR, true, thread, dpyPacked, surfacePacked, rects,
+ n_rects, returnValue);
+ return returnValue;
}
// EGL_KHR_wait_sync
@@ -1344,7 +1510,9 @@
ANGLE_EGL_VALIDATE(thread, WaitSyncKHR, GetDisplayIfValid(dpyPacked), EGLint, dpyPacked,
syncPacked, flags);
- return WaitSyncKHR(thread, dpyPacked, syncPacked, flags);
+ EGLint returnValue = WaitSyncKHR(thread, dpyPacked, syncPacked, flags);
+ ANGLE_CAPTURE_EGL(WaitSyncKHR, true, thread, dpyPacked, syncPacked, flags, returnValue);
+ return returnValue;
}
// EGL_NV_post_sub_buffer
@@ -1371,7 +1539,10 @@
ANGLE_EGL_VALIDATE(thread, PostSubBufferNV, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked,
surfacePacked, x, y, width, height);
- return PostSubBufferNV(thread, dpyPacked, surfacePacked, x, y, width, height);
+ EGLBoolean returnValue = PostSubBufferNV(thread, dpyPacked, surfacePacked, x, y, width, height);
+ ANGLE_CAPTURE_EGL(PostSubBufferNV, true, thread, dpyPacked, surfacePacked, x, y, width, height,
+ returnValue);
+ return returnValue;
}
// EGL_NV_stream_consumer_gltexture_yuv
@@ -1396,8 +1567,11 @@
GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, streamPacked,
attrib_listPacked);
- return StreamConsumerGLTextureExternalAttribsNV(thread, dpyPacked, streamPacked,
- attrib_listPacked);
+ EGLBoolean returnValue = StreamConsumerGLTextureExternalAttribsNV(
+ thread, dpyPacked, streamPacked, attrib_listPacked);
+ ANGLE_CAPTURE_EGL(StreamConsumerGLTextureExternalAttribsNV, true, thread, dpyPacked,
+ streamPacked, attrib_listPacked, returnValue);
+ return returnValue;
}
} // extern "C"