Commit 98035e11 by Jamie Madill Committed by Commit Bot

Capture/Replay: Split into separate shared libaries.

This will produce several smaller shared libs rather than one very large one. Involves moving the trace loader to its own shared module as well. Because the traces didn't have export labels on most of the affected functions I had to use a "force include" argument on the compiler. We can remove this once we re-capture. This is a first step towards testing one trace at a time on an Android device. Includes a complete set of new regenerated traces. Bug: angleproject:5133 Change-Id: If984de34af21fce48b0832401dbe5aa4b002ce95 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2506199 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com> Reviewed-by: 's avatarIan Elliott <ianelliott@google.com>
parent 9828732b
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"scripts/egl_angle_ext.xml": "scripts/egl_angle_ext.xml":
"087d6a3996a91fbb0b664cac57c50c4c", "087d6a3996a91fbb0b664cac57c50c4c",
"scripts/generate_loader.py": "scripts/generate_loader.py":
"5533a717e679c558be6985a5cb016ad2", "af65e1f4863c5f9c0cad0196c645701b",
"scripts/gl.xml": "scripts/gl.xml":
"e74a595068cbdd6064300be1e71b7cc9", "e74a595068cbdd6064300be1e71b7cc9",
"scripts/gl_angle_ext.xml": "scripts/gl_angle_ext.xml":
...@@ -18,13 +18,13 @@ ...@@ -18,13 +18,13 @@
"src/libEGL/egl_loader_autogen.h": "src/libEGL/egl_loader_autogen.h":
"fcf59fce6301d6396eec2100706e50a0", "fcf59fce6301d6396eec2100706e50a0",
"src/tests/restricted_traces/trace_egl_loader_autogen.cpp": "src/tests/restricted_traces/trace_egl_loader_autogen.cpp":
"f3a486f33c29e2494bced0f5492fdfe5", "84c56bd2796e416d8186dd0111ac46d1",
"src/tests/restricted_traces/trace_egl_loader_autogen.h": "src/tests/restricted_traces/trace_egl_loader_autogen.h":
"412e534d183cf5568cee182edae34511", "6011fd4bc1c6977ae10c262cfe534691",
"src/tests/restricted_traces/trace_gles_loader_autogen.cpp": "src/tests/restricted_traces/trace_gles_loader_autogen.cpp":
"0fb2989441e3be0ea82bde2a9e7583f1", "8342a4a19cd45bfe6c69acbcd2df6220",
"src/tests/restricted_traces/trace_gles_loader_autogen.h": "src/tests/restricted_traces/trace_gles_loader_autogen.h":
"07f90d8c55c4a6d827becfa65ed09879", "ea46592212ddda7eafb3c59ebb4487d6",
"util/egl_loader_autogen.cpp": "util/egl_loader_autogen.cpp":
"5898c23071036a307cfa74a82aeaefb3", "5898c23071036a307cfa74a82aeaefb3",
"util/egl_loader_autogen.h": "util/egl_loader_autogen.h":
......
...@@ -2,51 +2,51 @@ ...@@ -2,51 +2,51 @@
"src/tests/restricted_traces/.gitignore": "src/tests/restricted_traces/.gitignore":
"737ec95dcd9772d5c3429da279f0e008", "737ec95dcd9772d5c3429da279f0e008",
"src/tests/restricted_traces/angry_birds_2_1500.tar.gz.sha1": "src/tests/restricted_traces/angry_birds_2_1500.tar.gz.sha1":
"44fc5437c4a84012e338b3da4b6fc28a", "2b5d6505d6a8b6f3bbfbad2c8405a89d",
"src/tests/restricted_traces/arena_of_valor.tar.gz.sha1": "src/tests/restricted_traces/arena_of_valor.tar.gz.sha1":
"d271919091590d490ea68b9223b7eb06", "b775f6c42b1a09065c9c19660fb82113",
"src/tests/restricted_traces/brawl_stars.tar.gz.sha1": "src/tests/restricted_traces/brawl_stars.tar.gz.sha1":
"a6b023409f36ca174b890dbeb842da7e", "8b1cf8ebd8a1099b4d298bb3b446e8bd",
"src/tests/restricted_traces/candy_crush_500.tar.gz.sha1": "src/tests/restricted_traces/candy_crush_500.tar.gz.sha1":
"55de8a400b02e570ff2380436bda269d", "b0772c8cf2d3d49e49fea9fe7cff0446",
"src/tests/restricted_traces/clash_of_clans.tar.gz.sha1": "src/tests/restricted_traces/clash_of_clans.tar.gz.sha1":
"3005ccf17961e0fd2adb2ea43329a26a", "4e3190f8b3cdded405172d6ef1fa7fa3",
"src/tests/restricted_traces/cod_mobile.tar.gz.sha1": "src/tests/restricted_traces/cod_mobile.tar.gz.sha1":
"dffd3bed0d0e53481f43b414309bf152", "80a697dd447e4aae4fefd3627f663c4f",
"src/tests/restricted_traces/dragon_ball_legends.tar.gz.sha1": "src/tests/restricted_traces/dragon_ball_legends.tar.gz.sha1":
"dc20d295d45ab85cd15bed6065d7a13a", "baabf75c08e7417bd2194e6d69bfce71",
"src/tests/restricted_traces/egypt_1500.tar.gz.sha1": "src/tests/restricted_traces/egypt_1500.tar.gz.sha1":
"1d80caa37b937f83c95cd053b1bdd4ac", "0d569cbab0adf4df1027f671c65f7bff",
"src/tests/restricted_traces/fate_grand_order.tar.gz.sha1": "src/tests/restricted_traces/fate_grand_order.tar.gz.sha1":
"df7f111c1f4e30767a4c33eb190600b8", "091d008d6d38d2cc8a6d31e3be417063",
"src/tests/restricted_traces/free_fire.tar.gz.sha1": "src/tests/restricted_traces/free_fire.tar.gz.sha1":
"a95efee5e5c6d85bac2d8c2ab09dc34c", "a4e7aba54fb48524bb4f3022623bc7cd",
"src/tests/restricted_traces/gen_restricted_traces.py": "src/tests/restricted_traces/gen_restricted_traces.py":
"5c95022fc335f608f8bc9daf305c8bf3", "eccb9514e9606eb56b24cf57598e596c",
"src/tests/restricted_traces/kartrider_rush.tar.gz.sha1": "src/tests/restricted_traces/kartrider_rush.tar.gz.sha1":
"64079b7406be62a9b04062b8790f3313", "c11aab56dcaba570a1993c1f8ebe4668",
"src/tests/restricted_traces/manhattan_10.tar.gz.sha1": "src/tests/restricted_traces/manhattan_10.tar.gz.sha1":
"752781119592a190cc02b773adf38fc3", "f24ffb3d8150ea69b71df0e391af2fed",
"src/tests/restricted_traces/marvel_contest_of_champions.tar.gz.sha1": "src/tests/restricted_traces/marvel_contest_of_champions.tar.gz.sha1":
"d95d5167639b7b72ae9ae51f77b70f7e", "80cf00c9a348c2ea95d538e9257375dd",
"src/tests/restricted_traces/mobile_legends.tar.gz.sha1": "src/tests/restricted_traces/mobile_legends.tar.gz.sha1":
"a3fe48a3acc2165a7fb3eb6cf01b441f", "5da0b64ab06225a7e85b8a0bb8275b52",
"src/tests/restricted_traces/nba2k20_800.tar.gz.sha1": "src/tests/restricted_traces/nba2k20_800.tar.gz.sha1":
"03df0dcf41c18bc59edfc0b088ca4a87", "9a97bffd4c6c156a14308bb1c6f50a7e",
"src/tests/restricted_traces/pubg_mobile_lite.tar.gz.sha1": "src/tests/restricted_traces/pubg_mobile_lite.tar.gz.sha1":
"07c3f467603d4d00bdae2bfed121da8d", "6a77372489ee4b43639b684a39ab8d71",
"src/tests/restricted_traces/restricted_traces.json": "src/tests/restricted_traces/restricted_traces.json":
"2e5e53faaaffae07d60240b3623ab56b", "2e5e53faaaffae07d60240b3623ab56b",
"src/tests/restricted_traces/restricted_traces_autogen.cpp": "src/tests/restricted_traces/restricted_traces_autogen.cpp":
"43a0970260ded29d5fd80c5983ea3cdd", "59642dd94d215e99dc6a4218377e53ce",
"src/tests/restricted_traces/restricted_traces_autogen.gni": "src/tests/restricted_traces/restricted_traces_autogen.gni":
"34974304d5e27cbd20d8d7f32ba3be89", "78f0f06f56b09719f72ce449f8ea86f0",
"src/tests/restricted_traces/restricted_traces_autogen.h": "src/tests/restricted_traces/restricted_traces_autogen.h":
"51f08881bc37a651613c169f45559b93", "f4b0de9cf67a9366564fd29aebb945da",
"src/tests/restricted_traces/temple_run_300.tar.gz.sha1": "src/tests/restricted_traces/temple_run_300.tar.gz.sha1":
"77475b0186ee0380eeb9db47433d0457", "0a08ce3df88cb358ccac3ac63ba04955",
"src/tests/restricted_traces/trex_200.tar.gz.sha1": "src/tests/restricted_traces/trex_200.tar.gz.sha1":
"ca2d91a527f4a4317f944afc96c35268", "c57dc6e28b1eaa1b3bb5dae54847966a",
"src/tests/restricted_traces/world_of_tanks_blitz.tar.gz.sha1": "src/tests/restricted_traces/world_of_tanks_blitz.tar.gz.sha1":
"c72106f9999f5eff8916a0c699072687" "6cba9bb8542b71443f107952faddbe64"
} }
\ No newline at end of file
...@@ -228,7 +228,7 @@ def gen_util_gles_and_egl_loaders(): ...@@ -228,7 +228,7 @@ def gen_util_gles_and_egl_loaders():
def gen_trace_gles_and_egl_loaders(): def gen_trace_gles_and_egl_loaders():
path = os.path.join("..", "src", "tests", "restricted_traces") path = os.path.join("..", "src", "tests", "restricted_traces")
export = "ANGLE_TRACE_EXPORT " export = "ANGLE_TRACE_LOADER_EXPORT "
lib = "ANGLE_RESTRICTED_TRACES" lib = "ANGLE_RESTRICTED_TRACES"
gen_gles_loader(trace_gles_preamble, path, lib, export, "t_", "trace_") gen_gles_loader(trace_gles_preamble, path, lib, export, "t_", "trace_")
gen_egl_loader(trace_egl_preamble, path, lib, export, "t_", "trace_") gen_egl_loader(trace_egl_preamble, path, lib, export, "t_", "trace_")
......
...@@ -6,66 +6,86 @@ ...@@ -6,66 +6,86 @@
import("../../../gni/angle.gni") import("../../../gni/angle.gni")
angle_shared_library("angle_restricted_traces") { angle_shared_library("angle_restricted_trace_loader") {
testonly = true
# Imports "angle_restricted_traces"
import("restricted_traces_autogen.gni")
sources = [ sources = [
"angle_trace_gl.h",
"restricted_traces_autogen.cpp",
"restricted_traces_autogen.h", "restricted_traces_autogen.h",
"trace_egl_loader_autogen.cpp", "trace_egl_loader_autogen.cpp",
"trace_egl_loader_autogen.h", "trace_egl_loader_autogen.h",
"trace_gles_loader_autogen.cpp", "trace_gles_loader_autogen.cpp",
"trace_gles_loader_autogen.h", "trace_gles_loader_autogen.h",
] ]
defines = [ "ANGLE_TRACE_LOADER_IMPLEMENTATION" ]
deps = [ "$angle_root:includes" ]
}
data = [] # Imports "angle_restricted_traces"
defines = [ "ANGLE_TRACE_IMPLEMENTATION" ] import("restricted_traces_autogen.gni")
inputs = [] _traces = []
include_dirs = [ "." ]
foreach(_test_info, angle_restricted_traces) { foreach(_test_info, angle_restricted_traces) {
_test_and_ctx = [] # Empty out the "_test_and_ctx" list so GN doesn't complain about replacing non-empty list.
_test_and_ctx = string_split(_test_info) _test_and_ctx = []
_test = _test_and_ctx[0] _test_and_ctx = string_split(_test_info)
_ctx = _test_and_ctx[1] _test = _test_and_ctx[0]
_test_dir = "${_test}" _ctx = _test_and_ctx[1]
_test_ctx = "${_test_dir}/${_test}_capture_context${_ctx}" _test_dir = "${_test}"
_test_ctx = "${_test_dir}/${_test}_capture_context${_ctx}"
_target = "angle_restricted_trace_" + _test
_traces += [ ":$_target" ]
angle_shared_library(_target) {
testonly = true
# Similar to capture replay sample, use the file index for sources # Similar to capture replay sample, use the file index for sources
sources += rebase_path(read_file("${_test_ctx}_files.txt", "list lines"), sources = [ "angle_trace_gl.h" ] +
".", rebase_path(read_file("${_test_ctx}_files.txt", "list lines"),
"${_test_dir}") + ".",
[ "${_test_dir}") +
"${_test_ctx}.cpp", [
"${_test_ctx}.h", "${_test_ctx}.cpp",
] "${_test_ctx}.h",
]
# The sha1 file is key to make "analyze" aware of a changed trace file.
inputs += [ "${_test}.tar.gz.sha1" ] configs += [ "$angle_root:no_gl_prototypes" ]
data = [ "${_test_dir}/${_test}_capture_context${_ctx}.angledata.gz" ]
data += [ "${_test_dir}/${_test}_capture_context${_ctx}.angledata.gz" ] defines = [ "ANGLE_REPLAY_IMPLEMENTATION" ]
inputs = [ "${_test}.tar.gz.sha1" ]
suppressed_configs += [ "$angle_root:constructor_and_destructor_warnings" ]
public_deps = [ ":angle_restricted_trace_loader" ]
deps = [ "$angle_root:includes" ]
# Disable optimization in the trace perf tests to avoid optimizing huge files.
if (!is_debug) {
suppressed_configs += [
"//build/config/compiler:afdo",
"//build/config/compiler:afdo_optimize_size",
"//build/config/compiler:default_optimization",
"//build/config/compiler/pgo:default_pgo_flags",
]
configs += [ "//build/config/compiler:no_optimize" ]
}
include_dirs = [ "." ]
} }
}
deps = [ angle_shared_library("angle_restricted_traces") {
"$angle_root:angle_common", testonly = true
"$angle_root/util:angle_util",
sources = [
"restricted_traces_autogen.cpp",
"restricted_traces_autogen.h",
] ]
suppressed_configs += [ "$angle_root:constructor_and_destructor_warnings" ]
data = []
# Disable optimization in the trace perf tests to avoid optimizing huge files. defines = [ "ANGLE_TRACE_IMPLEMENTATION" ]
if (!is_debug) {
suppressed_configs += [ deps = [
"//build/config/compiler:afdo", "$angle_root:angle_common",
"//build/config/compiler:afdo_optimize_size", "$angle_root/util:angle_util",
"//build/config/compiler:default_optimization", ] + _traces
"//build/config/compiler/pgo:default_pgo_flags",
] public_deps = [ ":angle_restricted_trace_loader" ]
configs += [ "//build/config/compiler:no_optimize" ]
}
} }
group("goldctl") { group("goldctl") {
......
b1fbd6f0e94662be56cc0a937841c86daa6b057f 0d203516903fbcb29bdce4a98872601e0bd2e997
\ No newline at end of file \ No newline at end of file
7e5036aeb7990bd1d404e32dc75501622e9db817 f2434b91f61c891206bd8f7525a21e2af2f434a8
\ No newline at end of file \ No newline at end of file
a5f88b7b64c5337c9d3dcab9ce10e71310017d7e e363a3fe0f4be16f9bccaed3be8fd125ded48027
\ No newline at end of file \ No newline at end of file
85b785166b0b98c1f980e492800604e8796ec10d 59e030badaf17d6ea7983df52755ea2ff96fdd77
\ No newline at end of file \ No newline at end of file
d52307863a007a4a8d1a885f32a01d78b1b80653 aea3942e06f350ab4fa1c6457bf2f8653002ba09
\ No newline at end of file \ No newline at end of file
f60b5022182ddd880e6ea93991831ea296ffe48a 626688da1b196a57ed6cfbbf75fd3ec9ebee8e75
\ No newline at end of file \ No newline at end of file
8cc6dfe826b3846f6cdd22fcf04dc76088f50584 8a608ff7870e4da83da1a7d3399150cde9b80f17
\ No newline at end of file \ No newline at end of file
347584855f718427894b5974cfee4b53e78a3488 d7100142098ed239fbcf19bccb6f277a87032b8b
\ No newline at end of file \ No newline at end of file
549f603a46cdb6abb6e1ec91e80848ae25933cb3 e25e23c286d4d6791cdf0ca3e5f755abc9e846e7
\ No newline at end of file \ No newline at end of file
77bf7d0fb531ffb7059ab611e4c06e50ea098c31 4d32f796e9c319d0584ec7f39f9318ad306fca05
\ No newline at end of file \ No newline at end of file
...@@ -7,12 +7,14 @@ ...@@ -7,12 +7,14 @@
# gen_restricted_traces.py: # gen_restricted_traces.py:
# Generates integration code for the restricted trace tests. # Generates integration code for the restricted trace tests.
import copy
import fnmatch import fnmatch
import json import json
import os import os
import sys import sys
gni_template = """# GENERATED FILE - DO NOT EDIT. GNI_TEMPLATE = """\
# GENERATED FILE - DO NOT EDIT.
# Generated by {script_name} using data from {data_source_name} # Generated by {script_name} using data from {data_source_name}
# #
# Copyright 2020 The ANGLE Project Authors. All rights reserved. # Copyright 2020 The ANGLE Project Authors. All rights reserved.
...@@ -27,7 +29,8 @@ angle_restricted_traces = [ ...@@ -27,7 +29,8 @@ angle_restricted_traces = [
] ]
""" """
header_template = """// GENERATED FILE - DO NOT EDIT. HEADER_TEMPLATE = """\
// GENERATED FILE - DO NOT EDIT.
// Generated by {script_name} using data from {data_source_name} // Generated by {script_name} using data from {data_source_name}
// //
// Copyright 2020 The ANGLE Project Authors. All rights reserved. // Copyright 2020 The ANGLE Project Authors. All rights reserved.
...@@ -58,11 +61,25 @@ header_template = """// GENERATED FILE - DO NOT EDIT. ...@@ -58,11 +61,25 @@ header_template = """// GENERATED FILE - DO NOT EDIT.
# endif # endif
#endif // !defined(ANGLE_TRACE_EXPORT) #endif // !defined(ANGLE_TRACE_EXPORT)
#if !defined(ANGLE_TRACE_LOADER_EXPORT)
# if defined(_WIN32)
# if defined(ANGLE_TRACE_LOADER_IMPLEMENTATION)
# define ANGLE_TRACE_LOADER_EXPORT __declspec(dllexport)
# else
# define ANGLE_TRACE_LOADER_EXPORT __declspec(dllimport)
# endif
# elif defined(__GNUC__)
# define ANGLE_TRACE_LOADER_EXPORT __attribute__((visibility("default")))
# else
# define ANGLE_TRACE_LOADER_EXPORT
# endif
#endif // !defined(ANGLE_TRACE_LOADER_EXPORT)
namespace trace_angle namespace trace_angle
{{ {{
using GenericProc = void (*)(); using GenericProc = void (*)();
using LoadProc = GenericProc(KHRONOS_APIENTRY *)(const char *); using LoadProc = GenericProc(KHRONOS_APIENTRY *)(const char *);
ANGLE_TRACE_EXPORT void LoadGLES(LoadProc loadProc); ANGLE_TRACE_LOADER_EXPORT void LoadGLES(LoadProc loadProc);
}} // namespace trace_angle }} // namespace trace_angle
namespace angle namespace angle
...@@ -102,7 +119,8 @@ ANGLE_TRACE_EXPORT void SetBinaryDataDecompressCallback(RestrictedTraceID traceI ...@@ -102,7 +119,8 @@ ANGLE_TRACE_EXPORT void SetBinaryDataDecompressCallback(RestrictedTraceID traceI
#endif // ANGLE_RESTRICTED_TRACES_H_ #endif // ANGLE_RESTRICTED_TRACES_H_
""" """
source_template = """// GENERATED FILE - DO NOT EDIT. SOURCE_TEMPLATE = """\
// GENERATED FILE - DO NOT EDIT.
// Generated by {script_name} using data from {data_source_name} // Generated by {script_name} using data from {data_source_name}
// //
// Copyright 2020 The ANGLE Project Authors. All rights reserved. // Copyright 2020 The ANGLE Project Authors. All rights reserved.
...@@ -193,6 +211,39 @@ void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallba ...@@ -193,6 +211,39 @@ void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallba
}} // namespace angle }} // namespace angle
""" """
INCLUDE_FILE_TEMPLATE = """\
// GENERATED FILE - DO NOT EDIT.
// Generated by ${script_name} using data from ${data_source_name}.
//
// Copyright 2019 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.
#pragma once
#include <cstdint>
#include <vector>
#if !defined(ANGLE_RESTRICTED_TRACE_EXPORT)
# if defined(_WIN32)
# if defined(ANGLE_RESTRICTED_TRACE_IMPLEMENTATION)
# define ANGLE_RESTRICTED_TRACE_EXPORT __declspec(dllexport)
# else
# define ANGLE_RESTRICTED_TRACE_EXPORT __declspec(dllimport)
# endif
# elif defined(__GNUC__)
# define ANGLE_RESTRICTED_TRACE_EXPORT __attribute__((visibility("default")))
# else
# define ANGLE_RESTRICTED_TRACE_EXPORT
# endif
#endif // !defined(ANGLE_RESTRICTED_TRACE_EXPORT)
namespace {namespace}
{{
{funcs}\
}} // namespace {namespace}
"""
def reject_duplicate_keys(pairs): def reject_duplicate_keys(pairs):
found_keys = {} found_keys = {}
...@@ -207,7 +258,7 @@ def reject_duplicate_keys(pairs): ...@@ -207,7 +258,7 @@ def reject_duplicate_keys(pairs):
def gen_gni(traces, gni_file, format_args): def gen_gni(traces, gni_file, format_args):
format_args["test_list"] = ",\n".join( format_args["test_list"] = ",\n".join(
['"%s %s"' % (trace, get_context(trace)) for trace in traces]) ['"%s %s"' % (trace, get_context(trace)) for trace in traces])
gni_data = gni_template.format(**format_args) gni_data = GNI_TEMPLATE.format(**format_args)
with open(gni_file, "w") as out_file: with open(gni_file, "w") as out_file:
out_file.write(gni_data) out_file.write(gni_data)
return True return True
...@@ -262,14 +313,14 @@ def get_cases_with_context(traces, function_start, function_end, args): ...@@ -262,14 +313,14 @@ def get_cases_with_context(traces, function_start, function_end, args):
def gen_header(header_file, format_args): def gen_header(header_file, format_args):
header_data = header_template.format(**format_args) header_data = HEADER_TEMPLATE.format(**format_args)
with open(header_file, "w") as out_file: with open(header_file, "w") as out_file:
out_file.write(header_data) out_file.write(header_data)
return True return True
def gen_source(source_file, format_args): def gen_source(source_file, format_args):
source_data = source_template.format(**format_args) source_data = SOURCE_TEMPLATE.format(**format_args)
with open(source_file, "w") as out_file: with open(source_file, "w") as out_file:
out_file.write(source_data) out_file.write(source_data)
return True return True
......
f608ee435f1e365299653c88bbc61c3237516c86 4565f1f2067e6bc80c247f222f818fcbebcccffc
\ No newline at end of file \ No newline at end of file
d08d97308fb9ffcd415f6c4829446d1781ac7e51 c8e802bea85f4e8eacb3bb53e62c95feeb7830a7
\ No newline at end of file \ No newline at end of file
a18181372a664461b640d4935e519fe2096892ca e4f4e73c2f27e3d504a7445e4308d148ca799569
\ No newline at end of file \ No newline at end of file
86cd5e7af19d66a0e3045024b8e7b6bf2e324904 05faee9f2f6c4c898705bda6edf16526cb31f7e3
\ No newline at end of file \ No newline at end of file
3133121b0fd49430f70e3aff7b45a51fea8261ab b2b8c0c9f0602f26b38e859da4e93474042b2a38
\ No newline at end of file \ No newline at end of file
d46e12464ec25fcb04f757573e13a16de79a7baa 8b688b150151d18facfbe5e42fbc51560d2e0127
\ No newline at end of file \ No newline at end of file
...@@ -9,23 +9,23 @@ ...@@ -9,23 +9,23 @@
# Can be consumed by tests/BUILD.gn. # Can be consumed by tests/BUILD.gn.
angle_restricted_traces = [ angle_restricted_traces = [
"angry_birds_2_1500 2", "angry_birds_2_1500 1",
"arena_of_valor 3", "arena_of_valor 1",
"brawl_stars 2", "brawl_stars 1",
"candy_crush_500 1", "candy_crush_500 1",
"clash_of_clans 2", "clash_of_clans 1",
"cod_mobile 4", "cod_mobile 1",
"dragon_ball_legends 3", "dragon_ball_legends 1",
"egypt_1500 6", "egypt_1500 1",
"fate_grand_order 2", "fate_grand_order 1",
"free_fire 3", "free_fire 1",
"kartrider_rush 3", "kartrider_rush 1",
"manhattan_10 6", "manhattan_10 1",
"marvel_contest_of_champions 2", "marvel_contest_of_champions 1",
"mobile_legends 3", "mobile_legends 1",
"nba2k20_800 1", "nba2k20_800 1",
"pubg_mobile_lite 5", "pubg_mobile_lite 1",
"temple_run_300 1", "temple_run_300 1",
"trex_200 6", "trex_200 1",
"world_of_tanks_blitz 3", "world_of_tanks_blitz 1",
] ]
...@@ -29,11 +29,25 @@ ...@@ -29,11 +29,25 @@
# endif # endif
#endif // !defined(ANGLE_TRACE_EXPORT) #endif // !defined(ANGLE_TRACE_EXPORT)
#if !defined(ANGLE_TRACE_LOADER_EXPORT)
# if defined(_WIN32)
# if defined(ANGLE_TRACE_LOADER_IMPLEMENTATION)
# define ANGLE_TRACE_LOADER_EXPORT __declspec(dllexport)
# else
# define ANGLE_TRACE_LOADER_EXPORT __declspec(dllimport)
# endif
# elif defined(__GNUC__)
# define ANGLE_TRACE_LOADER_EXPORT __attribute__((visibility("default")))
# else
# define ANGLE_TRACE_LOADER_EXPORT
# endif
#endif // !defined(ANGLE_TRACE_LOADER_EXPORT)
namespace trace_angle namespace trace_angle
{ {
using GenericProc = void (*)(); using GenericProc = void (*)();
using LoadProc = GenericProc(KHRONOS_APIENTRY *)(const char *); using LoadProc = GenericProc(KHRONOS_APIENTRY *)(const char *);
ANGLE_TRACE_EXPORT void LoadGLES(LoadProc loadProc); ANGLE_TRACE_LOADER_EXPORT void LoadGLES(LoadProc loadProc);
} // namespace trace_angle } // namespace trace_angle
namespace angle namespace angle
......
07178051377f3d30d53decd6ab66e57bce34db06 1a35ac066a09bd475031a976e6eb2459542f8023
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
dbd9e9b04187ac9c97b3a801d96f6d84a4d47d70 6186110f03d595ee1260b0166e5760243970209d
\ No newline at end of file \ No newline at end of file
be94262d5afa360adc927c65c6e2ccd8102c6468 9646d325e0821f97425234fdbdc9c0aecfd19183
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment