# 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("//third_party/protobuf/proto_library.gni")

group("service") {
  if (is_component_build) {
    public_deps = [
      "//gpu",
    ]
  } else {
    public_deps = [
      ":service_sources",
    ]
  }
}

group("gles2") {
  if (is_component_build) {
    public_deps = [
      "//gpu:gles2",
    ]
  } else {
    public_deps = [
      ":gles2_sources",
    ]
  }
}

if (is_component_build) {
  link_target_type = "jumbo_source_set"
} else {
  link_target_type = "jumbo_static_library"
}
target(link_target_type, "service_sources") {
  # External code should depend on this via //gpu/command_buffer/service above
  # rather than depending on this directly or the component build will break.
  visibility = [ "//gpu/*" ]

  sources = [
    "async_api_interface.h",
    "command_buffer_direct.cc",
    "command_buffer_direct.h",
    "command_buffer_service.cc",
    "command_buffer_service.h",
    "common_decoder.cc",
    "common_decoder.h",
    "decoder_client.h",
    "gpu_switches.cc",
    "gpu_switches.h",
    "image_factory.cc",
    "image_factory.h",
    "image_manager.cc",
    "image_manager.h",
    "mailbox_manager.h",
    "memory_tracking.h",
    "scheduler.cc",
    "scheduler.h",
    "sequence_id.h",
    "sync_point_manager.cc",
    "sync_point_manager.h",
    "texture_base.cc",
    "texture_base.h",
    "transfer_buffer_manager.cc",
    "transfer_buffer_manager.h",
  ]

  configs += [
    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",
    "//build/config:precompiled_headers",
    "//gpu:gpu_implementation",
    "//third_party/khronos:khronos_headers",
  ]

  public_deps = [
    "//gpu/command_buffer/common:common_sources",
    "//url:url",
  ]
  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//gpu/command_buffer/client:client_sources",
    "//gpu/config:config_sources",
    "//gpu/ipc/common:surface_handle_type",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
  ]

  if (is_android && !is_debug) {
    # On Android optimize more since this component can be a bottleneck.
    configs -= [ "//build/config/compiler:default_optimization" ]
    configs += [ "//build/config/compiler:optimize_max" ]
  }
}

target(link_target_type, "gles2_sources") {
  # External code should depend on this via //gpu/command_buffer/service:gles2
  # above rather than depending on this directly or the component build will
  # break.
  visibility = [ "//gpu/*" ]

  sources = [
    "abstract_texture.h",
    "buffer_manager.cc",
    "buffer_manager.h",
    "client_service_map.h",
    "context_group.cc",
    "context_group.h",
    "context_state.cc",
    "context_state.h",
    "context_state_autogen.h",
    "context_state_impl_autogen.h",
    "decoder_context.h",
    "error_state.cc",
    "error_state.h",
    "feature_info.cc",
    "feature_info.h",
    "framebuffer_completeness_cache.cc",
    "framebuffer_completeness_cache.h",
    "framebuffer_manager.cc",
    "framebuffer_manager.h",
    "gl_context_virtual.cc",
    "gl_context_virtual.h",
    "gl_state_restorer_impl.cc",
    "gl_state_restorer_impl.h",
    "gl_utils.cc",
    "gl_utils.h",
    "gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc",
    "gles2_cmd_apply_framebuffer_attachment_cmaa_intel.h",
    "gles2_cmd_clear_framebuffer.cc",
    "gles2_cmd_clear_framebuffer.h",
    "gles2_cmd_copy_tex_image.cc",
    "gles2_cmd_copy_tex_image.h",
    "gles2_cmd_copy_texture_chromium.cc",
    "gles2_cmd_copy_texture_chromium.h",
    "gles2_cmd_decoder.cc",
    "gles2_cmd_decoder.h",
    "gles2_cmd_decoder_autogen.h",
    "gles2_cmd_decoder_passthrough.cc",
    "gles2_cmd_decoder_passthrough.h",
    "gles2_cmd_decoder_passthrough_doer_prototypes.h",
    "gles2_cmd_decoder_passthrough_doers.cc",
    "gles2_cmd_decoder_passthrough_handlers.cc",
    "gles2_cmd_decoder_passthrough_handlers_autogen.cc",
    "gles2_cmd_srgb_converter.cc",
    "gles2_cmd_srgb_converter.h",
    "gles2_cmd_validation.cc",
    "gles2_cmd_validation.h",
    "gles2_cmd_validation_autogen.h",
    "gles2_cmd_validation_implementation_autogen.h",
    "gles2_query_manager.cc",
    "gles2_query_manager.h",
    "gpu_command_buffer_memory_tracker.cc",
    "gpu_command_buffer_memory_tracker.h",
    "gpu_fence_manager.cc",
    "gpu_fence_manager.h",
    "gpu_state_tracer.cc",
    "gpu_state_tracer.h",
    "gpu_tracer.cc",
    "gpu_tracer.h",
    "gr_cache_controller.cc",
    "gr_cache_controller.h",
    "gr_shader_cache.cc",
    "gr_shader_cache.h",
    "id_manager.cc",
    "id_manager.h",
    "indexed_buffer_binding_host.cc",
    "indexed_buffer_binding_host.h",
    "logger.cc",
    "logger.h",
    "mailbox_manager_factory.cc",
    "mailbox_manager_factory.h",
    "mailbox_manager_impl.cc",
    "mailbox_manager_impl.h",
    "mailbox_manager_sync.cc",
    "mailbox_manager_sync.h",
    "memory_program_cache.cc",
    "memory_program_cache.h",
    "passthrough_abstract_texture_impl.cc",
    "passthrough_abstract_texture_impl.h",
    "passthrough_program_cache.cc",
    "passthrough_program_cache.h",
    "path_manager.cc",
    "path_manager.h",
    "program_cache.cc",
    "program_cache.h",
    "program_manager.cc",
    "program_manager.h",
    "query_manager.cc",
    "query_manager.h",
    "raster_cmd_validation.cc",
    "raster_cmd_validation.h",
    "raster_cmd_validation_autogen.h",
    "raster_cmd_validation_implementation_autogen.h",
    "raster_decoder.cc",
    "raster_decoder.h",
    "raster_decoder_context_state.cc",
    "raster_decoder_context_state.h",
    "renderbuffer_manager.cc",
    "renderbuffer_manager.h",
    "sampler_manager.cc",
    "sampler_manager.h",
    "service_discardable_manager.cc",
    "service_discardable_manager.h",
    "service_font_manager.cc",
    "service_font_manager.h",
    "service_transfer_cache.cc",
    "service_transfer_cache.h",
    "service_utils.cc",
    "service_utils.h",
    "shader_manager.cc",
    "shader_manager.h",
    "shader_translator.cc",
    "shader_translator.h",
    "shader_translator_cache.cc",
    "shader_translator_cache.h",
    "shared_image_backing.cc",
    "shared_image_backing.h",
    "shared_image_backing_factory.h",
    "shared_image_backing_factory_gl_texture.cc",
    "shared_image_backing_factory_gl_texture.h",
    "shared_image_factory.cc",
    "shared_image_factory.h",
    "shared_image_manager.cc",
    "shared_image_manager.h",
    "shared_image_representation.cc",
    "shared_image_representation.h",
    "skia_utils.cc",
    "skia_utils.h",
    "texture_definition.cc",
    "texture_definition.h",
    "texture_manager.cc",
    "texture_manager.h",
    "transform_feedback_manager.cc",
    "transform_feedback_manager.h",
    "validating_abstract_texture_impl.cc",
    "validating_abstract_texture_impl.h",
    "vertex_array_manager.cc",
    "vertex_array_manager.h",
    "vertex_attrib_manager.cc",
    "vertex_attrib_manager.h",
    "webgpu_cmd_validation.cc",
    "webgpu_cmd_validation.h",
    "webgpu_cmd_validation_autogen.h",
    "webgpu_cmd_validation_implementation_autogen.h",
    "webgpu_decoder.cc",
    "webgpu_decoder.h",
    "wrapped_sk_image.cc",
    "wrapped_sk_image.h",
  ]

  if (is_android) {
    sources += [
      "ahardwarebuffer_utils.cc",
      "ahardwarebuffer_utils.h",
      "shared_image_backing_factory_ahardwarebuffer.cc",
      "shared_image_backing_factory_ahardwarebuffer.h",
    ]
  }

  configs += [
    "//build/config:precompiled_headers",
    "//gpu:gpu_gles2_implementation",
    "//gpu:raster_implementation",
    "//gpu:webgpu_implementation",
    "//third_party/khronos:khronos_headers",
  ]

  # Prefer mesa GL headers to system headers, which cause problems on Win.
  include_dirs = [ "//third_party/mesa_headers" ]

  public_deps = [
    "//gpu/command_buffer/common",
    "//gpu/command_buffer/common:gles2_sources",
    "//gpu/command_buffer/common:raster_sources",
    "//gpu/command_buffer/common:webgpu_sources",
  ]
  deps = [
    ":disk_cache_proto",
    ":service",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//cc/paint",
    "//components/viz/common:resource_format_utils",
    "//gpu/command_buffer/client",
    "//gpu/command_buffer/common:gles2_utils",
    "//gpu/config",
    "//gpu/ipc/common:surface_handle_type",
    "//third_party/angle:angle_image_util",
    "//third_party/angle:commit_id",
    "//third_party/angle:translator",
    "//third_party/protobuf:protobuf_lite",
    "//third_party/re2",
    "//third_party/smhasher:cityhash",
    "//third_party/zlib",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gfx/ipc/color",
    "//ui/gl",
    "//ui/gl/init",
  ]

  if (is_mac) {
    # Required by gles2_cmd_decoder.cc on Mac.
    libs = [
      "IOSurface.framework",
      "OpenGL.framework",
    ]
  }

  if (is_android && !is_debug) {
    # On Android optimize more since this component can be a bottleneck.
    configs -= [ "//build/config/compiler:default_optimization" ]
    configs += [ "//build/config/compiler:optimize_max" ]
  }
}

proto_library("disk_cache_proto") {
  sources = [
    "disk_cache_proto.proto",
  ]
}
