Commit 6ca2c116 by Jamie Madill Committed by Commit Bot

Make trace tests a shared library.

This will facilitate intercepting the GL calls and implementing emulation paths for offscreen redering. Or other EGL/GL features. It does not yet override the GLES loader and uses the shared 'angle_util' loader as it did before. Bug: angleproject:4845 Change-Id: I68806c307f59e1852999299e88dc358781817f12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2305042 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarManh Nguyen <nguyenmh@google.com> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com>
parent 4fa75b5c
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
"src/tests/perf_tests/restricted_traces/egypt_1500.tar.gz.sha1": "src/tests/perf_tests/restricted_traces/egypt_1500.tar.gz.sha1":
"e675648c5b16fc52077998621e6300ba", "e675648c5b16fc52077998621e6300ba",
"src/tests/perf_tests/restricted_traces/gen_restricted_traces.py": "src/tests/perf_tests/restricted_traces/gen_restricted_traces.py":
"015c2f50f94cd1ff295b2320d0b1c644", "b9ab26dab2fd7e4721d5ee9250dcf3a2",
"src/tests/perf_tests/restricted_traces/manhattan_10.tar.gz.sha1": "src/tests/perf_tests/restricted_traces/manhattan_10.tar.gz.sha1":
"7f5e3e8b4d7ec07232c54d41964006ea", "7f5e3e8b4d7ec07232c54d41964006ea",
"src/tests/perf_tests/restricted_traces/restricted_traces.json": "src/tests/perf_tests/restricted_traces/restricted_traces.json":
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
"src/tests/perf_tests/restricted_traces/restricted_traces_autogen.gni": "src/tests/perf_tests/restricted_traces/restricted_traces_autogen.gni":
"25de059705d29d797e246aae027498ec", "25de059705d29d797e246aae027498ec",
"src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h": "src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h":
"78cd1e872ef05e05330eb481f800739d", "5be32477d2803b309f9af3b006732428",
"src/tests/perf_tests/restricted_traces/subway_surfer_500.tar.gz.sha1": "src/tests/perf_tests/restricted_traces/subway_surfer_500.tar.gz.sha1":
"a47a797dd227f5025439b47cee80dbc9", "a47a797dd227f5025439b47cee80dbc9",
"src/tests/perf_tests/restricted_traces/temple_run_300.tar.gz.sha1": "src/tests/perf_tests/restricted_traces/temple_run_300.tar.gz.sha1":
......
...@@ -286,26 +286,19 @@ if (is_win || is_linux || is_android || is_mac) { ...@@ -286,26 +286,19 @@ if (is_win || is_linux || is_android || is_mac) {
if (is_win || is_linux || is_android || is_mac || is_fuchsia) { if (is_win || is_linux || is_android || is_mac || is_fuchsia) {
import("angle_perftests.gni") import("angle_perftests.gni")
angle_source_set("angle_trace_perftests") { if (build_angle_trace_perf_tests) {
testonly = true angle_shared_library("angle_restricted_traces") {
if (build_angle_trace_perf_tests) { testonly = true
# Imports "angle_restricted_traces" # Imports "angle_restricted_traces"
import("perf_tests/restricted_traces/restricted_traces_autogen.gni") import("perf_tests/restricted_traces/restricted_traces_autogen.gni")
sources = [ sources = [
"perf_tests/TracePerfTest.cpp",
"perf_tests/restricted_traces/restricted_traces_autogen.cpp", "perf_tests/restricted_traces/restricted_traces_autogen.cpp",
"perf_tests/restricted_traces/restricted_traces_autogen.h", "perf_tests/restricted_traces/restricted_traces_autogen.h",
] ]
if (is_android) {
_trace_data_path = "/sdcard/chromium_tests_root/third_party/angle/src/tests/perf_tests/restricted_traces"
} else {
_trace_data_path =
rebase_path("perf_tests/restricted_traces", root_out_dir)
}
defines = [ "ANGLE_TRACE_DATA_DIR=\"${_trace_data_path}\"" ]
data = [] data = []
defines = [ "ANGLE_TRACE_IMPLEMENTATION" ]
foreach(_test_info, angle_restricted_traces) { foreach(_test_info, angle_restricted_traces) {
_test_and_ctx = [] _test_and_ctx = []
...@@ -325,15 +318,12 @@ if (is_win || is_linux || is_android || is_mac || is_fuchsia) { ...@@ -325,15 +318,12 @@ if (is_win || is_linux || is_android || is_mac || is_fuchsia) {
"${_test_ctx}.h", "${_test_ctx}.h",
] ]
defines +=
[ "ANGLE_TRACE_DATA_DIR_${_test}=\"${_trace_data_path}/${_test}\"" ]
data += [ "${_test_dir}/${_test}_capture_context${_ctx}.angledata.gz" ] data += [ "${_test_dir}/${_test}_capture_context${_ctx}.angledata.gz" ]
} }
deps = [ deps = [
":angle_perftests_shared", "$angle_root:angle_common",
"$angle_root:angle_compression", "$angle_root/util:angle_util",
"$angle_root/util:angle_png_utils",
] ]
suppressed_configs += suppressed_configs +=
[ "$angle_root:constructor_and_destructor_warnings" ] [ "$angle_root:constructor_and_destructor_warnings" ]
...@@ -346,6 +336,30 @@ if (is_win || is_linux || is_android || is_mac || is_fuchsia) { ...@@ -346,6 +336,30 @@ if (is_win || is_linux || is_android || is_mac || is_fuchsia) {
} }
} }
angle_source_set("angle_trace_perftests") {
testonly = true
if (build_angle_trace_perf_tests) {
sources = [ "perf_tests/TracePerfTest.cpp" ]
if (is_android) {
_trace_data_path = "/sdcard/chromium_tests_root/third_party/angle/src/tests/perf_tests/restricted_traces"
} else {
_trace_data_path =
rebase_path("perf_tests/restricted_traces", root_out_dir)
}
defines = [ "ANGLE_TRACE_DATA_DIR=\"${_trace_data_path}\"" ]
deps = [
":angle_perftests_shared",
":angle_restricted_traces",
"$angle_root:angle_compression",
"$angle_root/util:angle_png_utils",
]
suppressed_configs +=
[ "$angle_root:constructor_and_destructor_warnings" ]
}
}
# This test suite is designed to run against a generic GL implementation. # This test suite is designed to run against a generic GL implementation.
angle_test("angle_perftests") { angle_test("angle_perftests") {
include_dirs = [ "." ] include_dirs = [ "." ]
......
...@@ -41,6 +41,21 @@ header_template = """// GENERATED FILE - DO NOT EDIT. ...@@ -41,6 +41,21 @@ header_template = """// GENERATED FILE - DO NOT EDIT.
{includes} {includes}
// See util/util_export.h for details on import/export labels.
#if !defined(ANGLE_TRACE_EXPORT)
# if defined(_WIN32)
# if defined(ANGLE_TRACE_IMPLEMENTATION)
# define ANGLE_TRACE_EXPORT __declspec(dllexport)
# else
# define ANGLE_TRACE_EXPORT __declspec(dllimport)
# endif
# elif defined(__GNUC__)
# define ANGLE_TRACE_EXPORT __attribute__((visibility("default")))
# else
# define ANGLE_TRACE_EXPORT
# endif
#endif // !defined(ANGLE_TRACE_EXPORT)
namespace angle namespace angle
{{ {{
enum class RestrictedTraceID enum class RestrictedTraceID
...@@ -68,13 +83,13 @@ struct TraceInfo ...@@ -68,13 +83,13 @@ struct TraceInfo
using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &); using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &);
using FramebufferChangeCallback = void(*)(void *userData, GLenum target, GLuint framebuffer); using FramebufferChangeCallback = void(*)(void *userData, GLenum target, GLuint framebuffer);
const TraceInfo &GetTraceInfo(RestrictedTraceID traceID); ANGLE_TRACE_EXPORT const TraceInfo &GetTraceInfo(RestrictedTraceID traceID);
void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex); ANGLE_TRACE_EXPORT void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex);
void ResetReplay(RestrictedTraceID traceID); ANGLE_TRACE_EXPORT void ResetReplay(RestrictedTraceID traceID);
void SetupReplay(RestrictedTraceID traceID); ANGLE_TRACE_EXPORT void SetupReplay(RestrictedTraceID traceID);
void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir); ANGLE_TRACE_EXPORT void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir);
void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback); ANGLE_TRACE_EXPORT void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback);
void SetFramebufferChangeCallback(RestrictedTraceID traceID, void *userData, FramebufferChangeCallback callback); ANGLE_TRACE_EXPORT void SetFramebufferChangeCallback(RestrictedTraceID traceID, void *userData, FramebufferChangeCallback callback);
}} // namespace angle }} // namespace angle
#endif // ANGLE_RESTRICTED_TRACES_H_ #endif // ANGLE_RESTRICTED_TRACES_H_
......
...@@ -18,6 +18,21 @@ ...@@ -18,6 +18,21 @@
#include "temple_run_300/temple_run_300_capture_context3.h" #include "temple_run_300/temple_run_300_capture_context3.h"
#include "trex_200/trex_200_capture_context1.h" #include "trex_200/trex_200_capture_context1.h"
// See util/util_export.h for details on import/export labels.
#if !defined(ANGLE_TRACE_EXPORT)
# if defined(_WIN32)
# if defined(ANGLE_TRACE_IMPLEMENTATION)
# define ANGLE_TRACE_EXPORT __declspec(dllexport)
# else
# define ANGLE_TRACE_EXPORT __declspec(dllimport)
# endif
# elif defined(__GNUC__)
# define ANGLE_TRACE_EXPORT __attribute__((visibility("default")))
# else
# define ANGLE_TRACE_EXPORT
# endif
#endif // !defined(ANGLE_TRACE_EXPORT)
namespace angle namespace angle
{ {
enum class RestrictedTraceID enum class RestrictedTraceID
...@@ -53,15 +68,16 @@ struct TraceInfo ...@@ -53,15 +68,16 @@ struct TraceInfo
using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &); using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &);
using FramebufferChangeCallback = void (*)(void *userData, GLenum target, GLuint framebuffer); using FramebufferChangeCallback = void (*)(void *userData, GLenum target, GLuint framebuffer);
const TraceInfo &GetTraceInfo(RestrictedTraceID traceID); ANGLE_TRACE_EXPORT const TraceInfo &GetTraceInfo(RestrictedTraceID traceID);
void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex); ANGLE_TRACE_EXPORT void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex);
void ResetReplay(RestrictedTraceID traceID); ANGLE_TRACE_EXPORT void ResetReplay(RestrictedTraceID traceID);
void SetupReplay(RestrictedTraceID traceID); ANGLE_TRACE_EXPORT void SetupReplay(RestrictedTraceID traceID);
void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir); ANGLE_TRACE_EXPORT void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir);
void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback); ANGLE_TRACE_EXPORT void SetBinaryDataDecompressCallback(RestrictedTraceID traceID,
void SetFramebufferChangeCallback(RestrictedTraceID traceID, DecompressCallback callback);
void *userData, ANGLE_TRACE_EXPORT void SetFramebufferChangeCallback(RestrictedTraceID traceID,
FramebufferChangeCallback callback); void *userData,
FramebufferChangeCallback callback);
} // namespace angle } // namespace angle
#endif // ANGLE_RESTRICTED_TRACES_H_ #endif // ANGLE_RESTRICTED_TRACES_H_
...@@ -158,7 +158,6 @@ foreach(is_shared_library, ...@@ -158,7 +158,6 @@ foreach(is_shared_library,
target(library_type, library_name) { target(library_type, library_name) {
testonly = true testonly = true
sources = _util_sources sources = _util_sources
deps = [ "$angle_root:angle_common" ]
public_deps = [ public_deps = [
":angle_test_utils", ":angle_test_utils",
":angle_util_loader_headers", ":angle_util_loader_headers",
...@@ -270,7 +269,8 @@ config("angle_test_util_config") { ...@@ -270,7 +269,8 @@ config("angle_test_util_config") {
angle_source_set("angle_test_utils") { angle_source_set("angle_test_utils") {
public_configs = [ ":angle_test_util_config" ] public_configs = [ ":angle_test_util_config" ]
deps = [ "$angle_root:angle_common" ] public_deps = [ "$angle_root:angle_common" ]
deps = []
sources = [ sources = [
"Timer.cpp", "Timer.cpp",
"Timer.h", "Timer.h",
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
#ifndef UTIL_EXPORT_H_ #ifndef UTIL_EXPORT_H_
#define UTIL_EXPORT_H_ #define UTIL_EXPORT_H_
// How to get the right import/export annotations on Windows:
// We define "IMPLEMENTATION" to get the dllexport label when compiling the
// util library. Consumers get the dllimport label by default.
#if !defined(ANGLE_UTIL_EXPORT) #if !defined(ANGLE_UTIL_EXPORT)
# if defined(_WIN32) # if defined(_WIN32)
# if defined(LIBANGLE_UTIL_IMPLEMENTATION) # if defined(LIBANGLE_UTIL_IMPLEMENTATION)
......
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