# 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")

source_set("surfaces") {
  sources = [
    "compositor_frame_sink_delegate.h",
    "compositor_frame_sink_factory_impl.cc",
    "compositor_frame_sink_factory_impl.h",
    "compositor_frame_sink_impl.cc",
    "compositor_frame_sink_impl.h",
    "direct_output_surface.cc",
    "direct_output_surface.h",
    "display_compositor.cc",
    "display_compositor.h",
    "display_compositor_impl.cc",
    "display_compositor_impl.h",
    "display_impl.cc",
    "display_impl.h",
    "surfaces_context_provider.cc",
    "surfaces_context_provider.h",
    "surfaces_context_provider_delegate.h",
    "surfaces_state.cc",
    "surfaces_state.h",
    "top_level_display_client.cc",
    "top_level_display_client.h",
  ]

  deps = [
    "//base",
    "//cc",
    "//cc/surfaces",
    "//cc/surfaces:surface_id",
    "//components/display_compositor",
    "//components/mus/gles2",
    "//components/mus/public/cpp/surfaces",
    "//components/mus/public/interfaces",
    "//components/mus/public/interfaces/gpu:interfaces",
    "//gpu/command_buffer/client",
    "//gpu/command_buffer/client:gles2_cmd_helper",
    "//gpu/command_buffer/client:gles2_implementation",
    "//gpu/command_buffer/client:gles2_interface",
    "//services/shell/public/cpp",
    "//services/tracing/public/cpp",
    "//ui/gfx",
    "//ui/gfx/geometry/mojo",
    "//ui/gfx/geometry/mojo:interfaces",
    "//ui/gl",
  ]

  if (use_ozone) {
    sources += [
      "direct_output_surface_ozone.cc",
      "direct_output_surface_ozone.h",
      "ozone_gpu_memory_buffer_manager.cc",
      "ozone_gpu_memory_buffer_manager.h",
    ]
    deps += [ "//gpu/command_buffer/common" ]
  }
}
