blob: 4b51ca880ce0dad167f94f2ef3ce68cf965bb149 [file] [log] [blame]
# Copyright 2014 The Chromium 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("//testing/libfuzzer/fuzzer_test.gni")
import("//testing/test.gni")
import("//build/config/ui.gni")
import("//ui/gl/features.gni")
config("gpu_implementation") {
defines = [ "GPU_IMPLEMENTATION" ]
}
config("gpu_gles2_implementation") {
defines = [ "GPU_GLES2_IMPLEMENTATION" ]
}
config("gpu_util_implementation") {
defines = [ "GPU_UTIL_IMPLEMENTATION" ]
}
component("gpu") {
public_deps = [
"//gpu/command_buffer/client:client_sources",
"//gpu/command_buffer/common:common_sources",
"//gpu/command_buffer/service:service_sources",
"//gpu/config:config_sources",
"//gpu/ipc/client:ipc_client_sources",
"//gpu/ipc/common:ipc_common_sources",
]
}
component("gles2") {
public_deps = [
"//gpu/command_buffer/client:gles2_cmd_helper_sources",
"//gpu/command_buffer/common:gles2_sources",
"//gpu/command_buffer/service:gles2_sources",
]
}
component("gpu_util") {
public_deps = [
"//gpu/ipc/common:gpu_preferences_util_sources",
]
}
if (!use_static_angle) {
shared_library("command_buffer_gles2") {
sources = [
# TODO(hendrikw): Move egl out of gles2_conform_support.
"gles2_conform_support/egl/config.cc",
"gles2_conform_support/egl/config.h",
"gles2_conform_support/egl/context.cc",
"gles2_conform_support/egl/context.h",
"gles2_conform_support/egl/display.cc",
"gles2_conform_support/egl/display.h",
"gles2_conform_support/egl/egl.cc",
"gles2_conform_support/egl/surface.cc",
"gles2_conform_support/egl/surface.h",
"gles2_conform_support/egl/test_support.cc",
"gles2_conform_support/egl/test_support.h",
"gles2_conform_support/egl/thread_state.cc",
"gles2_conform_support/egl/thread_state.h",
]
deps = [
":gpu",
"//base",
"//build/config:exe_and_shlib_deps",
"//gpu/command_buffer/client:gles2_c_lib",
"//gpu/command_buffer/client:gles2_cmd_helper",
"//gpu/command_buffer/client:gles2_implementation",
"//gpu/command_buffer/service:gles2",
"//ui/gl",
"//ui/gl/init",
]
defines = [
"COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY",
"EGLAPIENTRY=",
]
if (is_android) {
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
}
if (current_os == "win") {
defines += [ "EGLAPI=__declspec(dllexport)" ]
} else {
defines += [ "EGLAPI=__attribute__((visibility(\"default\")))" ]
}
}
test("command_buffer_gles2_tests") {
sources = [
"command_buffer/tests/command_buffer_gles2_tests_main.cc",
"command_buffer/tests/egl_test.cc",
]
deps = [
":command_buffer_gles2",
"//base",
"//base/test:test_support",
"//base/third_party/dynamic_annotations",
"//testing/gmock",
"//testing/gtest",
]
defines = [
"COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY",
"EGLAPIENTRY=",
]
if (current_os == "win") {
defines += [ "EGLAPI=__declspec(dllimport)" ]
} else {
defines += [ "EGLAPI=" ]
}
libs = []
if (is_android) {
libs += [ "android" ]
deps += [ "//ui/android:ui_java" ]
}
if (is_linux && !is_component_build) {
configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
}
}
} # if (!use_static_angle)
static_library("test_support") {
testonly = true
sources = [
"command_buffer/client/client_test_helper.cc",
"command_buffer/client/client_test_helper.h",
"command_buffer/client/gles2_interface_stub.cc",
"command_buffer/client/gles2_interface_stub.h",
"command_buffer/service/error_state_mock.cc",
"command_buffer/service/error_state_mock.h",
"command_buffer/service/gles2_cmd_decoder_mock.cc",
"command_buffer/service/gles2_cmd_decoder_mock.h",
]
public_deps = [
":gles2",
":gpu",
"//gpu/command_buffer/client:gles2_interface",
]
deps = [
"//gpu/command_buffer/common",
"//testing/gmock",
"//testing/gtest",
"//ui/gl:gl_unittest_utils",
]
}
test("gl_tests") {
sources = [
"command_buffer/tests/compressed_texture_test.cc",
"command_buffer/tests/es3_misc_functions_unittest.cc",
"command_buffer/tests/gl_apply_screen_space_antialiasing_CHROMIUM_unittest.cc",
"command_buffer/tests/gl_bgra_mipmap_unittest.cc",
"command_buffer/tests/gl_bind_uniform_location_unittest.cc",
"command_buffer/tests/gl_chromium_framebuffer_mixed_samples_unittest.cc",
"command_buffer/tests/gl_chromium_framebuffer_multisample_unittest.cc",
"command_buffer/tests/gl_chromium_path_rendering_unittest.cc",
"command_buffer/tests/gl_clear_framebuffer_unittest.cc",
"command_buffer/tests/gl_compressed_copy_texture_CHROMIUM_unittest.cc",
"command_buffer/tests/gl_copy_tex_image_2d_workaround_unittest.cc",
"command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc",
"command_buffer/tests/gl_cube_map_texture_unittest.cc",
"command_buffer/tests/gl_depth_texture_unittest.cc",
"command_buffer/tests/gl_deschedule_unittest.cc",
"command_buffer/tests/gl_dynamic_config_unittest.cc",
"command_buffer/tests/gl_ext_blend_func_extended_unittest.cc",
"command_buffer/tests/gl_ext_multisample_compatibility_unittest.cc",
"command_buffer/tests/gl_ext_srgb_unittest.cc",
"command_buffer/tests/gl_ext_window_rectangles_unittest.cc",
"command_buffer/tests/gl_fence_sync_unittest.cc",
"command_buffer/tests/gl_gpu_memory_buffer_unittest.cc",
"command_buffer/tests/gl_iosurface_readback_workaround_unittest.cc",
"command_buffer/tests/gl_lose_context_chromium_unittest.cc",
"command_buffer/tests/gl_manager.cc",
"command_buffer/tests/gl_manager.h",
"command_buffer/tests/gl_map_buffer_range_unittest.cc",
"command_buffer/tests/gl_native_gmb_backbuffer_unittest.cc",
"command_buffer/tests/gl_object_bindings_unittest.cc",
"command_buffer/tests/gl_oob_attrib_unittest.cc",
"command_buffer/tests/gl_pointcoord_unittest.cc",
"command_buffer/tests/gl_program_unittest.cc",
"command_buffer/tests/gl_query_unittest.cc",
"command_buffer/tests/gl_readback_unittest.cc",
"command_buffer/tests/gl_request_extension_unittest.cc",
"command_buffer/tests/gl_set_aggressively_free_resources_unittest.cc",
"command_buffer/tests/gl_shared_resources_unittest.cc",
"command_buffer/tests/gl_stream_draw_unittest.cc",
"command_buffer/tests/gl_test_utils.cc",
"command_buffer/tests/gl_test_utils.h",
"command_buffer/tests/gl_tests_main.cc",
"command_buffer/tests/gl_texture_mailbox_unittest.cc",
"command_buffer/tests/gl_texture_storage_unittest.cc",
"command_buffer/tests/gl_unittest.cc",
"command_buffer/tests/gl_unittests_android.cc",
"command_buffer/tests/gl_virtual_contexts_ext_window_rectangles_unittest.cc",
"command_buffer/tests/gl_virtual_contexts_unittest.cc",
"command_buffer/tests/occlusion_query_unittest.cc",
"command_buffer/tests/texture_image_factory.cc",
"command_buffer/tests/texture_image_factory.h",
"ipc/client/gpu_context_tests.h",
"ipc/client/gpu_in_process_context_tests.cc",
"ipc/service/direct_composition_surface_win_unittest.cc",
]
defines = [ "GL_GLEXT_PROTOTYPES" ]
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":gles2",
":gpu",
":test_support",
"//base",
"//base/test:test_support",
"//base/third_party/dynamic_annotations",
"//components/viz/test:test_support",
"//gpu/command_buffer/client:gles2_c_lib",
"//gpu/command_buffer/client:gles2_implementation",
"//gpu/command_buffer/common:gles2_utils",
"//gpu/ipc:gl_in_process_context",
"//gpu/ipc/service",
"//testing/gmock",
"//testing/gtest",
"//third_party/angle:translator",
"//ui/gfx",
"//ui/gfx:test_support",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/gl/init",
]
libs = []
if (is_android) {
libs += [ "android" ]
deps += [ "//ui/android:ui_java" ]
} else if (is_mac) {
libs += [ "IOSurface.framework" ]
} else if (is_win) {
deps += [
"//ui/platform_window",
"//ui/platform_window:platform_impls",
]
}
}
test("gpu_unittests") {
sources = [
"command_buffer/client/buffer_tracker_unittest.cc",
"command_buffer/client/client_discardable_manager_unittest.cc",
"command_buffer/client/cmd_buffer_helper_test.cc",
"command_buffer/client/command_buffer_direct_locked.cc",
"command_buffer/client/command_buffer_direct_locked.h",
"command_buffer/client/fenced_allocator_test.cc",
"command_buffer/client/gles2_implementation_unittest.cc",
"command_buffer/client/mapped_memory_unittest.cc",
"command_buffer/client/program_info_manager_unittest.cc",
"command_buffer/client/query_tracker_unittest.cc",
"command_buffer/client/raster_implementation_gles_unittest.cc",
"command_buffer/client/ring_buffer_test.cc",
"command_buffer/client/transfer_buffer_unittest.cc",
"command_buffer/client/vertex_array_object_manager_unittest.cc",
"command_buffer/common/activity_flags_unittest.cc",
"command_buffer/common/bitfield_helpers_test.cc",
"command_buffer/common/buffer_unittest.cc",
"command_buffer/common/command_buffer_shared_test.cc",
"command_buffer/common/debug_marker_manager_unittest.cc",
"command_buffer/common/discardable_handle_unittest.cc",
"command_buffer/common/gles2_cmd_format_test.cc",
"command_buffer/common/gles2_cmd_format_test_autogen.h",
"command_buffer/common/gles2_cmd_utils_unittest.cc",
"command_buffer/common/id_allocator_test.cc",
"command_buffer/common/id_type_unittest.cc",
"command_buffer/common/unittest_main.cc",
"command_buffer/service/buffer_manager_unittest.cc",
"command_buffer/service/client_service_map_unittest.cc",
"command_buffer/service/command_buffer_service_unittest.cc",
"command_buffer/service/common_decoder_unittest.cc",
"command_buffer/service/context_group_unittest.cc",
"command_buffer/service/context_state_unittest.cc",
"command_buffer/service/feature_info_unittest.cc",
"command_buffer/service/framebuffer_manager_unittest.cc",
"command_buffer/service/gl_context_mock.cc",
"command_buffer/service/gl_context_mock.h",
"command_buffer/service/gl_context_virtual_unittest.cc",
"command_buffer/service/gl_surface_mock.cc",
"command_buffer/service/gl_surface_mock.h",
"command_buffer/service/gles2_cmd_decoder_unittest.cc",
"command_buffer/service/gles2_cmd_decoder_unittest.h",
"command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h",
"command_buffer/service/gles2_cmd_decoder_unittest_1.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h",
"command_buffer/service/gles2_cmd_decoder_unittest_2.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h",
"command_buffer/service/gles2_cmd_decoder_unittest_3.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h",
"command_buffer/service/gles2_cmd_decoder_unittest_attribs.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_base.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_base.h",
"command_buffer/service/gles2_cmd_decoder_unittest_buffers.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_context_lost.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_drawing.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_extensions.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_programs.cc",
"command_buffer/service/gles2_cmd_decoder_unittest_textures.cc",
"command_buffer/service/gpu_service_test.cc",
"command_buffer/service/gpu_service_test.h",
"command_buffer/service/gpu_tracer_unittest.cc",
"command_buffer/service/id_manager_unittest.cc",
"command_buffer/service/indexed_buffer_binding_host_unittest.cc",
"command_buffer/service/mailbox_manager_unittest.cc",
"command_buffer/service/memory_program_cache_unittest.cc",
"command_buffer/service/mocks.cc",
"command_buffer/service/mocks.h",
"command_buffer/service/path_manager_unittest.cc",
"command_buffer/service/program_cache_unittest.cc",
"command_buffer/service/program_manager_unittest.cc",
"command_buffer/service/query_manager_unittest.cc",
"command_buffer/service/renderbuffer_manager_unittest.cc",
"command_buffer/service/scheduler_unittest.cc",
"command_buffer/service/service_discardable_manager_unittest.cc",
"command_buffer/service/shader_manager_unittest.cc",
"command_buffer/service/shader_translator_cache_unittest.cc",
"command_buffer/service/shader_translator_unittest.cc",
"command_buffer/service/sync_point_manager_unittest.cc",
"command_buffer/service/test_helper.cc",
"command_buffer/service/test_helper.h",
"command_buffer/service/texture_manager_unittest.cc",
"command_buffer/service/transfer_buffer_manager_unittest.cc",
"command_buffer/service/transform_feedback_manager_unittest.cc",
"command_buffer/service/vertex_array_manager_unittest.cc",
"command_buffer/service/vertex_attrib_manager_unittest.cc",
"config/gpu_blacklist_unittest.cc",
"config/gpu_control_list_entry_unittest.cc",
"config/gpu_control_list_testing_arrays_and_structs_autogen.h",
"config/gpu_control_list_testing_autogen.cc",
"config/gpu_control_list_testing_autogen.h",
"config/gpu_control_list_testing_data.h",
"config/gpu_control_list_testing_entry_enums_autogen.h",
"config/gpu_control_list_testing_exceptions_autogen.h",
"config/gpu_control_list_unittest.cc",
"config/gpu_control_list_version_unittest.cc",
"config/gpu_driver_bug_list_unittest.cc",
"config/gpu_info_collector_unittest.cc",
"config/gpu_info_unittest.cc",
"config/gpu_test_config_unittest.cc",
"config/gpu_test_expectations_parser_unittest.cc",
"config/gpu_util_unittest.cc",
"ipc/client/gpu_memory_buffer_impl_shared_memory_unittest.cc",
"ipc/client/gpu_memory_buffer_impl_test_template.h",
"ipc/common/gpu_preferences_util_unittest.cc",
"ipc/common/struct_traits_unittest.cc",
"ipc/host/shader_disk_cache_unittest.cc",
]
if (is_mac) {
sources += [ "ipc/client/gpu_memory_buffer_impl_io_surface_unittest.cc" ]
}
if (is_linux) {
sources += [ "ipc/client/gpu_memory_buffer_impl_native_pixmap_unittest.cc" ]
}
if (is_win) {
sources += [ "ipc/client/gpu_memory_buffer_impl_dxgi_unittest.cc" ]
}
if (is_android) {
sources += [
"ipc/client/gpu_memory_buffer_impl_android_hardware_buffer_unittest.cc",
]
}
if (is_posix && !is_mac) {
sources += [ "command_buffer/service/gpu_fence_manager_unittest.cc" ]
}
# TODO(geofflang): Run passthrough command decoder unittests on more platforms
# once initialization of ANGLE's NULL context is supported
if ((is_win || (is_linux && !use_ozone)) && !is_asan) {
sources += [
"command_buffer/service/gles2_cmd_decoder_passthrough_unittest_buffers.cc",
"command_buffer/service/gles2_cmd_decoder_passthrough_unittest_commands.cc",
"command_buffer/service/gles2_cmd_decoder_passthrough_unittest_drawing.cc",
"command_buffer/service/gles2_cmd_decoder_passthrough_unittest_framebuffers.cc",
]
}
configs += [ "//build/config:precompiled_headers" ]
deps = [
":gles2",
":gpu",
":test_support",
"//base",
"//base/test:test_support",
"//base/third_party/dynamic_annotations",
"//cc/paint",
"//components/viz/common:resource_format",
"//gpu/command_buffer/client:gles2_c_lib",
"//gpu/command_buffer/client:gles2_implementation",
"//gpu/command_buffer/common:gles2_utils",
"//gpu/ipc:gl_in_process_context",
"//gpu/ipc/common:gpu_preferences_util",
"//gpu/ipc/common:test_interfaces",
"//gpu/ipc/host",
"//mojo/edk/system",
"//mojo/public/cpp/bindings",
"//net:test_support",
"//testing/gmock",
"//testing/gtest",
"//third_party/angle:translator",
"//ui/gfx",
"//ui/gfx:test_support",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/gl:gl_unittest_utils",
"//ui/gl:test_support",
]
if (is_android) {
deps += [
"//ui/android:ui_java",
"//ui/gl:gl_jni_headers",
]
}
if (use_ozone) {
deps += [ "//ui/ozone" ]
}
}
test("gpu_perftests") {
sources = [
"perftests/measurements.cc",
"perftests/measurements.h",
"perftests/run_all_tests.cc",
"perftests/texture_upload_perftest.cc",
]
deps = [
":gpu",
"//base",
"//base/test:test_support",
"//gpu/command_buffer/client:gles2_implementation",
"//testing/gmock",
"//testing/gtest",
"//testing/perf",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/gl/init",
]
data = [
# Needed for isolate script to execute.
"//testing/scripts/common.py",
"//testing/xvfb.py",
"//testing/scripts/run_gtest_perf_test.py",
"//tools/perf/generate_legacy_perf_dashboard_json.py",
]
# This target should not require the Chrome executable to run.
assert_no_deps = [ "//chrome" ]
}
test("command_buffer_perftests") {
sources = [
"command_buffer/tests/decoder_perftest.cc",
"perftests/run_all_tests.cc",
]
deps = [
":gpu",
"//base",
"//base/test:test_support",
"//gpu/command_buffer/client:gles2_cmd_helper",
"//gpu/command_buffer/client:gles2_implementation",
"//gpu/command_buffer/service:gles2",
"//testing/gtest",
"//testing/perf",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/gl/init",
]
data = [
# Needed for isolate script to execute.
"//testing/scripts/common.py",
"//testing/xvfb.py",
"//testing/scripts/run_gtest_perf_test.py",
"//tools/perf/generate_legacy_perf_dashboard_json.py",
]
# This target should not require the Chrome executable to run.
assert_no_deps = [ "//chrome" ]
}
fuzzer_test("gpu_fuzzer") {
sources = [
"command_buffer/tests/fuzzer_main.cc",
]
deps = [
":gles2",
":gpu",
"//base",
"//base/third_party/dynamic_annotations",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/gl:test_support",
]
libfuzzer_options = [ "max_len=16384" ]
}
if (is_linux) {
fuzzer_test("gpu_angle_fuzzer") {
sources = [
"command_buffer/tests/fuzzer_main.cc",
]
defines = [ "GPU_FUZZER_USE_ANGLE" ]
deps = [
":gles2",
":gpu",
"//base",
"//base/third_party/dynamic_annotations",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/gl:test_support",
]
libfuzzer_options = [ "max_len=16384" ]
}
fuzzer_test("gpu_angle_passthrough_fuzzer") {
sources = [
"command_buffer/tests/fuzzer_main.cc",
]
defines = [
"GPU_FUZZER_USE_ANGLE",
"GPU_FUZZER_USE_PASSTHROUGH_CMD_DECODER",
]
deps = [
":gles2",
":gpu",
"//base",
"//base/third_party/dynamic_annotations",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/gl:test_support",
]
libfuzzer_options = [ "max_len=16384" ]
}
fuzzer_test("gpu_swiftshader_fuzzer") {
sources = [
"command_buffer/tests/fuzzer_main.cc",
]
defines = [ "GPU_FUZZER_USE_SWIFTSHADER" ]
deps = [
":gles2",
":gpu",
"//base",
"//base/third_party/dynamic_annotations",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/gl:test_support",
]
libfuzzer_options = [ "max_len=16384" ]
}
}