# Copyright 2019 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/features.gni")
import("//printing/buildflags/buildflags.gni")

declare_args() {
  # Enable experimental Skia Graphite Dawn backend. Enabled on platforms where
  # the team has verified that at least basic rendering to the screen is
  # working.
  skia_use_dawn =
      is_mac || is_win ||
      (is_android && target_cpu != "x86" && target_cpu != "x64") ||
      (is_ios && use_blink) || (is_linux && !is_castos) || is_desktop_android

  # Enable experimental Skia Graphite Metal backend. Intended only for debugging
  # on non-official developer builds on Mac and iOS Blink.
  skia_use_metal = (is_mac || (is_ios && use_blink)) && !is_official_build
}

# Skia only needs to support GPU rasterization if we use the full Chromium
# rendering stack i.e. |use_blink| is true.
# TODO(crbug.com/40902173): Split out into separate enable_skia_ganesh flag.
skia_support_gpu = use_blink

# Skia Ganesh GL backend is always enabled on all platforms - applies only when
# GPU rasterization is enabled.
skia_use_gl = true

skia_support_pdf = use_blink && (enable_printing || enable_printing_tests)

# Skottie is not used on Android. To keep apk size small the skottie library is
# excluded from the binary. At the time this comment was written, it adds ~200KB
# to the APK.
skia_support_skottie = !is_android

# Skia needs XMP support for gainmap HDR image decoding in blink.
skia_support_xmp = use_blink
