# Copyright (c) 2013 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.

# The files here go into the "gpu" component in a component build (with
# "command_buffer_client" and "gles2_cmd_helper" just forwarding) and goes into
# separate static libraries in non-component build.
group("client") {
  if (is_component_build) {
    public_deps = [
      "//gpu",
    ]
  } else {
    public_deps = [
      ":client_sources",
    ]
  }
}

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

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

source_set("client_sources") {
  # External code should depend on this via //gpu/client above rather than
  # depending on this directly or the component build will break.
  visibility = [ "//gpu/*" ]

  sources = [
    "client_discardable_manager.cc",
    "client_discardable_manager.h",
    "client_discardable_texture_manager.cc",
    "client_discardable_texture_manager.h",
    "cmd_buffer_helper.cc",
    "cmd_buffer_helper.h",
    "fenced_allocator.cc",
    "fenced_allocator.h",
    "gpu_control.h",
    "gpu_memory_buffer_manager.cc",
    "gpu_memory_buffer_manager.h",
    "mapped_memory.cc",
    "mapped_memory.h",
    "ring_buffer.cc",
    "ring_buffer.h",
    "shared_image_interface.h",
    "transfer_buffer.cc",
    "transfer_buffer.h",
  ]

  configs += [ "//gpu:gpu_implementation" ]

  all_dependent_configs = [ "//third_party/khronos:khronos_headers" ]

  public_deps = [
    "//base",
    "//components/viz/common:resource_format",
  ]
  deps = [
    "//gpu/command_buffer/common:common_sources",
    "//gpu/ipc/common:surface_handle_type",
    "//ui/gfx:memory_buffer",
    "//ui/gfx/geometry",
  ]
}

source_set("gles2_cmd_helper_sources") {
  visibility = [ "//gpu/*" ]
  sources = [
    "gles2_cmd_helper.cc",
    "gles2_cmd_helper.h",
    "gles2_cmd_helper_autogen.h",
  ]

  configs += [ "//gpu:gpu_gles2_implementation" ]

  deps = [
    ":client",
    "//base",
    "//gpu/command_buffer/common",
    "//gpu/command_buffer/common:gles2_sources",
  ]
}

gles2_c_lib_source_files = [
  "gles2_c_lib.cc",
  "gles2_c_lib_autogen.h",
  "gles2_c_lib_export.h",
  "gles2_lib.cc",
  "gles2_lib.h",
]

gles2_implementation_source_files = [
  "buffer_tracker.cc",
  "buffer_tracker.h",
  "client_context_state.cc",
  "client_context_state.h",
  "client_context_state_autogen.h",
  "client_context_state_impl_autogen.h",
  "client_transfer_cache.cc",
  "client_transfer_cache.h",
  "gles2_impl_export.h",
  "gles2_implementation.cc",
  "gles2_implementation.h",
  "gles2_implementation_autogen.h",
  "gles2_implementation_impl_autogen.h",
  "gles2_trace_implementation.cc",
  "gles2_trace_implementation.h",
  "gles2_trace_implementation_autogen.h",
  "gles2_trace_implementation_impl_autogen.h",
  "gpu_switches.cc",
  "gpu_switches.h",
  "implementation_base.cc",
  "implementation_base.h",
  "logging.cc",
  "logging.h",
  "program_info_manager.cc",
  "program_info_manager.h",
  "query_tracker.cc",
  "query_tracker.h",
  "readback_buffer_shadow_tracker.cc",
  "readback_buffer_shadow_tracker.h",
  "share_group.cc",
  "share_group.h",
  "vertex_array_object_manager.cc",
  "vertex_array_object_manager.h",
]

# Provides GLES2 interface, but does not cause any implementation to be linked
# in. Useful when a target uses the interface, but permits its users to choose
# an implementation.
source_set("gles2_interface") {
  sources = [
    "gles2_interface.h",
  ]
  public_configs = [ "//third_party/khronos:khronos_headers" ]
  deps = [
    "//base",
  ]
}

source_set("raster_interface") {
  sources = [
    "raster_interface.h",
  ]
  public_configs = [ "//third_party/khronos:khronos_headers" ]
  deps = [
    "//base",
    "//components/viz/common:resource_format",
    "//ui/gfx:buffer_types",
  ]
}

# Library emulates GLES2 using command_buffers.
component("gles2_implementation") {
  sources = gles2_implementation_source_files

  defines = [ "GLES2_IMPL_IMPLEMENTATION" ]
  all_dependent_configs = [ "//third_party/khronos:khronos_headers" ]

  deps = [
    ":client",
    ":gles2_cmd_helper",
    ":gles2_interface",
    "//base",
    "//gpu/command_buffer/common",
    "//gpu/command_buffer/common:gles2",
    "//gpu/command_buffer/common:gles2_utils",
    "//ui/gfx/geometry",
  ]

  if (!is_nacl) {
    deps += [
      "//components/viz/common:resource_format",
      "//ui/gfx:color_space",
      "//ui/gfx/ipc/color",
    ]
  }
}

source_set("raster_sources") {
  # External code should depend on this via //gpu:raster above rather than
  # depending on this directly or the component build will break.
  visibility = [ "//gpu/*" ]
  all_dependent_configs = [ "//third_party/khronos:khronos_headers" ]

  configs += [ "//gpu:raster_implementation" ]
  deps = [
    ":client",
    ":gles2_implementation",
    ":gles2_interface",
    ":raster_interface",
    "//base",
    "//cc/paint",
    "//components/viz/common:resource_format_utils",
    "//gpu/command_buffer/common",
    "//gpu/command_buffer/common:gles2",
    "//gpu/command_buffer/common:gles2_utils",
    "//gpu/command_buffer/common:raster",
    "//ui/gfx:color_space",
    "//ui/gfx/geometry",
    "//ui/gfx/ipc/color",
  ]
  sources = [
    "client_font_manager.cc",
    "client_font_manager.h",
    "raster_cmd_helper.cc",
    "raster_cmd_helper.h",
    "raster_cmd_helper_autogen.h",
    "raster_implementation.cc",
    "raster_implementation.h",
    "raster_implementation_autogen.h",
    "raster_implementation_gles.cc",
    "raster_implementation_gles.h",
    "raster_implementation_impl_autogen.h",
  ]
}

# Library emulates GLES2 using command_buffers.
component("gles2_implementation_no_check") {
  sources = gles2_implementation_source_files

  defines = [
    "GLES2_IMPL_IMPLEMENTATION",
    "GLES2_CONFORMANCE_TESTS=1",
  ]

  deps = [
    ":client",
    ":gles2_cmd_helper",
    ":gles2_interface",
    "//base",
    "//gpu/command_buffer/common",
    "//gpu/command_buffer/common:gles2",
    "//gpu/command_buffer/common:gles2_utils",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]

  if (!is_nacl) {
    deps += [
      "//cc/paint",
      "//ui/gfx:color_space",
      "//ui/gfx/ipc/color",
    ]
  }
}

component("gles2_c_lib") {
  sources = gles2_c_lib_source_files
  defines = [ "GLES2_C_LIB_IMPLEMENTATION" ]

  deps = [
    ":gles2_interface",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//gpu/command_buffer/common",
  ]
}

# Same as gles2_c_lib except with no parameter checking. Required for
# OpenGL ES 2.0 conformance tests.
component("gles2_c_lib_nocheck") {
  sources = gles2_c_lib_source_files

  defines = [
    "GLES2_C_LIB_IMPLEMENTATION",
    "GLES2_CONFORMANCE_TESTS=1",
  ]
  deps = [
    ":gles2_interface",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//gpu/command_buffer/common",
  ]
}
