# 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.

source_set("client") {
  sources = [
    "cmd_buffer_helper.cc",
    "cmd_buffer_helper.h",
    "fenced_allocator.cc",
    "fenced_allocator.h",
    "gpu_control.h",
    "mapped_memory.cc",
    "mapped_memory.h",
    "ring_buffer.cc",
    "ring_buffer.h",
    "transfer_buffer.cc",
    "transfer_buffer.h",
  ]

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

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

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

group("gles2_cmd_helper") {
  public_deps = [
    ":gles2_cmd_helper_sources",
  ]
}

source_set("gles2_cmd_helper_sources") {
  visibility = [
    ":gles2_cmd_helper",
    "//gpu",
    "//mojo/gles2:control_thunks",
  ]
  sources = [
    "gles2_cmd_helper.cc",
    "gles2_cmd_helper.h",
    "gles2_cmd_helper_autogen.h",
  ]

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

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

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",
  "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",
  "program_info_manager.cc",
  "program_info_manager.h",
  "query_tracker.cc",
  "query_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("gpu_memory_buffer_manager") {
  sources = [
    "gpu_memory_buffer_manager.cc",
    "gpu_memory_buffer_manager.h",
  ]
  configs += [ "//gpu:gpu_implementation" ]
  deps = [
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}

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

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  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_utils",
    "//ui/gfx/geometry",
  ]
}

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

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  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_utils",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}

component("gl_in_process_context") {
  sources = [
    "gl_in_process_context.cc",
    "gl_in_process_context.h",
    "gl_in_process_context_export.h",
  ]

  defines = [ "GL_IN_PROCESS_CONTEXT_IMPLEMENTATION" ]

  deps = [
    ":gles2_implementation",
    ":gpu_memory_buffer_manager",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//gpu",
    "//gpu/command_buffer/common:gles2_utils",
    "//ui/gfx/geometry",
    "//ui/gl",
  ]
}

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

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

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

# GYP version: gpu/gpu.gyp:gles2_c_lib_nocheck
# 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 = [
    ":client",
    ":gles2_implementation_no_check",
    ":gles2_interface",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//gpu/command_buffer/common",
  ]
}
