blob: a20f5d752e279001dfdd6c028548939c88585939 [file] [log] [blame]
Avi Drissman4e1b7bc32022-09-15 14:03:501# Copyright 2014 The Chromium Authors
[email protected]dab154ee2014-06-13 23:48:502# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
mark a. foltze185ab2fa2023-11-06 21:21:205import("//build/config/cast.gni")
Azeem Arshad8282d3d2020-12-03 17:45:486import("//build/config/chromeos/ui_mode.gni")
[email protected]22fe91d2014-08-12 17:07:127import("//build/config/ui.gni")
qyearsleydb0a34872017-03-14 03:24:318import("//gpu/vulkan/features.gni")
xhwangfb22df12015-10-13 23:13:469import("//media/media_options.gni")
[email protected]dab154ee2014-06-13 23:48:5010
sammcd06e3fc2015-04-28 00:14:5411# See //content/BUILD.gn for how this works.
12group("gpu") {
brettwb78fc9e2016-03-25 21:02:5113 visibility = [ "//content/*" ] # This is an internal content API.
sammcd06e3fc2015-04-28 00:14:5414
15 if (is_component_build) {
Nico Weber0caa2982020-01-14 16:00:4316 public_deps = [ "//content" ]
sammcd06e3fc2015-04-28 00:14:5417 } else {
Nico Weber0caa2982020-01-14 16:00:4318 public_deps = [ ":gpu_sources" ]
sammcd06e3fc2015-04-28 00:14:5419 }
20}
21
brucedawson6e53a2e12016-07-23 19:35:4722if (is_component_build) {
Dirk Pranke9c0fc3b2020-08-06 16:01:3023 link_target_type = "source_set"
brucedawson6e53a2e12016-07-23 19:35:4724} else {
Dirk Pranke9c0fc3b2020-08-06 16:01:3025 link_target_type = "static_library"
brucedawson6e53a2e12016-07-23 19:35:4726}
Tom Sepez085507ab2017-10-18 22:36:0027
brucedawson6e53a2e12016-07-23 19:35:4728target(link_target_type, "gpu_sources") {
brettwb78fc9e2016-03-25 21:02:5129 # This is an internal content API. Code outside of the content "component"
30 # (like content/test and content/shell) should depend on ":gpu" above.
Brett Wilson8f1323042014-09-11 16:58:5631 visibility = [ "//content/*" ]
[email protected]6294f0d2014-08-20 17:43:0932
[email protected]dab154ee2014-06-13 23:48:5033 sources = [
Ken Rockot6d9ed95032019-11-13 17:20:4734 "browser_exposed_gpu_interfaces.cc",
35 "browser_exposed_gpu_interfaces.h",
satorux7fa9d302015-02-16 00:44:5236 "gpu_child_thread.cc",
37 "gpu_child_thread.h",
Robert Sesek4fed6f1e2019-10-15 23:31:0138 "gpu_child_thread_receiver_bindings.cc",
[email protected]dab154ee2014-06-13 23:48:5039 "gpu_main.cc",
ben507aa812016-08-10 23:26:1940 "gpu_service_factory.cc",
41 "gpu_service_factory.h",
[email protected]dab154ee2014-06-13 23:48:5042 "in_process_gpu_thread.cc",
43 "in_process_gpu_thread.h",
44 ]
45
ben02a37772015-11-19 04:37:0546 configs += [ "//content:content_implementation" ]
[email protected]dab154ee2014-06-13 23:48:5047
48 deps = [
49 "//base",
brettwb78fc9e2016-03-25 21:02:5150 "//base/third_party/dynamic_annotations",
Azeem Arshad8282d3d2020-12-03 17:45:4851 "//build:branding_buildflags",
52 "//build:chromeos_buildflags",
Fady Samuel279f5f02017-06-14 23:23:0053 "//components/viz/service",
[email protected]dab154ee2014-06-13 23:48:5054 "//content:export",
brettwdb087102016-04-18 21:33:0855 "//content/child",
brettwb78fc9e2016-03-25 21:02:5156 "//content/common",
chiniforooshan701fa212017-04-06 22:22:4957 "//content/common:mojo_bindings",
blundell24ab5d362014-11-21 10:11:1958 "//content/public/child:child_sources",
fsamuel68efb482016-03-17 12:15:4359 "//content/public/common:common_sources",
markdittmercbf36ce2016-03-02 16:08:2960 "//gpu:gpu",
fsamuel19acfae2016-03-22 05:38:2461 "//gpu/ipc/common:command_buffer_traits",
markdittmerd88b8352016-04-08 15:28:4562 "//gpu/ipc/service",
fsamuel68efb482016-03-17 12:15:4363 "//ipc",
Scott Violeta35f9a42018-03-22 22:00:4464 "//media:media_buildflags",
markdittmer6e70beb82016-05-02 05:40:4765 "//media/gpu",
Scott Violeta35f9a42018-03-22 22:00:4466 "//media/mojo:buildflags",
jrummell397905b2017-03-20 22:36:2567
68 # TODO(jrummell): As //media/gpu/ipc/service is a source_set in a
69 # component build, determine if it should not be included here.
70 # http://crbug.com/702833.
Sadrul Habib Chowdhury55fc2f02017-10-27 02:40:0671 "//components/viz/service/main",
markdittmer6e70beb82016-05-02 05:40:4772 "//media/gpu/ipc/service",
liberato441ca702017-05-13 16:50:3873 "//media/mojo/clients:clients",
Will Harris0310c112020-07-16 02:29:3574 "//sandbox/policy:chromecast_sandbox_allowlist_buildflags",
rockot734fb662016-10-15 16:41:3075 "//services/service_manager/public/cpp",
Ken Rockot543f5e32018-02-04 02:13:5076 "//services/service_manager/public/mojom",
Oystein Eftevaag424fd372019-06-07 17:51:0377 "//services/tracing/public/cpp",
Miyoung Shin2be27f52019-07-27 15:35:3978 "//services/viz/privileged/mojom",
junweid4ed5a812023-04-19 03:19:2679 "//services/webnn",
80 "//services/webnn/public/mojom",
[email protected]dab154ee2014-06-13 23:48:5081 "//skia",
Tom Sepeza0950c62017-10-18 20:39:1482 "//third_party/angle:angle_gpu_info_util",
brettwb78fc9e2016-03-25 21:02:5183 "//ui/gfx/ipc",
[email protected]dab154ee2014-06-13 23:48:5084 "//ui/gl",
kylechar5b9dec12016-05-16 15:40:5785 "//ui/gl/init",
mfomitchev3ba450ad2017-04-03 18:20:4086 "//ui/latency/ipc",
[email protected]dab154ee2014-06-13 23:48:5087 ]
88
Yuta Hijikata45cd7072021-01-13 05:38:2289 if (!is_chromeos_ash || !is_chrome_branded) {
Azeem Arshad8282d3d2020-12-03 17:45:4890 deps += [
91 "//services/shape_detection:lib",
92 "//services/shape_detection/public/mojom",
93 ]
94 }
95
Sylvain Defresne618ffb052020-10-05 11:25:5296 if (is_linux || is_chromeos) {
97 sources += [
98 "gpu_sandbox_hook_linux.cc",
99 "gpu_sandbox_hook_linux.h",
100 ]
Pilar Molina Lopezf3daf6a02022-09-01 17:36:32101
102 if (use_v4l2_codec) {
103 deps += [ "//media/gpu/v4l2" ]
104 }
Sylvain Defresne618ffb052020-10-05 11:25:52105 }
106
Eric Sumc8607e72022-02-18 00:48:03107 if (is_chromeos_ash) {
108 deps += [
109 "//components/services/font/public/cpp",
110 "//components/services/font/public/mojom",
111 ]
112 }
113
xhwangded3b6e2016-05-25 05:24:51114 if (is_android) {
ssid75819d92020-03-04 21:12:35115 deps += [
116 "//components/tracing:graphics_provider",
117 "//media",
118 ]
xhwangded3b6e2016-05-25 05:24:51119 }
120
xhwangbe720032016-02-19 18:45:31121 if (mojo_media_host == "gpu") {
xhwangd3b5d3f2016-05-18 03:37:59122 deps += [ "//media/mojo/services" ]
xhwangfb22df12015-10-13 23:13:46123 }
124
Sean McAllister8ccdb7642020-07-30 20:05:52125 if (is_linux || is_chromeos || is_mac || is_win) {
Bill Budge2ca35142018-02-21 23:22:22126 deps += [ "//sandbox" ]
127 }
128
Christopher Cameron21c4abc2019-11-15 04:06:15129 if (is_mac) {
130 deps += [ "//components/metal_util" ]
131 }
132
brettwb78fc9e2016-03-25 21:02:51133 if (use_ozone) {
134 deps += [ "//ui/ozone" ]
135 }
136
dyen2ce3e052016-03-09 21:03:49137 if (enable_vulkan) {
138 deps += [ "//gpu/vulkan" ]
139 }
Julien Isorceb6623502017-11-28 12:20:40140
Stephen Lanham28a49d52017-11-30 01:53:37141 # Use DRI on desktop Linux builds.
Hidehiko Abe28834ce2021-06-16 07:01:40142 if (current_cpu != "s390x" && current_cpu != "ppc64" && is_linux &&
Ryan Keaneaf3ac0f2022-05-02 18:40:08143 !is_castos) {
Julien Isorceb6623502017-11-28 12:20:40144 configs += [ "//build/config/linux/dri" ]
145 }
[email protected]dab154ee2014-06-13 23:48:50146}