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 @@
"src/tests/perf_tests/restricted_traces/egypt_1500.tar.gz.sha1":
"e675648c5b16fc52077998621e6300ba",
"src/tests/perf_tests/restricted_traces/gen_restricted_traces.py":
"015c2f50f94cd1ff295b2320d0b1c644",
"b9ab26dab2fd7e4721d5ee9250dcf3a2",
"src/tests/perf_tests/restricted_traces/manhattan_10.tar.gz.sha1":
"7f5e3e8b4d7ec07232c54d41964006ea",
"src/tests/perf_tests/restricted_traces/restricted_traces.json":
......@@ -16,7 +16,7 @@
"src/tests/perf_tests/restricted_traces/restricted_traces_autogen.gni":
"25de059705d29d797e246aae027498ec",
"src/tests/perf_tests/restricted_traces/restricted_traces_autogen.h":
"78cd1e872ef05e05330eb481f800739d",
"5be32477d2803b309f9af3b006732428",
"src/tests/perf_tests/restricted_traces/subway_surfer_500.tar.gz.sha1":
"a47a797dd227f5025439b47cee80dbc9",
"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) {
if (is_win || is_linux || is_android || is_mac || is_fuchsia) {
import("angle_perftests.gni")
angle_source_set("angle_trace_perftests") {
testonly = true
if (build_angle_trace_perf_tests) {
angle_shared_library("angle_restricted_traces") {
testonly = true
# Imports "angle_restricted_traces"
import("perf_tests/restricted_traces/restricted_traces_autogen.gni")
sources = [
"perf_tests/TracePerfTest.cpp",
"perf_tests/restricted_traces/restricted_traces_autogen.cpp",
"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 = []
defines = [ "ANGLE_TRACE_IMPLEMENTATION" ]
foreach(_test_info, angle_restricted_traces) {
_test_and_ctx = []
......@@ -325,15 +318,12 @@ if (is_win || is_linux || is_android || is_mac || is_fuchsia) {
"${_test_ctx}.h",
]
defines +=
[ "ANGLE_TRACE_DATA_DIR_${_test}=\"${_trace_data_path}/${_test}\"" ]
data += [ "${_test_dir}/${_test}_capture_context${_ctx}.angledata.gz" ]
}
deps = [
":angle_perftests_shared",
"$angle_root:angle_compression",
"$angle_root/util:angle_png_utils",
"$angle_root:angle_common",
"$angle_root/util:angle_util",
]
suppressed_configs +=
[ "$angle_root:constructor_and_destructor_warnings" ]
......@@ -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.
angle_test("angle_perftests") {
include_dirs = [ "." ]
......
......@@ -41,6 +41,21 @@ header_template = """// GENERATED FILE - DO NOT EDIT.
{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
{{
enum class RestrictedTraceID
......@@ -68,13 +83,13 @@ struct TraceInfo
using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &);
using FramebufferChangeCallback = void(*)(void *userData, GLenum target, GLuint framebuffer);
const TraceInfo &GetTraceInfo(RestrictedTraceID traceID);
void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex);
void ResetReplay(RestrictedTraceID traceID);
void SetupReplay(RestrictedTraceID traceID);
void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir);
void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback);
void SetFramebufferChangeCallback(RestrictedTraceID traceID, void *userData, FramebufferChangeCallback callback);
ANGLE_TRACE_EXPORT const TraceInfo &GetTraceInfo(RestrictedTraceID traceID);
ANGLE_TRACE_EXPORT void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex);
ANGLE_TRACE_EXPORT void ResetReplay(RestrictedTraceID traceID);
ANGLE_TRACE_EXPORT void SetupReplay(RestrictedTraceID traceID);
ANGLE_TRACE_EXPORT void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir);
ANGLE_TRACE_EXPORT void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback);
ANGLE_TRACE_EXPORT void SetFramebufferChangeCallback(RestrictedTraceID traceID, void *userData, FramebufferChangeCallback callback);
}} // namespace angle
#endif // ANGLE_RESTRICTED_TRACES_H_
......
......@@ -18,6 +18,21 @@
#include "temple_run_300/temple_run_300_capture_context3.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
{
enum class RestrictedTraceID
......@@ -53,13 +68,14 @@ struct TraceInfo
using DecompressCallback = uint8_t *(*)(const std::vector<uint8_t> &);
using FramebufferChangeCallback = void (*)(void *userData, GLenum target, GLuint framebuffer);
const TraceInfo &GetTraceInfo(RestrictedTraceID traceID);
void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex);
void ResetReplay(RestrictedTraceID traceID);
void SetupReplay(RestrictedTraceID traceID);
void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir);
void SetBinaryDataDecompressCallback(RestrictedTraceID traceID, DecompressCallback callback);
void SetFramebufferChangeCallback(RestrictedTraceID traceID,
ANGLE_TRACE_EXPORT const TraceInfo &GetTraceInfo(RestrictedTraceID traceID);
ANGLE_TRACE_EXPORT void ReplayFrame(RestrictedTraceID traceID, uint32_t frameIndex);
ANGLE_TRACE_EXPORT void ResetReplay(RestrictedTraceID traceID);
ANGLE_TRACE_EXPORT void SetupReplay(RestrictedTraceID traceID);
ANGLE_TRACE_EXPORT void SetBinaryDataDir(RestrictedTraceID traceID, const char *dataDir);
ANGLE_TRACE_EXPORT void SetBinaryDataDecompressCallback(RestrictedTraceID traceID,
DecompressCallback callback);
ANGLE_TRACE_EXPORT void SetFramebufferChangeCallback(RestrictedTraceID traceID,
void *userData,
FramebufferChangeCallback callback);
} // namespace angle
......
......@@ -158,7 +158,6 @@ foreach(is_shared_library,
target(library_type, library_name) {
testonly = true
sources = _util_sources
deps = [ "$angle_root:angle_common" ]
public_deps = [
":angle_test_utils",
":angle_util_loader_headers",
......@@ -270,7 +269,8 @@ config("angle_test_util_config") {
angle_source_set("angle_test_utils") {
public_configs = [ ":angle_test_util_config" ]
deps = [ "$angle_root:angle_common" ]
public_deps = [ "$angle_root:angle_common" ]
deps = []
sources = [
"Timer.cpp",
"Timer.h",
......
......@@ -8,6 +8,9 @@
#ifndef 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(_WIN32)
# 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