# Copyright 2013 The Flutter 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("//flutter/common/config.gni")
import("//flutter/shell/config.gni")

gpu_common_deps = [
  "//flutter/common",
  "//flutter/common/graphics",
  "//flutter/flow",
  "//flutter/fml",
  "//flutter/shell/common",
  "//third_party/skia",
]

source_set("gpu_surface_software") {
  sources = [
    "gpu_surface_software.cc",
    "gpu_surface_software.h",
    "gpu_surface_software_delegate.cc",
    "gpu_surface_software_delegate.h",
  ]

  public_deps = gpu_common_deps
}

source_set("gpu_surface_gl") {
  sources = [
    "gpu_surface_gl.cc",
    "gpu_surface_gl.h",
    "gpu_surface_gl_delegate.cc",
    "gpu_surface_gl_delegate.h",
  ]

  public_deps = gpu_common_deps
}

source_set("gpu_surface_vulkan") {
  sources = [
    "gpu_surface_vulkan.cc",
    "gpu_surface_vulkan.h",
    "gpu_surface_vulkan_delegate.cc",
    "gpu_surface_vulkan_delegate.h",
  ]
  public_deps = gpu_common_deps + [
                  "//flutter/shell/platform/embedder:embedder_headers",
                  "//flutter/vulkan",
                ]
}

source_set("gpu_surface_metal") {
  sources = [
    "gpu_surface_metal_delegate.cc",
    "gpu_surface_metal_delegate.h",
    "gpu_surface_metal_impeller.h",
    "gpu_surface_metal_impeller.mm",
    "gpu_surface_metal_skia.h",
    "gpu_surface_metal_skia.mm",
  ]

  public_deps = gpu_common_deps + [ "//flutter/impeller" ]
}
