chromium/gpu/command_buffer/common/BUILD.gn

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

# The files here go into the "gpu" component in a component build (with
# "command_buffer_common" just forwarding) and goes into a static library in
# non-component build. This needs to match the GYP build which was likely an
# attempt to make larger components to help with loading.

import("//ui/gl/features.gni")

group("common") {
  if (is_component_build) {
    public_deps = [ "//gpu" ]
  } else {
    public_deps = [ ":common_sources" ]
  }
}

group("gles2") {
  if (is_component_build) {
    public_deps = [ "//gpu:gles2" ]
  } else {
    public_deps = [ ":gles2_sources" ]
  }
}

group("raster") {
  if (is_component_build) {
    public_deps = [ "//gpu:gles2" ]
  } else {
    public_deps = [ ":raster_sources" ]
  }
}

group("mailbox") {
  if (is_component_build) {
    public_deps = [ "//gpu:mailbox" ]
  } else {
    public_deps = [ ":mailbox_sources" ]
  }
}

group("webgpu") {
  public_deps = [ ":webgpu_sources" ]
}

# Minimal set of definitions which don't have GPU dependencies outside of this
# directory.
source_set("common_base_sources") {
  visibility = [ "//gpu/*" ]
  sources = [
    "command_buffer_id.h",
    "constants.h",
    "context_result.cc",
    "context_result.h",
    "mailbox_holder.cc",
    "mailbox_holder.h",
    "sync_token.cc",
    "sync_token.h",
  ]
  public_deps = [
    ":mailbox",
    "//base",
  ]
  configs += [ "//gpu:gpu_implementation" ]
}

source_set("common_sources") {
  visibility = [ "//gpu/*" ]

  sources = [
    "buffer.cc",
    "buffer.h",
    "capabilities.cc",
    "capabilities.h",
    "cmd_buffer_common.cc",
    "cmd_buffer_common.h",
    "command_buffer.h",
    "common_cmd_format.h",
    "context_creation_attribs.cc",
    "context_creation_attribs.h",
    "debug_marker_manager.cc",
    "debug_marker_manager.h",
    "discardable_handle.cc",
    "discardable_handle.h",
    "gl2_types.h",
    "gpu_memory_buffer_support.cc",
    "gpu_memory_buffer_support.h",
    "id_allocator.cc",
    "id_allocator.h",
    "presentation_feedback_utils.cc",
    "presentation_feedback_utils.h",
    "scheduling_priority.cc",
    "scheduling_priority.h",
    "shared_image_capabilities.cc",
    "shared_image_capabilities.h",
    "shared_image_trace_utils.cc",
    "shared_image_trace_utils.h",
    "shared_image_usage.cc",
    "shared_image_usage.h",
    "shm_count.cc",
    "shm_count.h",
    "swap_buffers_complete_params.cc",
    "swap_buffers_complete_params.h",
    "swap_buffers_flags.h",
    "thread_local.h",
    "time.h",
  ]

  configs += [ "//gpu:gpu_implementation" ]

  public_deps = [
    ":common_base_sources",
    ":mailbox",
    "//base",
    "//mojo/public/cpp/system",
    "//ui/gfx:memory_buffer",
    "//ui/gfx/geometry",
  ]

  deps = [ "//base" ]
}

source_set("mailbox_sources") {
  visibility = [ "//gpu/*" ]
  defines = [ "IS_GPU_MAILBOX_IMPL" ]
  sources = [
    "mailbox.cc",
    "mailbox.h",
  ]
  deps = [ "//base" ]
}

source_set("gles2_sources") {
  visibility = [ "//gpu/*" ]

  sources = [
    "gles2_cmd_format.cc",
    "gles2_cmd_format.h",
    "gles2_cmd_format_autogen.h",
    "gles2_cmd_ids.h",
    "gles2_cmd_ids_autogen.h",
  ]

  configs += [ "//gpu:gpu_gles2_implementation" ]

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

source_set("raster_sources") {
  visibility = [ "//gpu/*" ]

  sources = [
    "raster_cmd_enums.h",
    "raster_cmd_format.cc",
    "raster_cmd_format.h",
    "raster_cmd_format_autogen.h",
    "raster_cmd_ids.h",
    "raster_cmd_ids_autogen.h",
    "skia_utils.cc",
    "skia_utils.h",
  ]

  configs += [ "//gpu:raster_implementation" ]

  deps = [
    ":gles2_utils",
    "//base",
    "//skia",
    "//ui/gl:gl",
  ]
  public_deps = [
    ":common",
    "//components/viz/common:shared_image_format",
  ]
}

source_set("webgpu_sources") {
  visibility = [ "//gpu/*" ]

  sources = [
    "dawn_memory_transfer_handle.h",
    "webgpu_cmd_enums.h",
    "webgpu_cmd_format.cc",
    "webgpu_cmd_format.h",
    "webgpu_cmd_format_autogen.h",
    "webgpu_cmd_ids.h",
    "webgpu_cmd_ids_autogen.h",
  ]

  configs += [ "//gpu:webgpu_implementation" ]

  deps = [
    ":gles2_utils",
    "//base",
  ]

  public_deps = [
    ":common",
    "//ui/gl:buildflags",
  ]

  if (use_dawn) {
    deps += [ "//third_party/dawn/src/dawn/wire" ]
    public_deps += [ "//third_party/dawn/src/dawn/wire:headers" ]
  }
}

component("gles2_utils") {
  sources = [
    "gles2_cmd_copy_texture_chromium_utils.cc",
    "gles2_cmd_copy_texture_chromium_utils.h",
    "gles2_cmd_utils.cc",
    "gles2_cmd_utils.h",
    "gles2_utils_export.h",
  ]

  defines = [ "GLES2_UTILS_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//ui/gl:gl_enums",
  ]

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