# 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("//build/config/jumbo.gni")
import("//build/config/ui.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//testing/test.gni")
import("//third_party/protobuf/proto_library.gni")
import("//ui/gl/features.gni")

config("gpu_implementation") {
  defines = [ "GPU_IMPLEMENTATION" ]
  configs = [
    "//build/config/compiler:noshadowing",
    "//build/config/compiler:wexit_time_destructors",
  ]
}

config("gpu_gles2_implementation") {
  defines = [ "GPU_GLES2_IMPLEMENTATION" ]
  configs = [
    "//build/config/compiler:noshadowing",
    "//build/config/compiler:wexit_time_destructors",
  ]
}

config("gpu_util_implementation") {
  defines = [ "GPU_UTIL_IMPLEMENTATION" ]
  configs = [
    "//build/config/compiler:noshadowing",
    "//build/config/compiler:wexit_time_destructors",
  ]
}

config("raster_implementation") {
  defines = [ "RASTER_IMPLEMENTATION" ]
  configs = [
    "//build/config/compiler:noshadowing",
    "//build/config/compiler:wexit_time_destructors",
  ]
}

config("webgpu_implementation") {
  defines = [ "WEBGPU_IMPLEMENTATION" ]
  configs = [
    "//build/config/compiler:noshadowing",
    "//build/config/compiler:wexit_time_destructors",
  ]
}

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/common:raster_sources",
    "//gpu/command_buffer/service:gles2_sources",
  ]
}

component("raster") {
  public_deps = [
    "//gpu/command_buffer/client:raster_sources",
  ]
}

component("webgpu") {
  public_deps = [
    "//gpu/command_buffer/client:webgpu_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",
      "//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)

jumbo_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/client/gles2_interface_stub_autogen.h",
    "command_buffer/client/gles2_interface_stub_impl_autogen.h",
    "command_buffer/client/webgpu_interface_stub.cc",
    "command_buffer/client/webgpu_interface_stub.h",
    "command_buffer/client/webgpu_interface_stub_autogen.h",
    "command_buffer/client/webgpu_interface_stub_impl_autogen.h",
    "command_buffer/service/copy_texture_chromium_mock.cc",
    "command_buffer/service/copy_texture_chromium_mock.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",
    "ipc/raster_in_process_context.cc",
    "ipc/raster_in_process_context.h",
    "ipc/service/gpu_memory_buffer_factory_test_template.h",
    "ipc/webgpu_in_process_context.cc",
    "ipc/webgpu_in_process_context.h",
  ]

  public_deps = [
    ":gles2",
    ":gpu",
    ":webgpu",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/client:webgpu_interface",
    "//gpu/ipc:gpu_thread_holder",
  ]
  deps = [
    "//base/test:test_support",
    "//gpu/command_buffer/client:raster",
    "//gpu/command_buffer/common",
    "//gpu/ipc:gl_in_process_context",
    "//gpu/ipc/common",
    "//gpu/ipc/service",
    "//gpu/skia_bindings:skia_bindings",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/gfx:test_support",
    "//ui/gl:gl_unittest_utils",
    "//ui/gl:test_support",
  ]
}

if (!is_android && !is_fuchsia && !is_chromeos) {
  proto_library("gl_lpm_fuzzer_proto") {
    sources = [
      "command_buffer/tests/lpm/gl_lpm_fuzzer.proto",
    ]

    use_protobuf_full = true
    deps = [
      "//third_party/protobuf:protobuf_full",
    ]
  }

  static_library("gl_lpm_shader_to_string") {
    sources = [
      "command_buffer/tests/lpm/gl_lpm_shader_to_string.cc",
      "command_buffer/tests/lpm/gl_lpm_shader_to_string.h",
    ]

    deps = [
      ":gl_lpm_fuzzer_proto",
      "//base:base",
    ]
  }

  test("gl_lpm_shader_to_string_unittest") {
    sources = [
      "command_buffer/tests/lpm/gl_lpm_shader_to_string_unittest.cc",
    ]

    deps = [
      ":gl_lpm_shader_to_string",
      "//base/test:run_all_unittests",
      "//testing/gtest",
      "//third_party/protobuf:protobuf_full",
    ]
  }

  fuzzer_test("gl_lpm_fuzzer") {
    sources = [
      "command_buffer/tests/gl_manager.cc",
      "command_buffer/tests/gl_manager.h",
      "command_buffer/tests/gl_test_utils.cc",
      "command_buffer/tests/gl_test_utils.h",
      "command_buffer/tests/lpm/gl_lpm_fuzzer.cc",
    ]

    defines = [ "GL_GLEXT_PROTOTYPES" ]

    if (is_mac) {
      libs = [ "IOSurface.framework" ]
    }

    deps = [
      ":gl_lpm_fuzzer_proto",
      ":gl_lpm_shader_to_string",
      ":gles2",
      ":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:service",
      "//testing/gtest:gtest",
      "//third_party/libprotobuf-mutator",
      "//ui/gfx:gfx",
      "//ui/gl:gl",
      "//ui/gl/init:init",
    ]
  }
}

test("gl_tests") {
  sources = [
    "command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc",
    "command_buffer/service/shared_image_factory_unittest.cc",
    "command_buffer/service/shared_image_manager_unittest.cc",
    "command_buffer/tests/compressed_texture_test.cc",
    "command_buffer/tests/es3_misc_functions_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_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_discardable_textures_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_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_oes_egl_image_unittest.cc",
    "command_buffer/tests/gl_offscreen_surface_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_unallocated_texture_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/gl_webgl_multi_draw_test.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/client/raster_in_process_context_tests.cc",
  ]

  if (use_dawn) {
    sources += [
      "command_buffer/tests/webgpu_fence_unittest.cc",
      "command_buffer/tests/webgpu_mailbox_unittest.cc",
      "command_buffer/tests/webgpu_test.cc",
      "command_buffer/tests/webgpu_test.h",
    ]
  }

  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",
    "//cc/paint",
    "//components/viz/test:test_support",
    "//gpu/command_buffer/client:gles2_c_lib",
    "//gpu/command_buffer/client:gles2_implementation",
    "//gpu/command_buffer/client:raster",
    "//gpu/command_buffer/client:webgpu",
    "//gpu/command_buffer/common:gles2_utils",
    "//gpu/ipc:gl_in_process_context",
    "//gpu/ipc/host",
    "//gpu/ipc/service",
    "//mojo/core/embedder",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/angle:translator",
    "//third_party/libyuv",
    "//ui/gfx",
    "//ui/gfx:test_support",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/gl:test_support",
    "//ui/gl/init",
  ]

  if (use_ozone) {
    deps += [ "//ui/ozone" ]
  }

  libs = []

  if (is_android) {
    libs += [ "android" ]
    deps += [ "//ui/android:ui_java" ]
    sources += [ "command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc" ]
  } else if (is_mac) {
    libs += [ "IOSurface.framework" ]
    sources += [ "command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc" ]
  } else if (is_win) {
    deps += [
      "//ui/platform_window",
      "//ui/platform_window:platform_impls",
    ]
    sources += [
      "command_buffer/service/shared_image_backing_factory_d3d_unittest.cc",
    ]
  }

  if (use_dawn) {
    deps += [
      "//third_party/dawn:libdawn_native",
      "//third_party/dawn/src/dawn:libdawn_proc",
      "//third_party/dawn/src/dawn:dawncpp",
    ]
  }
}

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/gles2_implementation_unittest_autogen.h",
    "command_buffer/client/mapped_memory_unittest.cc",
    "command_buffer/client/mock_transfer_buffer.cc",
    "command_buffer/client/mock_transfer_buffer.h",
    "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/raster_implementation_unittest.cc",
    "command_buffer/client/raster_implementation_unittest_autogen.h",
    "command_buffer/client/ring_buffer_test.cc",
    "command_buffer/client/transfer_buffer_cmd_copy_helpers_unittest.cc",
    "command_buffer/client/transfer_buffer_unittest.cc",
    "command_buffer/client/vertex_array_object_manager_unittest.cc",
    "command_buffer/client/webgpu_implementation_unittest.cc",
    "command_buffer/client/webgpu_implementation_unittest_autogen.h",
    "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/raster_cmd_format_test.cc",
    "command_buffer/common/raster_cmd_format_test_autogen.h",
    "command_buffer/common/unittest_main.cc",
    "command_buffer/common/webgpu_cmd_format_test.cc",
    "command_buffer/common/webgpu_cmd_format_test_autogen.h",
    "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_test_helpers.cc",
    "command_buffer/service/context_state_test_helpers.h",
    "command_buffer/service/context_state_test_helpers_autogen.h",
    "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_stream_texture_image_stub.cc",
    "command_buffer/service/gl_stream_texture_image_stub.h",
    "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_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_4.cc",
    "command_buffer/service/gles2_cmd_decoder_unittest_4_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/gr_cache_controller_unittest.cc",
    "command_buffer/service/gr_shader_cache_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/multi_draw_manager_unittest.cc",
    "command_buffer/service/passthrough_program_cache_unittest.cc",
    "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/raster_decoder_unittest.cc",
    "command_buffer/service/raster_decoder_unittest_1.cc",
    "command_buffer/service/raster_decoder_unittest_base.cc",
    "command_buffer/service/raster_decoder_unittest_base.h",
    "command_buffer/service/raster_decoder_unittest_context_lost.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/service_transfer_cache_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/shared_context_state_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_blocklist_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_preferences_unittest.cc",
    "config/gpu_test_config_unittest.cc",
    "config/gpu_test_expectations_parser_unittest.cc",
    "config/gpu_util_unittest.cc",
    "ipc/client/command_buffer_proxy_impl_unittest.cc",
    "ipc/common/gpu_memory_buffer_impl_shared_memory_unittest.cc",
    "ipc/common/gpu_memory_buffer_impl_test_template.h",
    "ipc/common/mojom_traits_unittest.cc",
    "ipc/host/shader_disk_cache_unittest.cc",
    "ipc/service/gpu_channel_manager_unittest.cc",
    "ipc/service/gpu_channel_test_common.cc",
    "ipc/service/gpu_channel_test_common.h",
    "ipc/service/gpu_channel_unittest.cc",
    "ipc/service/gpu_watchdog_thread_unittest.cc",
  ]

  if (is_chromeos) {
    # Image decode acceleration with hardware is only supported in Chrome OS.
    # The intention is to run this test in the linux-chromeos build.
    sources += [ "ipc/service/image_decode_accelerator_stub_unittest.cc" ]
  }

  if (use_dawn) {
    sources += [ "command_buffer/service/webgpu_decoder_unittest.cc" ]
  }

  if (is_mac) {
    sources += [
      "ipc/common/gpu_memory_buffer_impl_io_surface_unittest.cc",
      "ipc/service/gpu_memory_buffer_factory_io_surface_unittest.cc",
    ]
  }

  if (is_linux || use_ozone) {
    sources += [
      "ipc/common/gpu_memory_buffer_impl_native_pixmap_unittest.cc",
      "ipc/service/gpu_memory_buffer_factory_native_pixmap_unittest.cc",
    ]
  }

  if (is_win) {
    sources += [
      "ipc/common/gpu_memory_buffer_impl_dxgi_unittest.cc",
      "ipc/service/gpu_memory_buffer_factory_dxgi_unittest.cc",
    ]
  }

  if (is_android) {
    sources += [
      "ipc/common/gpu_memory_buffer_impl_android_hardware_buffer_unittest.cc",
    ]
  }

  if (is_linux || is_android || is_chromeos) {
    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_discardable_textures.cc",
      "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_drawing.cc",
      "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_framebuffers.cc",
      "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_textures.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/client:raster",
    "//gpu/command_buffer/client:webgpu",
    "//gpu/command_buffer/common",
    "//gpu/command_buffer/common:gles2_utils",
    "//gpu/command_buffer/service",
    "//gpu/config",
    "//gpu/ipc:gl_in_process_context",
    "//gpu/ipc/client",
    "//gpu/ipc/common",
    "//gpu/ipc/common:test_interfaces",
    "//gpu/ipc/host",
    "//gpu/ipc/service",
    "//ipc:test_support",
    "//mojo/core/embedder",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/test_support:test_utils",
    "//net:test_support",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/angle:translator",
    "//third_party/mesa_headers",
    "//ui/gfx",
    "//ui/gfx:test_support",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/gl:gl_unittest_utils",
    "//ui/gl:test_support",
    "//url",
  ]

  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",
  ]

  if (use_ozone) {
    deps += [ "//ui/ozone" ]
  }

  data_deps = [
    # Needed for isolate script to execute.
    "//testing:run_perf_test",
    "//third_party/mesa_headers",
  ]

  # 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",
  ]

  if (use_ozone) {
    deps += [ "//ui/ozone" ]
  }

  data_deps = [
    # Needed for isolate script to execute.
    "//testing:run_perf_test",
  ]

  # 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:i18n",
    "//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" ]
  }

  fuzzer_test("gpu_raster_fuzzer") {
    sources = [
      "command_buffer/tests/fuzzer_main.cc",
    ]

    defines = [ "GPU_FUZZER_USE_RASTER_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_raster_passthrough_fuzzer") {
    sources = [
      "command_buffer/tests/fuzzer_main.cc",
    ]

    defines = [
      "GPU_FUZZER_USE_ANGLE",
      "GPU_FUZZER_USE_RASTER_DECODER",
      "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_raster_swiftshader_fuzzer") {
    sources = [
      "command_buffer/tests/fuzzer_main.cc",
    ]

    defines = [
      "GPU_FUZZER_USE_RASTER_DECODER",
      "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" ]
  }

  fuzzer_test("gpu_raster_angle_fuzzer") {
    sources = [
      "command_buffer/tests/fuzzer_main.cc",
    ]

    defines = [
      "GPU_FUZZER_USE_RASTER_DECODER",
      "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" ]
  }
}
