blob: 0724e4a997d6b20fbbf911057896943bb1f8632a [file] [log] [blame]
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/fuchsia/sdk.gni")
import("//flutter/common/config.gni")
import("//flutter/impeller/tools/impeller.gni")
import("//flutter/testing/testing.gni")
source_set("display_list") {
sources = [
"display_list.cc",
"display_list.h",
"display_list_attributes.h",
"display_list_blend_mode.cc",
"display_list_blend_mode.h",
"display_list_builder.cc",
"display_list_builder.h",
"display_list_canvas_dispatcher.cc",
"display_list_canvas_dispatcher.h",
"display_list_canvas_recorder.cc",
"display_list_canvas_recorder.h",
"display_list_color.h",
"display_list_color_filter.cc",
"display_list_color_filter.h",
"display_list_color_source.cc",
"display_list_color_source.h",
"display_list_complexity.cc",
"display_list_complexity.h",
"display_list_complexity_gl.cc",
"display_list_complexity_gl.h",
"display_list_complexity_metal.cc",
"display_list_complexity_metal.h",
"display_list_dispatcher.cc",
"display_list_dispatcher.h",
"display_list_flags.cc",
"display_list_flags.h",
"display_list_image.cc",
"display_list_image.h",
"display_list_image_filter.cc",
"display_list_image_filter.h",
"display_list_image_skia.cc",
"display_list_image_skia.h",
"display_list_mask_filter.cc",
"display_list_mask_filter.h",
"display_list_ops.cc",
"display_list_ops.h",
"display_list_paint.cc",
"display_list_paint.h",
"display_list_path_effect.cc",
"display_list_path_effect.h",
"display_list_rtree.cc",
"display_list_rtree.h",
"display_list_sampling_options.h",
"display_list_tile_mode.h",
"display_list_utils.cc",
"display_list_utils.h",
"display_list_vertices.cc",
"display_list_vertices.h",
"types.h",
]
public_deps = [
"//flutter/fml",
"//third_party/skia",
]
}
if (enable_unittests) {
test_fixtures("display_list_fixtures") {
fixtures = []
}
source_set("display_list_testing") {
testonly = true
sources = [
"display_list_attributes_testing.h",
"display_list_test_utils.cc",
"display_list_test_utils.h",
]
deps = [
"//flutter/testing:testing_lib",
"//third_party/skia",
]
public_deps = [ ":display_list" ]
}
executable("display_list_unittests") {
testonly = true
sources = [
"display_list_color_filter_unittests.cc",
"display_list_color_source_unittests.cc",
"display_list_color_unittests.cc",
"display_list_complexity_unittests.cc",
"display_list_enum_unittests.cc",
"display_list_image_filter_unittests.cc",
"display_list_mask_filter_unittests.cc",
"display_list_paint_unittests.cc",
"display_list_path_effect_unittests.cc",
"display_list_unittests.cc",
"display_list_utils_unittests.cc",
"display_list_vertices_unittests.cc",
]
deps = [
":display_list",
":display_list_fixtures",
":display_list_testing",
"//flutter/testing",
]
if (!defined(defines)) {
defines = []
}
if (is_win) {
# Required for M_PI and others.
defines += [ "_USE_MATH_DEFINES" ]
}
# This is needed for //third_party/googletest for linking zircon symbols.
if (is_fuchsia) {
libs =
[ "${fuchsia_sdk_path}/arch/${target_cpu}/sysroot/lib/libzircon.so" ]
}
}
executable("display_list_rendertests") {
testonly = true
sources = [ "display_list_canvas_unittests.cc" ]
deps = [
":display_list",
":display_list_fixtures",
":display_list_testing",
"//flutter/testing",
]
if (!defined(defines)) {
defines = []
}
if (is_win) {
# Required for M_PI and others.
defines += [ "_USE_MATH_DEFINES" ]
}
# This is needed for //third_party/googletest for linking zircon symbols.
if (is_fuchsia) {
libs =
[ "${fuchsia_sdk_path}/arch/${target_cpu}/sysroot/lib/libzircon.so" ]
}
}
executable("display_list_builder_benchmarks") {
testonly = true
sources = [ "display_list_builder_benchmarks.cc" ]
deps = [
":display_list",
":display_list_fixtures",
":display_list_testing",
"//flutter/benchmarking",
"//flutter/testing:testing_lib",
]
}
}
fixtures_location("display_list_benchmarks_fixtures") {
assets_dir = "$target_gen_dir/"
}
source_set("display_list_benchmarks_source") {
testonly = true
sources = [
"display_list_benchmarks.cc",
"display_list_benchmarks.h",
]
deps = [
":display_list",
":display_list_benchmarks_fixtures",
"//flutter/benchmarking",
"//flutter/common/graphics",
"//flutter/fml",
"//flutter/testing:skia",
"//flutter/testing:testing_lib",
"//third_party/dart/runtime:libdart_jit", # for tracing
"//third_party/skia",
]
defines = []
if (is_android) {
libs = [
"android",
"EGL",
"GLESv2",
]
}
# We only do software benchmarks on non-mobile platforms
if (!is_android && !is_ios) {
sources += [
"display_list_benchmarks_software.cc",
"display_list_benchmarks_software.h",
]
defines += [ "ENABLE_SOFTWARE_BENCHMARKS" ]
}
# iOS and Fuchsia don't support OpenGL
_enable_gl_benchmarks = !is_fuchsia && !is_ios
# TODO (https://github.com/flutter/flutter/issues/107357):
# impeller_enable_vulkan currently requires skia to not use VMA, which inturn
# causes linkage problems with swiftshader.
if (impeller_enable_vulkan) {
_enable_gl_benchmarks = false
}
if (_enable_gl_benchmarks) {
defines += [ "ENABLE_OPENGL_BENCHMARKS" ]
sources += [
"display_list_benchmarks_gl.cc",
"display_list_benchmarks_gl.h",
]
deps += [ "//flutter/testing:opengl" ]
}
if (is_mac || is_ios) {
defines += [ "ENABLE_METAL_BENCHMARKS" ]
sources += [
"display_list_benchmarks_metal.cc",
"display_list_benchmarks_metal.h",
]
deps += [ "//flutter/testing:metal" ]
}
# Don't snapshot test results on mobile platforms
if (is_android || is_ios) {
defines += [ "BENCHMARKS_NO_SNAPSHOT" ]
}
}
executable("display_list_benchmarks") {
testonly = true
deps = [ ":display_list_benchmarks_source" ]
}
if (is_ios) {
shared_library("ios_display_list_benchmarks") {
testonly = true
visibility = [ ":*" ]
configs -= [
"//build/config/gcc:symbol_visibility_hidden",
"//build/config:symbol_visibility_hidden",
]
configs += [ "//flutter/benchmarking:benchmark_library_config" ]
cflags = [
"-fobjc-arc",
"-mios-simulator-version-min=$ios_testing_deployment_target",
]
ldflags =
[ "-Wl,-install_name,@rpath/libios_display_list_benchmarks.dylib" ]
deps = [
":display_list_benchmarks_source",
"//flutter/benchmarking:benchmarking_library",
]
}
}