BUILD.gn 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023
  1. # Copyright 2014 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//build/config/chromeos/ui_mode.gni")
  5. import("//build/config/ui.gni")
  6. import("//gpu/vulkan/features.gni")
  7. import("//testing/libfuzzer/fuzzer_test.gni")
  8. import("//testing/test.gni")
  9. import("//third_party/protobuf/proto_library.gni")
  10. import("//ui/gl/features.gni")
  11. if (is_android) {
  12. # Pull in enable_chrome_android_internal.
  13. import("//build/config/android/config.gni")
  14. }
  15. config("gpu_implementation") {
  16. defines = [ "GPU_IMPLEMENTATION" ]
  17. configs = [ "//build/config/compiler:wexit_time_destructors" ]
  18. }
  19. config("gpu_gles2_implementation") {
  20. defines = [ "GPU_GLES2_IMPLEMENTATION" ]
  21. configs = [ "//build/config/compiler:wexit_time_destructors" ]
  22. }
  23. config("gpu_util_implementation") {
  24. defines = [ "GPU_UTIL_IMPLEMENTATION" ]
  25. configs = [ "//build/config/compiler:wexit_time_destructors" ]
  26. }
  27. config("raster_implementation") {
  28. defines = [ "RASTER_IMPLEMENTATION" ]
  29. configs = [ "//build/config/compiler:wexit_time_destructors" ]
  30. }
  31. config("webgpu_implementation") {
  32. defines = [ "WEBGPU_IMPLEMENTATION" ]
  33. configs = [ "//build/config/compiler:wexit_time_destructors" ]
  34. }
  35. component("gpu") {
  36. public_deps = [
  37. "//gpu/command_buffer/client:client_sources",
  38. "//gpu/command_buffer/common:common_sources",
  39. "//gpu/command_buffer/service:service_sources",
  40. "//gpu/config:config_sources",
  41. "//gpu/ipc/client:ipc_client_sources",
  42. "//gpu/ipc/common:ipc_common_sources",
  43. ]
  44. }
  45. component("gles2") {
  46. public_deps = [
  47. "//gpu/command_buffer/client:gles2_cmd_helper_sources",
  48. "//gpu/command_buffer/common:gles2_sources",
  49. "//gpu/command_buffer/common:raster_sources",
  50. "//gpu/command_buffer/service:gles2_sources",
  51. ]
  52. }
  53. component("raster") {
  54. public_deps = [ "//gpu/command_buffer/client:raster_sources" ]
  55. }
  56. component("mailbox") {
  57. defines = [ "IS_GPU_MAILBOX_IMPL" ]
  58. public_deps = [ "//gpu/command_buffer/common:mailbox_sources" ]
  59. }
  60. component("webgpu") {
  61. public_deps = [ "//gpu/command_buffer/client:webgpu_sources" ]
  62. }
  63. if (!use_static_angle) {
  64. shared_library("command_buffer_gles2") {
  65. sources = [
  66. # TODO(hendrikw): Move egl out of gles2_conform_support.
  67. "gles2_conform_support/egl/config.cc",
  68. "gles2_conform_support/egl/config.h",
  69. "gles2_conform_support/egl/context.cc",
  70. "gles2_conform_support/egl/context.h",
  71. "gles2_conform_support/egl/display.cc",
  72. "gles2_conform_support/egl/display.h",
  73. "gles2_conform_support/egl/egl.cc",
  74. "gles2_conform_support/egl/surface.cc",
  75. "gles2_conform_support/egl/surface.h",
  76. "gles2_conform_support/egl/test_support.cc",
  77. "gles2_conform_support/egl/test_support.h",
  78. "gles2_conform_support/egl/thread_state.cc",
  79. "gles2_conform_support/egl/thread_state.h",
  80. ]
  81. deps = [
  82. ":gpu",
  83. "//base",
  84. "//gpu/command_buffer/client:gles2_c_lib",
  85. "//gpu/command_buffer/client:gles2_cmd_helper",
  86. "//gpu/command_buffer/client:gles2_implementation",
  87. "//gpu/command_buffer/service:gles2",
  88. "//ui/gl",
  89. "//ui/gl/init",
  90. ]
  91. if (use_ozone) {
  92. deps += [ "//ui/ozone" ]
  93. }
  94. defines = [
  95. "COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY",
  96. "EGLAPIENTRY=",
  97. ]
  98. if (is_android) {
  99. configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
  100. }
  101. if (current_os == "win") {
  102. defines += [ "EGLAPI=__declspec(dllexport)" ]
  103. } else {
  104. defines += [ "EGLAPI=__attribute__((visibility(\"default\")))" ]
  105. }
  106. }
  107. test("command_buffer_gles2_tests") {
  108. sources = [
  109. "command_buffer/tests/command_buffer_gles2_tests_main.cc",
  110. "command_buffer/tests/egl_test.cc",
  111. ]
  112. deps = [
  113. ":command_buffer_gles2",
  114. "//base",
  115. "//base/test:test_support",
  116. "//base/third_party/dynamic_annotations",
  117. "//testing/gmock",
  118. "//testing/gtest",
  119. ]
  120. defines = [
  121. "COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY",
  122. "EGLAPIENTRY=",
  123. ]
  124. if (current_os == "win") {
  125. defines += [ "EGLAPI=__declspec(dllimport)" ]
  126. } else {
  127. defines += [ "EGLAPI=" ]
  128. }
  129. libs = []
  130. if (is_android) {
  131. libs += [ "android" ]
  132. deps += [ "//ui/android:ui_java" ]
  133. }
  134. if ((is_linux || is_chromeos) && !is_component_build) {
  135. configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
  136. }
  137. if (use_ozone) {
  138. deps += [ "//ui/base:features" ]
  139. }
  140. }
  141. } # if (!use_static_angle)
  142. static_library("test_support") {
  143. testonly = true
  144. sources = [
  145. "command_buffer/client/client_test_helper.cc",
  146. "command_buffer/client/client_test_helper.h",
  147. "command_buffer/client/gles2_interface_stub.cc",
  148. "command_buffer/client/gles2_interface_stub.h",
  149. "command_buffer/client/gles2_interface_stub_autogen.h",
  150. "command_buffer/client/gles2_interface_stub_impl_autogen.h",
  151. "command_buffer/client/webgpu_interface_stub.cc",
  152. "command_buffer/client/webgpu_interface_stub.h",
  153. "command_buffer/client/webgpu_interface_stub_autogen.h",
  154. "command_buffer/client/webgpu_interface_stub_impl_autogen.h",
  155. "command_buffer/service/copy_texture_chromium_mock.cc",
  156. "command_buffer/service/copy_texture_chromium_mock.h",
  157. "command_buffer/service/error_state_mock.cc",
  158. "command_buffer/service/error_state_mock.h",
  159. "command_buffer/service/gles2_cmd_decoder_mock.cc",
  160. "command_buffer/service/gles2_cmd_decoder_mock.h",
  161. "command_buffer/service/mocks.cc",
  162. "command_buffer/service/mocks.h",
  163. "command_buffer/service/shared_image/test_image_backing.cc",
  164. "command_buffer/service/shared_image/test_image_backing.h",
  165. "command_buffer/service/test_helper.cc",
  166. "command_buffer/service/test_helper.h",
  167. "ipc/raster_in_process_context.cc",
  168. "ipc/raster_in_process_context.h",
  169. "ipc/service/gpu_memory_buffer_factory_test_template.h",
  170. "ipc/webgpu_in_process_context.cc",
  171. "ipc/webgpu_in_process_context.h",
  172. ]
  173. public_deps = [
  174. ":gles2",
  175. ":gpu",
  176. ":webgpu",
  177. "//gpu/command_buffer/client:gles2_interface",
  178. "//gpu/command_buffer/client:webgpu_interface",
  179. "//gpu/ipc:gpu_thread_holder",
  180. ]
  181. deps = [
  182. "//base/test:test_support",
  183. "//gpu/command_buffer/client:raster",
  184. "//gpu/command_buffer/common",
  185. "//gpu/ipc:gl_in_process_context",
  186. "//gpu/ipc/common",
  187. "//gpu/ipc/service",
  188. "//gpu/skia_bindings:skia_bindings",
  189. "//testing/gmock",
  190. "//testing/gtest",
  191. "//ui/gfx:test_support",
  192. "//ui/gl:gl_unittest_utils",
  193. "//ui/gl:test_support",
  194. ]
  195. if (use_static_angle) {
  196. deps += [ "//third_party/angle:translator" ]
  197. } else {
  198. deps += [ "//third_party/angle:translator_gl_d3d_only" ]
  199. }
  200. }
  201. if (!is_android && !is_fuchsia && !is_chromeos_ash) {
  202. proto_library("gl_lpm_fuzzer_proto") {
  203. sources = [ "command_buffer/tests/lpm/gl_lpm_fuzzer.proto" ]
  204. use_protobuf_full = true
  205. deps = [ "//third_party/protobuf:protobuf_full" ]
  206. }
  207. static_library("gl_lpm_shader_to_string") {
  208. sources = [
  209. "command_buffer/tests/lpm/gl_lpm_shader_to_string.cc",
  210. "command_buffer/tests/lpm/gl_lpm_shader_to_string.h",
  211. ]
  212. deps = [
  213. ":gl_lpm_fuzzer_proto",
  214. "//base:base",
  215. ]
  216. }
  217. test("gl_lpm_shader_to_string_unittest") {
  218. sources = [ "command_buffer/tests/lpm/gl_lpm_shader_to_string_unittest.cc" ]
  219. deps = [
  220. ":gl_lpm_shader_to_string",
  221. "//base/test:run_all_unittests",
  222. "//testing/gtest",
  223. "//third_party/protobuf:protobuf_full",
  224. ]
  225. }
  226. fuzzer_test("gl_lpm_fuzzer") {
  227. sources = [
  228. "command_buffer/tests/gl_manager.cc",
  229. "command_buffer/tests/gl_manager.h",
  230. "command_buffer/tests/gl_test_utils.cc",
  231. "command_buffer/tests/gl_test_utils.h",
  232. "command_buffer/tests/lpm/gl_lpm_fuzzer.cc",
  233. ]
  234. defines = [ "GL_GLEXT_PROTOTYPES" ]
  235. if (is_mac) {
  236. frameworks = [ "IOSurface.framework" ]
  237. }
  238. deps = [
  239. ":gl_lpm_fuzzer_proto",
  240. ":gl_lpm_shader_to_string",
  241. ":gles2",
  242. ":test_support",
  243. "//gpu/command_buffer/client:gles2_c_lib",
  244. "//gpu/command_buffer/client:gles2_implementation",
  245. "//gpu/command_buffer/common:gles2_utils",
  246. "//gpu/ipc:gl_in_process_context",
  247. "//gpu/ipc/service:service",
  248. "//testing/gtest:gtest",
  249. "//third_party/libprotobuf-mutator",
  250. "//ui/gfx:gfx",
  251. "//ui/gl:gl",
  252. "//ui/gl/init:init",
  253. ]
  254. if (use_ozone) {
  255. deps += [ "//ui/ozone" ]
  256. }
  257. }
  258. }
  259. test("gl_tests") {
  260. use_xvfb = use_xvfb_in_this_config
  261. sources = [
  262. "command_buffer/service/shared_image/gl_image_backing_factory_unittest.cc",
  263. "command_buffer/service/shared_image/gl_texture_image_backing_factory_unittest.cc",
  264. "command_buffer/service/shared_image/shared_image_factory_unittest.cc",
  265. "command_buffer/service/shared_image/shared_image_manager_unittest.cc",
  266. "command_buffer/service/shared_image/shared_image_representation_unittest.cc",
  267. "command_buffer/service/shared_image/test_utils.cc",
  268. "command_buffer/service/shared_image/test_utils.h",
  269. "command_buffer/tests/compressed_texture_test.cc",
  270. "command_buffer/tests/es3_misc_functions_unittest.cc",
  271. "command_buffer/tests/gl_bgra_mipmap_unittest.cc",
  272. "command_buffer/tests/gl_bind_uniform_location_unittest.cc",
  273. "command_buffer/tests/gl_chromium_framebuffer_mixed_samples_unittest.cc",
  274. "command_buffer/tests/gl_chromium_framebuffer_multisample_unittest.cc",
  275. "command_buffer/tests/gl_clear_framebuffer_unittest.cc",
  276. "command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc",
  277. "command_buffer/tests/gl_cube_map_texture_unittest.cc",
  278. "command_buffer/tests/gl_depth_texture_unittest.cc",
  279. "command_buffer/tests/gl_deschedule_unittest.cc",
  280. "command_buffer/tests/gl_discardable_textures_unittest.cc",
  281. "command_buffer/tests/gl_dynamic_config_unittest.cc",
  282. "command_buffer/tests/gl_ext_blend_func_extended_unittest.cc",
  283. "command_buffer/tests/gl_ext_multisample_compatibility_unittest.cc",
  284. "command_buffer/tests/gl_ext_srgb_unittest.cc",
  285. "command_buffer/tests/gl_ext_window_rectangles_unittest.cc",
  286. "command_buffer/tests/gl_gpu_memory_buffer_unittest.cc",
  287. "command_buffer/tests/gl_helper_unittest.cc",
  288. "command_buffer/tests/gl_lose_context_chromium_unittest.cc",
  289. "command_buffer/tests/gl_manager.cc",
  290. "command_buffer/tests/gl_manager.h",
  291. "command_buffer/tests/gl_map_buffer_range_unittest.cc",
  292. "command_buffer/tests/gl_native_gmb_backbuffer_unittest.cc",
  293. "command_buffer/tests/gl_object_bindings_unittest.cc",
  294. "command_buffer/tests/gl_oes_egl_image_unittest.cc",
  295. "command_buffer/tests/gl_offscreen_surface_unittest.cc",
  296. "command_buffer/tests/gl_oob_attrib_unittest.cc",
  297. "command_buffer/tests/gl_pointcoord_unittest.cc",
  298. "command_buffer/tests/gl_program_unittest.cc",
  299. "command_buffer/tests/gl_query_unittest.cc",
  300. "command_buffer/tests/gl_readback_unittest.cc",
  301. "command_buffer/tests/gl_request_extension_unittest.cc",
  302. "command_buffer/tests/gl_set_aggressively_free_resources_unittest.cc",
  303. "command_buffer/tests/gl_shared_resources_unittest.cc",
  304. "command_buffer/tests/gl_stream_draw_unittest.cc",
  305. "command_buffer/tests/gl_test_setup_helper.cc",
  306. "command_buffer/tests/gl_test_setup_helper.h",
  307. "command_buffer/tests/gl_test_utils.cc",
  308. "command_buffer/tests/gl_test_utils.h",
  309. "command_buffer/tests/gl_tests_main.cc",
  310. "command_buffer/tests/gl_texture_mailbox_unittest.cc",
  311. "command_buffer/tests/gl_texture_storage_unittest.cc",
  312. "command_buffer/tests/gl_unallocated_texture_unittest.cc",
  313. "command_buffer/tests/gl_unittest.cc",
  314. "command_buffer/tests/gl_virtual_contexts_ext_window_rectangles_unittest.cc",
  315. "command_buffer/tests/gl_virtual_contexts_unittest.cc",
  316. "command_buffer/tests/gl_webgl_multi_draw_test.cc",
  317. "command_buffer/tests/occlusion_query_unittest.cc",
  318. "command_buffer/tests/texture_image_factory.cc",
  319. "command_buffer/tests/texture_image_factory.h",
  320. "ipc/client/gpu_context_tests.h",
  321. "ipc/client/gpu_in_process_context_tests.cc",
  322. "ipc/client/raster_in_process_context_tests.cc",
  323. ]
  324. if (is_android) {
  325. sources += [ "command_buffer/tests/gl_unittests_android.cc" ]
  326. }
  327. # Simply loading the Vulkan driver leaks crbug.com/1134681
  328. if (use_dawn && !is_lsan) {
  329. sources += [
  330. "command_buffer/service/webgpu_decoder_unittest.cc",
  331. "command_buffer/tests/shared_image_gl_backing_produce_dawn_unittest.cc",
  332. "command_buffer/tests/webgpu_mailbox_unittest.cc",
  333. "command_buffer/tests/webgpu_test.cc",
  334. "command_buffer/tests/webgpu_test.h",
  335. ]
  336. }
  337. defines = [ "GL_GLEXT_PROTOTYPES" ]
  338. deps = [
  339. ":gles2",
  340. ":gpu",
  341. ":test_support",
  342. "//base",
  343. "//base/test:test_support",
  344. "//base/third_party/dynamic_annotations",
  345. "//cc/paint",
  346. "//components/viz/test:test_support",
  347. "//gpu/command_buffer/client:gles2_c_lib",
  348. "//gpu/command_buffer/client:gles2_implementation",
  349. "//gpu/command_buffer/client:raster",
  350. "//gpu/command_buffer/client:webgpu",
  351. "//gpu/command_buffer/common:gles2_utils",
  352. "//gpu/ipc:gl_in_process_context",
  353. "//gpu/ipc/host",
  354. "//gpu/ipc/service",
  355. "//gpu/webgpu:common",
  356. "//mojo/core/embedder",
  357. "//testing/gmock",
  358. "//testing/gtest",
  359. "//third_party/angle:translator",
  360. "//third_party/libyuv",
  361. "//ui/gfx",
  362. "//ui/gfx:test_support",
  363. "//ui/gfx/geometry",
  364. "//ui/gl",
  365. "//ui/gl:test_support",
  366. "//ui/gl/init",
  367. ]
  368. if (use_ozone) {
  369. deps += [ "//ui/ozone" ]
  370. }
  371. libs = []
  372. if (is_android) {
  373. libs += [ "android" ]
  374. deps += [ "//ui/android:ui_java" ]
  375. sources += [
  376. "command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc",
  377. "command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc",
  378. ]
  379. } else if (is_mac) {
  380. frameworks = [ "IOSurface.framework" ]
  381. sources += [ "command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc" ]
  382. } else if (is_win) {
  383. deps += [
  384. "//ui/platform_window",
  385. "//ui/platform_window:platform_impls",
  386. ]
  387. sources += [
  388. "command_buffer/service/dxgi_shared_handle_manager_unittest.cc",
  389. "command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc",
  390. ]
  391. } else if (is_linux || is_chromeos) {
  392. # Simply loading the Vulkan driver leaks crbug.com/1134681
  393. # CFI error in third_party/vulkan_memory_allocator crbug.com/1139916
  394. if (enable_vulkan && !is_lsan && !is_cfi) {
  395. deps += [ "//gpu/vulkan/init:init" ]
  396. sources += [ "command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc" ]
  397. }
  398. }
  399. if (use_dawn) {
  400. deps += [
  401. "//third_party/dawn/src/dawn:cpp",
  402. "//third_party/dawn/src/dawn:proc",
  403. "//third_party/dawn/src/dawn/native",
  404. ]
  405. }
  406. data_deps = [ "//testing/buildbot/filters:gl_tests_filters" ]
  407. if (is_android && enable_chrome_android_internal) {
  408. data_deps += [ "//clank/build/bot/filters:gl_tests_filters" ]
  409. }
  410. }
  411. test("gpu_unittests") {
  412. use_xvfb = use_xvfb_in_this_config
  413. sources = [
  414. "command_buffer/client/buffer_tracker_unittest.cc",
  415. "command_buffer/client/client_discardable_manager_unittest.cc",
  416. "command_buffer/client/cmd_buffer_helper_test.cc",
  417. "command_buffer/client/command_buffer_direct_locked.cc",
  418. "command_buffer/client/command_buffer_direct_locked.h",
  419. "command_buffer/client/fenced_allocator_test.cc",
  420. "command_buffer/client/gles2_implementation_unittest.cc",
  421. "command_buffer/client/gles2_implementation_unittest_autogen.h",
  422. "command_buffer/client/mapped_memory_unittest.cc",
  423. "command_buffer/client/mock_transfer_buffer.cc",
  424. "command_buffer/client/mock_transfer_buffer.h",
  425. "command_buffer/client/program_info_manager_unittest.cc",
  426. "command_buffer/client/query_tracker_unittest.cc",
  427. "command_buffer/client/raster_implementation_gles_unittest.cc",
  428. "command_buffer/client/raster_implementation_unittest.cc",
  429. "command_buffer/client/raster_implementation_unittest_autogen.h",
  430. "command_buffer/client/ring_buffer_test.cc",
  431. "command_buffer/client/transfer_buffer_cmd_copy_helpers_unittest.cc",
  432. "command_buffer/client/transfer_buffer_unittest.cc",
  433. "command_buffer/client/vertex_array_object_manager_unittest.cc",
  434. "command_buffer/client/webgpu_implementation_unittest.cc",
  435. "command_buffer/client/webgpu_implementation_unittest_autogen.h",
  436. "command_buffer/common/activity_flags_unittest.cc",
  437. "command_buffer/common/buffer_unittest.cc",
  438. "command_buffer/common/command_buffer_shared_test.cc",
  439. "command_buffer/common/debug_marker_manager_unittest.cc",
  440. "command_buffer/common/discardable_handle_unittest.cc",
  441. "command_buffer/common/gles2_cmd_format_test.cc",
  442. "command_buffer/common/gles2_cmd_format_test_autogen.h",
  443. "command_buffer/common/gles2_cmd_utils_unittest.cc",
  444. "command_buffer/common/id_allocator_test.cc",
  445. "command_buffer/common/raster_cmd_format_test.cc",
  446. "command_buffer/common/raster_cmd_format_test_autogen.h",
  447. "command_buffer/common/unittest_main.cc",
  448. "command_buffer/common/webgpu_cmd_format_test.cc",
  449. "command_buffer/common/webgpu_cmd_format_test_autogen.h",
  450. "command_buffer/service/buffer_manager_unittest.cc",
  451. "command_buffer/service/client_service_map_unittest.cc",
  452. "command_buffer/service/command_buffer_service_unittest.cc",
  453. "command_buffer/service/common_decoder_unittest.cc",
  454. "command_buffer/service/context_group_unittest.cc",
  455. "command_buffer/service/context_state_test_helpers.cc",
  456. "command_buffer/service/context_state_test_helpers.h",
  457. "command_buffer/service/context_state_test_helpers_autogen.h",
  458. "command_buffer/service/context_state_unittest.cc",
  459. "command_buffer/service/feature_info_unittest.cc",
  460. "command_buffer/service/framebuffer_manager_unittest.cc",
  461. "command_buffer/service/gl_context_mock.cc",
  462. "command_buffer/service/gl_context_mock.h",
  463. "command_buffer/service/gl_context_virtual_unittest.cc",
  464. "command_buffer/service/gl_surface_mock.cc",
  465. "command_buffer/service/gl_surface_mock.h",
  466. "command_buffer/service/gles2_cmd_decoder_unittest.cc",
  467. "command_buffer/service/gles2_cmd_decoder_unittest.h",
  468. "command_buffer/service/gles2_cmd_decoder_unittest_1.cc",
  469. "command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h",
  470. "command_buffer/service/gles2_cmd_decoder_unittest_2.cc",
  471. "command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h",
  472. "command_buffer/service/gles2_cmd_decoder_unittest_3.cc",
  473. "command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h",
  474. "command_buffer/service/gles2_cmd_decoder_unittest_4.cc",
  475. "command_buffer/service/gles2_cmd_decoder_unittest_4_autogen.h",
  476. "command_buffer/service/gles2_cmd_decoder_unittest_attribs.cc",
  477. "command_buffer/service/gles2_cmd_decoder_unittest_base.cc",
  478. "command_buffer/service/gles2_cmd_decoder_unittest_base.h",
  479. "command_buffer/service/gles2_cmd_decoder_unittest_buffers.cc",
  480. "command_buffer/service/gles2_cmd_decoder_unittest_context_lost.cc",
  481. "command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc",
  482. "command_buffer/service/gles2_cmd_decoder_unittest_drawing.cc",
  483. "command_buffer/service/gles2_cmd_decoder_unittest_extensions.cc",
  484. "command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc",
  485. "command_buffer/service/gles2_cmd_decoder_unittest_programs.cc",
  486. "command_buffer/service/gles2_cmd_decoder_unittest_textures.cc",
  487. "command_buffer/service/gpu_service_test.cc",
  488. "command_buffer/service/gpu_service_test.h",
  489. "command_buffer/service/gpu_tracer_unittest.cc",
  490. "command_buffer/service/gr_cache_controller_unittest.cc",
  491. "command_buffer/service/gr_shader_cache_unittest.cc",
  492. "command_buffer/service/id_manager_unittest.cc",
  493. "command_buffer/service/indexed_buffer_binding_host_unittest.cc",
  494. "command_buffer/service/mailbox_manager_unittest.cc",
  495. "command_buffer/service/memory_program_cache_unittest.cc",
  496. "command_buffer/service/multi_draw_manager_unittest.cc",
  497. "command_buffer/service/passthrough_program_cache_unittest.cc",
  498. "command_buffer/service/program_cache_unittest.cc",
  499. "command_buffer/service/program_manager_unittest.cc",
  500. "command_buffer/service/query_manager_unittest.cc",
  501. "command_buffer/service/raster_decoder_unittest.cc",
  502. "command_buffer/service/raster_decoder_unittest_1.cc",
  503. "command_buffer/service/raster_decoder_unittest_base.cc",
  504. "command_buffer/service/raster_decoder_unittest_base.h",
  505. "command_buffer/service/raster_decoder_unittest_context_lost.cc",
  506. "command_buffer/service/renderbuffer_manager_unittest.cc",
  507. "command_buffer/service/scheduler_unittest.cc",
  508. "command_buffer/service/service_discardable_manager_unittest.cc",
  509. "command_buffer/service/service_transfer_cache_unittest.cc",
  510. "command_buffer/service/shader_manager_unittest.cc",
  511. "command_buffer/service/shader_translator_cache_unittest.cc",
  512. "command_buffer/service/shader_translator_unittest.cc",
  513. "command_buffer/service/shared_context_state_unittest.cc",
  514. "command_buffer/service/shared_image/compound_image_backing_unittest.cc",
  515. "command_buffer/service/sync_point_manager_unittest.cc",
  516. "command_buffer/service/texture_manager_unittest.cc",
  517. "command_buffer/service/transfer_buffer_manager_unittest.cc",
  518. "command_buffer/service/transform_feedback_manager_unittest.cc",
  519. "command_buffer/service/vertex_array_manager_unittest.cc",
  520. "command_buffer/service/vertex_attrib_manager_unittest.cc",
  521. "config/gpu_blocklist_unittest.cc",
  522. "config/gpu_control_list_entry_unittest.cc",
  523. "config/gpu_control_list_testing_arrays_and_structs_autogen.h",
  524. "config/gpu_control_list_testing_autogen.cc",
  525. "config/gpu_control_list_testing_autogen.h",
  526. "config/gpu_control_list_testing_data.h",
  527. "config/gpu_control_list_testing_entry_enums_autogen.h",
  528. "config/gpu_control_list_testing_exceptions_autogen.h",
  529. "config/gpu_control_list_unittest.cc",
  530. "config/gpu_control_list_version_unittest.cc",
  531. "config/gpu_driver_bug_list_unittest.cc",
  532. "config/gpu_info_collector_unittest.cc",
  533. "config/gpu_info_unittest.cc",
  534. "config/gpu_preferences_unittest.cc",
  535. "config/gpu_test_config_unittest.cc",
  536. "config/gpu_test_expectations_parser_unittest.cc",
  537. "config/gpu_util_unittest.cc",
  538. "ipc/client/command_buffer_proxy_impl_unittest.cc",
  539. "ipc/client/image_decode_accelerator_proxy_unittest.cc",
  540. "ipc/common/gpu_memory_buffer_impl_shared_memory_unittest.cc",
  541. "ipc/common/gpu_memory_buffer_impl_test_template.h",
  542. "ipc/common/mojom_traits_unittest.cc",
  543. "ipc/host/gpu_disk_cache_unittest.cc",
  544. "ipc/service/gpu_channel_manager_unittest.cc",
  545. "ipc/service/gpu_channel_test_common.cc",
  546. "ipc/service/gpu_channel_test_common.h",
  547. "ipc/service/gpu_channel_unittest.cc",
  548. "ipc/service/gpu_watchdog_thread_unittest.cc",
  549. ]
  550. if (is_chromeos_ash) {
  551. # Image decode acceleration with hardware is only supported in Chrome OS.
  552. # The intention is to run this test in the linux-chromeos build.
  553. sources += [ "ipc/service/image_decode_accelerator_stub_unittest.cc" ]
  554. }
  555. if (is_mac) {
  556. sources += [
  557. "ipc/common/gpu_memory_buffer_impl_io_surface_unittest.cc",
  558. "ipc/service/gpu_memory_buffer_factory_io_surface_unittest.cc",
  559. ]
  560. }
  561. if (is_linux || is_chromeos || use_ozone) {
  562. sources += [
  563. "ipc/common/gpu_memory_buffer_impl_native_pixmap_unittest.cc",
  564. "ipc/service/gpu_memory_buffer_factory_native_pixmap_unittest.cc",
  565. ]
  566. }
  567. if (is_win) {
  568. sources += [
  569. "ipc/common/gpu_memory_buffer_impl_dxgi_unittest.cc",
  570. "ipc/service/gpu_memory_buffer_factory_dxgi_unittest.cc",
  571. ]
  572. }
  573. if (is_android) {
  574. sources += [
  575. "ipc/common/gpu_memory_buffer_impl_android_hardware_buffer_unittest.cc",
  576. ]
  577. }
  578. if (is_linux || is_chromeos || is_android || is_chromeos) {
  579. sources += [ "command_buffer/service/gpu_fence_manager_unittest.cc" ]
  580. }
  581. # TODO(geofflang): Run passthrough command decoder unittests on more platforms
  582. # once initialization of ANGLE's NULL context is supported
  583. if ((is_win || ((is_linux || is_chromeos) && !use_ozone)) && !is_asan) {
  584. sources += [
  585. "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_buffers.cc",
  586. "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_commands.cc",
  587. "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_discardable_textures.cc",
  588. "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_drawing.cc",
  589. "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_framebuffers.cc",
  590. "command_buffer/service/gles2_cmd_decoder_passthrough_unittest_textures.cc",
  591. ]
  592. }
  593. if (use_dawn) {
  594. sources += [ "command_buffer/service/dawn_caching_interface_unittest.cc" ]
  595. }
  596. configs += [ "//build/config:precompiled_headers" ]
  597. deps = [
  598. ":gles2",
  599. ":gpu",
  600. ":test_support",
  601. "//base",
  602. "//base/test:test_support",
  603. "//base/third_party/dynamic_annotations",
  604. "//build:chromeos_buildflags",
  605. "//cc/paint",
  606. "//components/viz/common:resource_format",
  607. "//gpu/command_buffer/client:gles2_c_lib",
  608. "//gpu/command_buffer/client:gles2_implementation",
  609. "//gpu/command_buffer/client:raster",
  610. "//gpu/command_buffer/client:webgpu",
  611. "//gpu/command_buffer/common",
  612. "//gpu/command_buffer/common:gles2_utils",
  613. "//gpu/command_buffer/service",
  614. "//gpu/config",
  615. "//gpu/ipc:gl_in_process_context",
  616. "//gpu/ipc/client",
  617. "//gpu/ipc/common",
  618. "//gpu/ipc/common:test_interfaces",
  619. "//gpu/ipc/common:test_support",
  620. "//gpu/ipc/host",
  621. "//gpu/ipc/service",
  622. "//mojo/core/embedder",
  623. "//mojo/public/cpp/bindings",
  624. "//mojo/public/cpp/test_support:test_utils",
  625. "//net:test_support",
  626. "//skia",
  627. "//testing/gmock",
  628. "//testing/gtest",
  629. "//third_party/angle:translator",
  630. "//third_party/mesa_headers",
  631. "//third_party/re2",
  632. "//ui/gfx",
  633. "//ui/gfx:test_support",
  634. "//ui/gfx/geometry",
  635. "//ui/gl",
  636. "//ui/gl:gl_unittest_utils",
  637. "//ui/gl:test_support",
  638. "//url",
  639. ]
  640. if (is_android) {
  641. deps += [
  642. "//ui/android:ui_java",
  643. "//ui/gl:gl_jni_headers",
  644. ]
  645. }
  646. if (use_dawn) {
  647. deps += [
  648. "//net:test_support",
  649. "//third_party/dawn/src/dawn:cpp",
  650. "//third_party/dawn/src/dawn:proc",
  651. "//third_party/dawn/src/dawn/native",
  652. ]
  653. }
  654. if (use_ozone) {
  655. deps += [ "//ui/ozone" ]
  656. }
  657. }
  658. test("gpu_perftests") {
  659. sources = [
  660. "perftests/measurements.cc",
  661. "perftests/measurements.h",
  662. "perftests/run_all_tests.cc",
  663. "perftests/texture_upload_perftest.cc",
  664. ]
  665. deps = [
  666. ":gpu",
  667. "//base",
  668. "//base/test:test_support",
  669. "//gpu/command_buffer/client:gles2_implementation",
  670. "//testing/gmock",
  671. "//testing/gtest",
  672. "//testing/perf",
  673. "//ui/gfx/geometry",
  674. "//ui/gl",
  675. "//ui/gl/init",
  676. ]
  677. if (use_ozone) {
  678. deps += [
  679. "//ui/base:features",
  680. "//ui/ozone",
  681. ]
  682. }
  683. data_deps = [
  684. # Needed for isolate script to execute.
  685. "//testing:run_perf_test",
  686. "//third_party/mesa_headers",
  687. ]
  688. # This target should not require the Chrome executable to run.
  689. assert_no_deps = [ "//chrome" ]
  690. }
  691. test("command_buffer_perftests") {
  692. sources = [
  693. "command_buffer/tests/decoder_perftest.cc",
  694. "perftests/run_all_tests.cc",
  695. ]
  696. deps = [
  697. ":gpu",
  698. "//base",
  699. "//base/test:test_support",
  700. "//gpu/command_buffer/client:gles2_cmd_helper",
  701. "//gpu/command_buffer/client:gles2_implementation",
  702. "//gpu/command_buffer/service:gles2",
  703. "//testing/gtest",
  704. "//testing/perf",
  705. "//ui/gfx/geometry",
  706. "//ui/gl",
  707. "//ui/gl/init",
  708. ]
  709. if (use_ozone) {
  710. deps += [
  711. "//ui/base:features",
  712. "//ui/ozone",
  713. ]
  714. }
  715. data_deps = [
  716. # Needed for isolate script to execute.
  717. "//testing:run_perf_test",
  718. ]
  719. # This target should not require the Chrome executable to run.
  720. assert_no_deps = [ "//chrome" ]
  721. }
  722. fuzzer_test("gpu_fuzzer") {
  723. sources = [ "command_buffer/tests/fuzzer_main.cc" ]
  724. deps = [
  725. ":gles2",
  726. ":gpu",
  727. "//base",
  728. "//base:i18n",
  729. "//base/third_party/dynamic_annotations",
  730. "//ui/gfx/geometry",
  731. "//ui/gl",
  732. "//ui/gl:test_support",
  733. ]
  734. libfuzzer_options = [ "max_len=16384" ]
  735. if (use_ozone) {
  736. deps += [ "//ui/ozone" ]
  737. }
  738. }
  739. if (is_linux || is_chromeos) {
  740. fuzzer_test("gpu_angle_fuzzer") {
  741. sources = [ "command_buffer/tests/fuzzer_main.cc" ]
  742. defines = [ "GPU_FUZZER_USE_ANGLE" ]
  743. deps = [
  744. ":gles2",
  745. ":gpu",
  746. "//base",
  747. "//base/third_party/dynamic_annotations",
  748. "//ui/gfx/geometry",
  749. "//ui/gl",
  750. "//ui/gl:test_support",
  751. ]
  752. if (use_ozone) {
  753. deps += [ "//ui/ozone" ]
  754. }
  755. libfuzzer_options = [ "max_len=16384" ]
  756. }
  757. fuzzer_test("gpu_angle_passthrough_fuzzer") {
  758. sources = [ "command_buffer/tests/fuzzer_main.cc" ]
  759. defines = [
  760. "GPU_FUZZER_USE_ANGLE",
  761. "GPU_FUZZER_USE_PASSTHROUGH_CMD_DECODER",
  762. ]
  763. deps = [
  764. ":gles2",
  765. ":gpu",
  766. "//base",
  767. "//base/third_party/dynamic_annotations",
  768. "//ui/gfx/geometry",
  769. "//ui/gl",
  770. "//ui/gl:test_support",
  771. ]
  772. if (use_ozone) {
  773. deps += [ "//ui/ozone" ]
  774. }
  775. libfuzzer_options = [ "max_len=16384" ]
  776. }
  777. fuzzer_test("gpu_swangle_passthrough_fuzzer") {
  778. sources = [ "command_buffer/tests/fuzzer_main.cc" ]
  779. defines = [
  780. "GPU_FUZZER_USE_ANGLE",
  781. "GPU_FUZZER_USE_SWANGLE",
  782. "GPU_FUZZER_USE_PASSTHROUGH_CMD_DECODER",
  783. ]
  784. deps = [
  785. ":gles2",
  786. ":gpu",
  787. "//base",
  788. "//base/third_party/dynamic_annotations",
  789. "//ui/gfx/geometry",
  790. "//ui/gl",
  791. "//ui/gl:test_support",
  792. ]
  793. if (use_ozone) {
  794. deps += [ "//ui/ozone" ]
  795. }
  796. libfuzzer_options = [ "max_len=16384" ]
  797. }
  798. fuzzer_test("gpu_raster_fuzzer") {
  799. sources = [ "command_buffer/tests/fuzzer_main.cc" ]
  800. defines = [ "GPU_FUZZER_USE_RASTER_DECODER" ]
  801. deps = [
  802. ":gles2",
  803. ":gpu",
  804. "//base",
  805. "//base/third_party/dynamic_annotations",
  806. "//ui/gfx/geometry",
  807. "//ui/gl",
  808. "//ui/gl:test_support",
  809. ]
  810. if (use_ozone) {
  811. deps += [ "//ui/ozone" ]
  812. }
  813. libfuzzer_options = [ "max_len=16384" ]
  814. }
  815. fuzzer_test("gpu_raster_passthrough_fuzzer") {
  816. sources = [ "command_buffer/tests/fuzzer_main.cc" ]
  817. defines = [
  818. "GPU_FUZZER_USE_ANGLE",
  819. "GPU_FUZZER_USE_RASTER_DECODER",
  820. "GPU_FUZZER_USE_PASSTHROUGH_CMD_DECODER",
  821. ]
  822. deps = [
  823. ":gles2",
  824. ":gpu",
  825. "//base",
  826. "//base/third_party/dynamic_annotations",
  827. "//ui/gfx/geometry",
  828. "//ui/gl",
  829. "//ui/gl:test_support",
  830. ]
  831. if (use_ozone) {
  832. deps += [ "//ui/ozone" ]
  833. }
  834. libfuzzer_options = [ "max_len=16384" ]
  835. }
  836. fuzzer_test("gpu_raster_angle_fuzzer") {
  837. sources = [ "command_buffer/tests/fuzzer_main.cc" ]
  838. defines = [
  839. "GPU_FUZZER_USE_RASTER_DECODER",
  840. "GPU_FUZZER_USE_ANGLE",
  841. ]
  842. deps = [
  843. ":gles2",
  844. ":gpu",
  845. "//base",
  846. "//base/third_party/dynamic_annotations",
  847. "//ui/gfx/geometry",
  848. "//ui/gl",
  849. "//ui/gl:test_support",
  850. ]
  851. if (use_ozone) {
  852. deps += [ "//ui/ozone" ]
  853. }
  854. libfuzzer_options = [ "max_len=16384" ]
  855. }
  856. fuzzer_test("gpu_raster_swangle_passthrough_fuzzer") {
  857. sources = [ "command_buffer/tests/fuzzer_main.cc" ]
  858. defines = [
  859. "GPU_FUZZER_USE_ANGLE",
  860. "GPU_FUZZER_USE_SWANGLE",
  861. "GPU_FUZZER_USE_PASSTHROUGH_CMD_DECODER",
  862. "GPU_FUZZER_USE_RASTER_DECODER",
  863. ]
  864. deps = [
  865. ":gles2",
  866. ":gpu",
  867. "//base",
  868. "//base/third_party/dynamic_annotations",
  869. "//ui/gfx/geometry",
  870. "//ui/gl",
  871. "//ui/gl:test_support",
  872. ]
  873. if (use_ozone) {
  874. deps += [ "//ui/ozone" ]
  875. }
  876. libfuzzer_options = [ "max_len=16384" ]
  877. }
  878. }
  879. # Microbenchmark to measure performance of GLHelper code, for use in
  880. # debugging, profiling, and optimizing.
  881. test("gpu_benchmark") {
  882. sources = [ "command_buffer/tests/gl_helper_benchmark.cc" ]
  883. configs += [
  884. "//build/config:precompiled_headers",
  885. "//third_party/khronos:khronos_headers",
  886. ]
  887. if (!is_debug && (is_win || is_android)) {
  888. configs -= [ "//build/config/compiler:default_optimization" ]
  889. configs += [ "//build/config/compiler:optimize_max" ]
  890. }
  891. deps = [
  892. "//base",
  893. "//base/test:test_support",
  894. "//components/test:run_all_unittests",
  895. "//components/viz/common",
  896. "//components/viz/test:test_support",
  897. "//gpu/command_buffer/client",
  898. "//gpu/command_buffer/client:gles2_implementation",
  899. "//gpu/ipc:gl_in_process_context",
  900. "//gpu/ipc:gpu_thread_holder",
  901. "//skia",
  902. "//testing/gmock",
  903. "//testing/gtest",
  904. "//ui/gfx",
  905. ]
  906. data_deps = [ "//third_party/mesa_headers" ]
  907. }