# Copyright (c) 2013 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/jumbo.gni") declare_args() { # Enable GPU client logging without DCHECK being on. enable_gpu_client_logging = false } # The files here go into the "gpu" component in a component build (with # "command_buffer_client" and "gles2_cmd_helper" just forwarding) and goes into # separate static libraries in non-component build. group("client") { if (is_component_build) { public_deps = [ "//gpu", ] } else { public_deps = [ ":client_sources", ] } } group("gles2_cmd_helper") { if (is_component_build) { public_deps = [ "//gpu:gles2", ] } else { public_deps = [ ":gles2_cmd_helper_sources", ] } } group("raster") { if (is_component_build) { public_deps = [ "//gpu:raster", ] } else { public_deps = [ ":raster_sources", ] } } group("webgpu") { if (is_component_build) { public_deps = [ "//gpu:webgpu", ] } else { public_deps = [ ":webgpu_sources", ] } } jumbo_source_set("client_sources") { # External code should depend on this via //gpu/client above rather than # depending on this directly or the component build will break. visibility = [ "//gpu/*" ] sources = [ "client_discardable_manager.cc", "client_discardable_manager.h", "client_discardable_texture_manager.cc", "client_discardable_texture_manager.h", "cmd_buffer_helper.cc", "cmd_buffer_helper.h", "fenced_allocator.cc", "fenced_allocator.h", "gpu_control.h", "gpu_memory_buffer_manager.cc", "gpu_memory_buffer_manager.h", "image_decode_accelerator_interface.h", "mapped_memory.cc", "mapped_memory.h", "ring_buffer.cc", "ring_buffer.h", "shared_image_interface.h", "transfer_buffer.cc", "transfer_buffer.h", "transfer_buffer_cmd_copy_helpers.h", ] configs += [ "//gpu:gpu_implementation" ] all_dependent_configs = [ "//third_party/khronos:khronos_headers" ] public_deps = [ "//base", "//components/viz/common:resource_format", ] deps = [ "//gpu/command_buffer/common:common_sources", "//gpu/ipc/common:surface_handle_type", "//ui/gfx:memory_buffer", "//ui/gfx/geometry", ] } source_set("gles2_cmd_helper_sources") { visibility = [ "//gpu/*" ] sources = [ "gles2_cmd_helper.cc", "gles2_cmd_helper.h", "gles2_cmd_helper_autogen.h", ] configs += [ "//build/config/compiler:no_shorten_64_warnings", "//gpu:gpu_gles2_implementation", ] deps = [ ":client", "//base", "//gpu/command_buffer/common", "//gpu/command_buffer/common:gles2_sources", ] } gles2_c_lib_source_files = [ "gles2_c_lib.cc", "gles2_c_lib_autogen.h", "gles2_c_lib_export.h", "gles2_lib.cc", "gles2_lib.h", ] gles2_implementation_source_files = [ "buffer_tracker.cc", "buffer_tracker.h", "client_context_state.cc", "client_context_state.h", "client_context_state_autogen.h", "client_context_state_impl_autogen.h", "client_transfer_cache.cc", "client_transfer_cache.h", "gles2_impl_export.h", "gles2_implementation.cc", "gles2_implementation.h", "gles2_implementation_autogen.h", "gles2_implementation_impl_autogen.h", "gles2_trace_implementation.cc", "gles2_trace_implementation.h", "gles2_trace_implementation_autogen.h", "gles2_trace_implementation_impl_autogen.h", "gpu_switches.cc", "gpu_switches.h", "implementation_base.cc", "implementation_base.h", "logging.cc", "logging.h", "program_info_manager.cc", "program_info_manager.h", "query_tracker.cc", "query_tracker.h", "readback_buffer_shadow_tracker.cc", "readback_buffer_shadow_tracker.h", "share_group.cc", "share_group.h", "vertex_array_object_manager.cc", "vertex_array_object_manager.h", ] # Provides GLES2 interface, but does not cause any implementation to be linked # in. Useful when a target uses the interface, but permits its users to choose # an implementation. source_set("gles2_interface") { sources = [ "gles2_interface.h", ] public_configs = [ "//third_party/khronos:khronos_headers" ] deps = [ "//base", ] } source_set("raster_interface") { sources = [ "raster_interface.h", "raster_interface_autogen.h", ] public_configs = [ "//third_party/khronos:khronos_headers" ] deps = [ "//base", "//components/viz/common:resource_format", "//gpu/command_buffer/common", "//ui/gfx:buffer_types", ] } source_set("webgpu_interface") { sources = [ "webgpu_interface.h", "webgpu_interface_autogen.h", ] deps = [ "//base", ] } # Library emulates GLES2 using command_buffers. jumbo_component("gles2_implementation") { sources = gles2_implementation_source_files defines = [ "GLES2_IMPL_IMPLEMENTATION" ] if (enable_gpu_client_logging) { defines += [ "GPU_ENABLE_CLIENT_LOGGING" ] } all_dependent_configs = [ "//third_party/khronos:khronos_headers" ] deps = [ ":client", ":gles2_cmd_helper", ":gles2_interface", "//base", "//gpu/command_buffer/common", "//gpu/command_buffer/common:gles2", "//gpu/command_buffer/common:gles2_utils", "//ui/gfx/geometry", ] if (!is_nacl) { deps += [ "//components/viz/common:resource_format", "//ui/gfx:color_space", "//ui/gfx/ipc/color", ] } } source_set("raster_sources") { # External code should depend on this via //gpu:raster above rather than # depending on this directly or the component build will break. visibility = [ "//gpu/*" ] all_dependent_configs = [ "//third_party/khronos:khronos_headers" ] configs += [ "//gpu:raster_implementation" ] deps = [ ":client", ":gles2_implementation", ":gles2_interface", ":raster_interface", "//base", "//cc/paint", "//components/viz/common:resource_format_utils", "//gpu/command_buffer/common", "//gpu/command_buffer/common:gles2", "//gpu/command_buffer/common:gles2_utils", "//gpu/command_buffer/common:raster", "//ui/gfx:color_space", "//ui/gfx/geometry", "//ui/gfx/ipc/color", ] sources = [ "client_font_manager.cc", "client_font_manager.h", "raster_cmd_helper.cc", "raster_cmd_helper.h", "raster_cmd_helper_autogen.h", "raster_implementation.cc", "raster_implementation.h", "raster_implementation_autogen.h", "raster_implementation_gles.cc", "raster_implementation_gles.h", "raster_implementation_impl_autogen.h", ] } source_set("webgpu_sources") { visibility = [ "//gpu/*" ] configs += [ "//gpu:webgpu_implementation" ] deps = [ ":client", ":gles2_implementation", ":webgpu_interface", "//gpu/command_buffer/common:webgpu", ] sources = [ "webgpu_cmd_helper.cc", "webgpu_cmd_helper.h", "webgpu_cmd_helper_autogen.h", "webgpu_export.h", "webgpu_implementation.cc", "webgpu_implementation.h", "webgpu_implementation_autogen.h", "webgpu_implementation_impl_autogen.h", ] } # Library emulates GLES2 using command_buffers. jumbo_component("gles2_implementation_no_check") { sources = gles2_implementation_source_files defines = [ "GLES2_IMPL_IMPLEMENTATION", "GLES2_CONFORMANCE_TESTS=1", ] if (enable_gpu_client_logging) { defines += [ "GPU_ENABLE_CLIENT_LOGGING" ] } deps = [ ":client", ":gles2_cmd_helper", ":gles2_interface", "//base", "//gpu/command_buffer/common", "//gpu/command_buffer/common:gles2", "//gpu/command_buffer/common:gles2_utils", "//ui/gfx", "//ui/gfx/geometry", ] if (!is_nacl) { deps += [ "//cc/paint", "//ui/gfx:color_space", "//ui/gfx/ipc/color", ] } } component("gles2_c_lib") { sources = gles2_c_lib_source_files defines = [ "GLES2_C_LIB_IMPLEMENTATION" ] deps = [ ":gles2_interface", "//base", "//base/third_party/dynamic_annotations", "//gpu/command_buffer/common", ] } # Same as gles2_c_lib except with no parameter checking. Required for # OpenGL ES 2.0 conformance tests. jumbo_component("gles2_c_lib_nocheck") { sources = gles2_c_lib_source_files defines = [ "GLES2_C_LIB_IMPLEMENTATION", "GLES2_CONFORMANCE_TESTS=1", ] deps = [ ":gles2_interface", "//base", "//base/third_party/dynamic_annotations", "//gpu/command_buffer/common", ] }