# 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/impeller/tools/impeller.gni")

impeller_shaders("entity_shaders") {
  name = "entity"

  if (impeller_enable_vulkan) {
    vulkan_language_version = 130
  }

  use_half_textures = true

  shaders = [
    "shaders/blending/advanced_blend.vert",
    "shaders/blending/advanced_blend.frag",
    "shaders/blending/blend.frag",
    "shaders/blending/blend.vert",
    "shaders/border_mask_blur.frag",
    "shaders/border_mask_blur.vert",
    "shaders/clip.frag",
    "shaders/clip.vert",
    "shaders/color_matrix_color_filter.frag",
    "shaders/color_matrix_color_filter.vert",
    "shaders/conical_gradient_fill.frag",
    "shaders/gaussian_blur/kernel_decal.frag",
    "shaders/gaussian_blur/kernel_nodecal.frag",
    "shaders/gaussian_blur/kernel.vert",
    "shaders/glyph_atlas.frag",
    "shaders/glyph_atlas_color.frag",
    "shaders/glyph_atlas.vert",
    "shaders/gradient_fill.vert",
    "shaders/linear_to_srgb_filter.frag",
    "shaders/linear_to_srgb_filter.vert",
    "shaders/linear_gradient_fill.frag",
    "shaders/morphology_filter.frag",
    "shaders/morphology_filter.vert",
    "shaders/position_color.vert",
    "shaders/radial_gradient_fill.frag",
    "shaders/rrect_blur.vert",
    "shaders/rrect_blur.frag",
    "shaders/runtime_effect.vert",
    "shaders/solid_fill.frag",
    "shaders/solid_fill.vert",
    "shaders/srgb_to_linear_filter.frag",
    "shaders/srgb_to_linear_filter.vert",
    "shaders/sweep_gradient_fill.frag",
    "shaders/texture_fill.frag",
    "shaders/texture_fill.vert",
    "shaders/texture_fill_external.frag",
    "shaders/texture_fill_strict_src.frag",
    "shaders/tiled_texture_fill.frag",
    "shaders/tiled_texture_fill_external.frag",
    "shaders/vertices.frag",
    "shaders/yuv_to_rgb_filter.frag",
    "shaders/yuv_to_rgb_filter.vert",
    "shaders/blending/porter_duff_blend.frag",
    "shaders/blending/porter_duff_blend.vert",
  ]

  if (impeller_debug) {
    shaders += [
      "shaders/debug/checkerboard.frag",
      "shaders/debug/checkerboard.vert",
    ]
  }
}

impeller_shaders("modern_entity_shaders") {
  name = "modern"

  if (impeller_enable_opengles) {
    gles_language_version = 460
  }

  if (impeller_enable_vulkan) {
    vulkan_language_version = 130
  }

  shaders = [
    "shaders/conical_gradient_ssbo_fill.frag",
    "shaders/linear_gradient_ssbo_fill.frag",
    "shaders/radial_gradient_ssbo_fill.frag",
    "shaders/sweep_gradient_ssbo_fill.frag",
    "shaders/geometry/points.comp",
    "shaders/geometry/uv.comp",
  ]
}

impeller_shaders("framebuffer_blend_entity_shaders") {
  name = "framebuffer_blend"
  require_framebuffer_fetch = true

  # malioc does not support analyzing shaders that use the framebuffer fetch extension on some GPUs.
  analyze = false

  if (is_mac && !is_ios) {
    # Note: this needs to correspond to the Apple7 Support family
    # for M1 and M2.
    metal_version = "2.3"
  }

  shaders = [
    "shaders/blending/framebuffer_blend.vert",
    "shaders/blending/framebuffer_blend.frag",
  ]
}

impeller_component("entity") {
  sources = [
    "contents/anonymous_contents.cc",
    "contents/anonymous_contents.h",
    "contents/atlas_contents.cc",
    "contents/atlas_contents.h",
    "contents/clip_contents.cc",
    "contents/clip_contents.h",
    "contents/color_source_contents.cc",
    "contents/color_source_contents.h",
    "contents/conical_gradient_contents.cc",
    "contents/conical_gradient_contents.h",
    "contents/content_context.cc",
    "contents/content_context.h",
    "contents/contents.cc",
    "contents/contents.h",
    "contents/filters/blend_filter_contents.cc",
    "contents/filters/blend_filter_contents.h",
    "contents/filters/border_mask_blur_filter_contents.cc",
    "contents/filters/border_mask_blur_filter_contents.h",
    "contents/filters/color_filter_contents.cc",
    "contents/filters/color_filter_contents.h",
    "contents/filters/color_matrix_filter_contents.cc",
    "contents/filters/color_matrix_filter_contents.h",
    "contents/filters/filter_contents.cc",
    "contents/filters/filter_contents.h",
    "contents/filters/gaussian_blur_filter_contents.cc",
    "contents/filters/gaussian_blur_filter_contents.h",
    "contents/filters/inputs/contents_filter_input.cc",
    "contents/filters/inputs/contents_filter_input.h",
    "contents/filters/inputs/filter_contents_filter_input.cc",
    "contents/filters/inputs/filter_contents_filter_input.h",
    "contents/filters/inputs/filter_input.cc",
    "contents/filters/inputs/filter_input.h",
    "contents/filters/inputs/placeholder_filter_input.cc",
    "contents/filters/inputs/placeholder_filter_input.h",
    "contents/filters/inputs/texture_filter_input.cc",
    "contents/filters/inputs/texture_filter_input.h",
    "contents/filters/linear_to_srgb_filter_contents.cc",
    "contents/filters/linear_to_srgb_filter_contents.h",
    "contents/filters/local_matrix_filter_contents.cc",
    "contents/filters/local_matrix_filter_contents.h",
    "contents/filters/matrix_filter_contents.cc",
    "contents/filters/matrix_filter_contents.h",
    "contents/filters/morphology_filter_contents.cc",
    "contents/filters/morphology_filter_contents.h",
    "contents/filters/srgb_to_linear_filter_contents.cc",
    "contents/filters/srgb_to_linear_filter_contents.h",
    "contents/filters/yuv_to_rgb_filter_contents.cc",
    "contents/filters/yuv_to_rgb_filter_contents.h",
    "contents/framebuffer_blend_contents.cc",
    "contents/framebuffer_blend_contents.h",
    "contents/gradient_generator.cc",
    "contents/gradient_generator.h",
    "contents/linear_gradient_contents.cc",
    "contents/linear_gradient_contents.h",
    "contents/radial_gradient_contents.cc",
    "contents/radial_gradient_contents.h",
    "contents/runtime_effect_contents.cc",
    "contents/runtime_effect_contents.h",
    "contents/solid_color_contents.cc",
    "contents/solid_color_contents.h",
    "contents/solid_rrect_blur_contents.cc",
    "contents/solid_rrect_blur_contents.h",
    "contents/sweep_gradient_contents.cc",
    "contents/sweep_gradient_contents.h",
    "contents/text_contents.cc",
    "contents/text_contents.h",
    "contents/texture_contents.cc",
    "contents/texture_contents.h",
    "contents/tiled_texture_contents.cc",
    "contents/tiled_texture_contents.h",
    "contents/vertices_contents.cc",
    "contents/vertices_contents.h",
    "entity.cc",
    "entity.h",
    "entity_pass.cc",
    "entity_pass.h",
    "entity_pass_clip_stack.cc",
    "entity_pass_clip_stack.h",
    "entity_pass_delegate.cc",
    "entity_pass_delegate.h",
    "entity_pass_target.cc",
    "entity_pass_target.h",
    "geometry/circle_geometry.cc",
    "geometry/circle_geometry.h",
    "geometry/cover_geometry.cc",
    "geometry/cover_geometry.h",
    "geometry/ellipse_geometry.cc",
    "geometry/ellipse_geometry.h",
    "geometry/fill_path_geometry.cc",
    "geometry/fill_path_geometry.h",
    "geometry/geometry.cc",
    "geometry/geometry.h",
    "geometry/line_geometry.cc",
    "geometry/line_geometry.h",
    "geometry/point_field_geometry.cc",
    "geometry/point_field_geometry.h",
    "geometry/rect_geometry.cc",
    "geometry/rect_geometry.h",
    "geometry/round_rect_geometry.cc",
    "geometry/round_rect_geometry.h",
    "geometry/stroke_path_geometry.cc",
    "geometry/stroke_path_geometry.h",
    "geometry/vertices_geometry.cc",
    "geometry/vertices_geometry.h",
    "inline_pass_context.cc",
    "inline_pass_context.h",
    "render_target_cache.cc",
    "render_target_cache.h",
  ]

  if (impeller_debug) {
    sources += [
      "contents/checkerboard_contents.cc",
      "contents/checkerboard_contents.h",
    ]
  }

  public_deps = [
    ":entity_shaders",
    ":framebuffer_blend_entity_shaders",
    ":modern_entity_shaders",
    "../renderer",
    "../typographer",
  ]

  if (impeller_enable_3d) {
    sources += [
      "contents/scene_contents.cc",
      "contents/scene_contents.h",
    ]
    public_deps += [ "../scene" ]
  }

  deps = [ "//flutter/fml" ]
  defines = [ "_USE_MATH_DEFINES" ]
}

impeller_component("entity_test_helpers") {
  testonly = true

  sources = [
    "contents/test/contents_test_helpers.cc",
    "contents/test/contents_test_helpers.h",
    "contents/test/recording_render_pass.cc",
    "contents/test/recording_render_pass.h",
  ]

  deps = [ ":entity" ]
}

impeller_component("entity_unittests") {
  testonly = true

  sources = [
    "contents/checkerboard_contents_unittests.cc",
    "contents/clip_contents_unittests.cc",
    "contents/content_context_unittests.cc",
    "contents/filters/gaussian_blur_filter_contents_unittests.cc",
    "contents/filters/inputs/filter_input_unittests.cc",
    "contents/host_buffer_unittests.cc",
    "contents/tiled_texture_contents_unittests.cc",
    "contents/vertices_contents_unittests.cc",
    "entity_pass_target_unittests.cc",
    "entity_pass_unittests.cc",
    "entity_playground.cc",
    "entity_playground.h",
    "entity_unittests.cc",
    "geometry/geometry_unittests.cc",
    "render_target_cache_unittests.cc",
  ]

  deps = [
    ":entity",
    ":entity_test_helpers",
    "../geometry:geometry_asserts",
    "../playground:playground_test",
    "//flutter/display_list/testing:display_list_testing",
    "//flutter/impeller/typographer/backends/skia:typographer_skia_backend",
  ]
}
