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

source_set("service") {
  sources = [
    "async_pixel_transfer_delegate.cc",
    "async_pixel_transfer_delegate.h",
    "async_pixel_transfer_manager_android.cc",
    "async_pixel_transfer_manager_idle.cc",
    "async_pixel_transfer_manager_idle.h",
    "async_pixel_transfer_manager_linux.cc",
    "async_pixel_transfer_manager_mac.cc",
    "async_pixel_transfer_manager_share_group.cc",
    "async_pixel_transfer_manager_share_group.h",
    "async_pixel_transfer_manager_stub.cc",
    "async_pixel_transfer_manager_stub.h",
    "async_pixel_transfer_manager_sync.cc",
    "async_pixel_transfer_manager_sync.h",
    "async_pixel_transfer_manager_win.cc",
    "async_pixel_transfer_manager.cc",
    "async_pixel_transfer_manager.h",
    "buffer_manager.h",
    "buffer_manager.cc",
    "cmd_buffer_engine.h",
    "cmd_parser.cc",
    "cmd_parser.h",
    "command_buffer_service.cc",
    "command_buffer_service.h",
    "common_decoder.cc",
    "common_decoder.h",
    "context_group.h",
    "context_group.cc",
    "context_state.h",
    "context_state_autogen.h",
    "context_state_impl_autogen.h",
    "context_state.cc",
    "error_state.cc",
    "error_state.h",
    "feature_info.h",
    "feature_info.cc",
    "framebuffer_manager.h",
    "framebuffer_manager.cc",
    "gles2_cmd_copy_texture_chromium.cc",
    "gles2_cmd_copy_texture_chromium.h",
    "gles2_cmd_decoder.h",
    "gles2_cmd_decoder_autogen.h",
    "gles2_cmd_decoder.cc",
    "gles2_cmd_validation.h",
    "gles2_cmd_validation.cc",
    "gles2_cmd_validation_autogen.h",
    "gles2_cmd_validation_implementation_autogen.h",
    "gl_context_virtual.cc",
    "gl_context_virtual.h",
    "gl_state_restorer_impl.cc",
    "gl_state_restorer_impl.h",
    "gl_utils.h",
    "gpu_scheduler.cc",
    "gpu_scheduler.h",
    "gpu_scheduler_mock.h",
    "gpu_state_tracer.cc",
    "gpu_state_tracer.h",
    "gpu_switches.cc",
    "gpu_switches.h",
    "gpu_tracer.cc",
    "gpu_tracer.h",
    "id_manager.h",
    "id_manager.cc",
    "image_manager.cc",
    "image_manager.h",
    "in_process_command_buffer.cc",
    "in_process_command_buffer.h",
    "logger.cc",
    "logger.h",
    "mailbox_manager.cc",
    "mailbox_manager.h",
    "mailbox_synchronizer.cc",
    "mailbox_synchronizer.h",
    "memory_program_cache.h",
    "memory_program_cache.cc",
    "mocks.h",
    "program_manager.h",
    "program_manager.cc",
    "query_manager.h",
    "query_manager.cc",
    "renderbuffer_manager.h",
    "renderbuffer_manager.cc",
    "program_cache.h",
    "program_cache.cc",
    "shader_manager.h",
    "shader_manager.cc",
    "shader_translator.h",
    "shader_translator.cc",
    "shader_translator_cache.h",
    "shader_translator_cache.cc",
    "stream_texture_manager_in_process_android.h",
    "stream_texture_manager_in_process_android.cc",
    "texture_definition.h",
    "texture_definition.cc",
    "texture_manager.h",
    "texture_manager.cc",
    "transfer_buffer_manager.cc",
    "transfer_buffer_manager.h",
    "vertex_array_manager.h",
    "vertex_array_manager.cc",
    "vertex_attrib_manager.h",
    "vertex_attrib_manager.cc",
  ]

  defines = [ "GPU_IMPLEMENTATION" ]

  configs += [
    "//third_party/khronos:khronos_headers",
  ]

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

  public_deps = [
    "//gpu/command_buffer/common",
  ]
  deps = [
    ":disk_cache_proto",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//crypto",
    "//third_party/angle:translator",
    "//third_party/protobuf:protobuf_lite",
    "//third_party/re2",
    "//third_party/smhasher:cityhash",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
  ]

  if (ui_compositor_image_transport) {
    include_dirs += [ "//third_party/khronos" ]
  }

  if (is_win || is_android || (is_linux && use_x11)) {
    sources += [
      "async_pixel_transfer_manager_egl.cc",
      "async_pixel_transfer_manager_egl.h",
    ]
  }

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

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