1# Copyright 2017 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
5import("//components/viz/viz.gni")
6import("//gpu/vulkan/features.gni")
7import("//skia/features.gni")
8import("//testing/test.gni")
9
10source_set("resource_format") {
11  sources = [ "resources/resource_format.h" ]
12}
13
14viz_component("resource_format_utils") {
15  output_name = "viz_resource_format_utils"
16
17  defines = [ "VIZ_RESOURCE_FORMAT_IMPLEMENTATION" ]
18
19  sources = [
20    "resources/resource_format_utils.cc",
21    "resources/resource_format_utils.h",
22    "resources/resource_sizes.h",
23    "viz_resource_format_export.h",
24  ]
25
26  configs = [ "//third_party/khronos:khronos_headers" ]
27
28  public_deps = [ ":resource_format" ]
29
30  deps = [
31    "//base",
32    "//cc/base:base",
33    "//gpu/vulkan:buildflags",
34    "//skia",
35    "//third_party/dawn/src/dawn:dawncpp_headers",
36    "//ui/gfx:buffer_types",
37    "//ui/gfx/geometry:geometry",
38  ]
39  if (enable_vulkan) {
40    deps += [ "//third_party/vulkan_headers" ]
41  }
42  if (is_mac) {
43    sources += [ "resources/resource_format_utils_mac.mm" ]
44  }
45}
46
47# TODO(sgilhuly): To reduce link times, merge these context provider components
48# into a single gr_context_provider component.
49if (is_mac) {
50  viz_component("metal_context_provider") {
51    output_name = "viz_metal_context_provider"
52
53    defines = [ "VIZ_METAL_CONTEXT_PROVIDER_IMPLEMENTATION" ]
54
55    sources = [
56      "gpu/metal_api_proxy.h",
57      "gpu/metal_api_proxy.mm",
58      "gpu/metal_context_provider.h",
59      "gpu/metal_context_provider.mm",
60      "viz_metal_context_provider_export.h",
61    ]
62
63    public_deps = [ "//skia" ]
64
65    deps = [
66      "//base",
67      "//components/crash/core/common:crash_key",
68      "//components/metal_util",
69      "//gpu/config",
70      "//ui/gfx",
71      "//ui/gl",
72    ]
73
74    frameworks = [
75      "Metal.framework",
76      "Foundation.framework",
77    ]
78  }
79}
80
81if (enable_vulkan) {
82  viz_component("vulkan_context_provider") {
83    output_name = "viz_vulkan_context_provider"
84
85    defines = [ "VIZ_VULKAN_CONTEXT_PROVIDER_IMPLEMENTATION" ]
86
87    # TODO(cblume): http://crbug.com/911313
88    # Abstract out the platform specific defines. Right now we need the android
89    # platform specific define here to be able to include android specific
90    # functions.
91    if (is_android) {
92      defines += [ "VK_USE_PLATFORM_ANDROID_KHR" ]
93    }
94    sources = [
95      "gpu/vulkan_context_provider.h",
96      "gpu/vulkan_in_process_context_provider.cc",
97      "gpu/vulkan_in_process_context_provider.h",
98      "viz_vulkan_context_provider_export.h",
99    ]
100
101    public_deps = [ "//skia" ]
102
103    deps = [
104      "//base",
105      "//gpu/vulkan",
106      "//gpu/vulkan:buildflags",
107      "//gpu/vulkan/init:skia",
108      "//ui/gfx",
109    ]
110  }
111}
112
113if (skia_use_dawn) {
114  viz_component("dawn_context_provider") {
115    output_name = "viz_dawn_context_provider"
116
117    defines = [ "VIZ_DAWN_CONTEXT_PROVIDER_IMPLEMENTATION" ]
118
119    sources = [
120      "gpu/dawn_context_provider.cc",
121      "gpu/dawn_context_provider.h",
122      "viz_dawn_context_provider_export.h",
123    ]
124
125    public_deps = [
126      "//skia",
127      "//third_party/dawn/src/dawn:dawn_headers",
128    ]
129
130    deps = [
131      "//base",
132      "//third_party/dawn/src/dawn:dawn_proc",
133      "//third_party/dawn/src/dawn:dawncpp",
134      "//third_party/dawn/src/dawn_native",
135    ]
136  }
137}
138
139viz_component("common") {
140  output_name = "viz_common"
141
142  defines = [ "VIZ_COMMON_IMPLEMENTATION" ]
143
144  sources = [
145    "constants.cc",
146    "constants.h",
147    "delegated_ink_metadata.cc",
148    "delegated_ink_metadata.h",
149    "delegated_ink_point.cc",
150    "delegated_ink_point.h",
151    "display/de_jelly.cc",
152    "display/de_jelly.h",
153    "display/overlay_strategy.cc",
154    "display/overlay_strategy.h",
155    "display/renderer_settings.cc",
156    "display/renderer_settings.h",
157    "display/update_vsync_parameters_callback.h",
158    "features.cc",
159    "features.h",
160    "frame_sinks/begin_frame_args.cc",
161    "frame_sinks/begin_frame_args.h",
162    "frame_sinks/begin_frame_source.cc",
163    "frame_sinks/begin_frame_source.h",
164    "frame_sinks/copy_output_request.cc",
165    "frame_sinks/copy_output_request.h",
166    "frame_sinks/copy_output_result.cc",
167    "frame_sinks/copy_output_result.h",
168    "frame_sinks/copy_output_util.cc",
169    "frame_sinks/copy_output_util.h",
170    "frame_sinks/delay_based_time_source.cc",
171    "frame_sinks/delay_based_time_source.h",
172    "frame_timing_details.h",
173    "frame_timing_details_map.h",
174    "gl_i420_converter.cc",
175    "gl_i420_converter.h",
176    "gl_scaler.cc",
177    "gl_scaler.h",
178    "gpu/context_cache_controller.cc",
179    "gpu/context_cache_controller.h",
180    "gpu/context_lost_observer.h",
181    "gpu/context_lost_reason.cc",
182    "gpu/context_lost_reason.h",
183    "gpu/context_provider.cc",
184    "gpu/context_provider.h",
185    "gpu/gpu_vsync_callback.h",
186    "gpu/raster_context_provider.cc",
187    "gpu/raster_context_provider.h",
188    "hit_test/aggregated_hit_test_region.h",
189    "hit_test/hit_test_region_list.cc",
190    "hit_test/hit_test_region_list.h",
191    "quads/aggregated_render_pass.cc",
192    "quads/aggregated_render_pass.h",
193    "quads/aggregated_render_pass_draw_quad.cc",
194    "quads/aggregated_render_pass_draw_quad.h",
195    "quads/compositor_frame.cc",
196    "quads/compositor_frame.h",
197    "quads/compositor_frame_metadata.cc",
198    "quads/compositor_frame_metadata.h",
199    "quads/compositor_render_pass.cc",
200    "quads/compositor_render_pass.h",
201    "quads/compositor_render_pass_draw_quad.cc",
202    "quads/compositor_render_pass_draw_quad.h",
203    "quads/content_draw_quad_base.cc",
204    "quads/content_draw_quad_base.h",
205    "quads/debug_border_draw_quad.cc",
206    "quads/debug_border_draw_quad.h",
207    "quads/draw_quad.cc",
208    "quads/draw_quad.h",
209    "quads/frame_deadline.cc",
210    "quads/frame_deadline.h",
211    "quads/largest_draw_quad.cc",
212    "quads/largest_draw_quad.h",
213    "quads/picture_draw_quad.cc",
214    "quads/picture_draw_quad.h",
215    "quads/quad_list.cc",
216    "quads/quad_list.h",
217    "quads/render_pass_draw_quad_internal.cc",
218    "quads/render_pass_draw_quad_internal.h",
219    "quads/render_pass_internal.cc",
220    "quads/render_pass_internal.h",
221    "quads/render_pass_io.cc",
222    "quads/render_pass_io.h",
223    "quads/selection.h",
224    "quads/shared_quad_state.cc",
225    "quads/shared_quad_state.h",
226    "quads/solid_color_draw_quad.cc",
227    "quads/solid_color_draw_quad.h",
228    "quads/stream_video_draw_quad.cc",
229    "quads/stream_video_draw_quad.h",
230    "quads/surface_draw_quad.cc",
231    "quads/surface_draw_quad.h",
232    "quads/texture_draw_quad.cc",
233    "quads/texture_draw_quad.h",
234    "quads/tile_draw_quad.cc",
235    "quads/tile_draw_quad.h",
236    "quads/video_hole_draw_quad.cc",
237    "quads/video_hole_draw_quad.h",
238    "quads/yuv_video_draw_quad.cc",
239    "quads/yuv_video_draw_quad.h",
240    "resources/bitmap_allocation.cc",
241    "resources/bitmap_allocation.h",
242    "resources/platform_color.h",
243    "resources/release_callback.h",
244    "resources/resource_id.h",
245    "resources/resource_settings.cc",
246    "resources/resource_settings.h",
247    "resources/return_callback.h",
248    "resources/returned_resource.h",
249    "resources/shared_bitmap.cc",
250    "resources/shared_bitmap.h",
251    "resources/single_release_callback.cc",
252    "resources/single_release_callback.h",
253    "resources/transferable_resource.cc",
254    "resources/transferable_resource.h",
255    "skia_helper.cc",
256    "skia_helper.h",
257    "surfaces/child_local_surface_id_allocator.cc",
258    "surfaces/child_local_surface_id_allocator.h",
259    "surfaces/frame_sink_id.cc",
260    "surfaces/frame_sink_id.h",
261    "surfaces/frame_sink_id_allocator.cc",
262    "surfaces/frame_sink_id_allocator.h",
263    "surfaces/local_surface_id.cc",
264    "surfaces/local_surface_id.h",
265    "surfaces/parent_local_surface_id_allocator.cc",
266    "surfaces/parent_local_surface_id_allocator.h",
267    "surfaces/scoped_surface_id_allocator.cc",
268    "surfaces/scoped_surface_id_allocator.h",
269    "surfaces/surface_id.cc",
270    "surfaces/surface_id.h",
271    "surfaces/surface_info.cc",
272    "surfaces/surface_info.h",
273    "surfaces/surface_range.cc",
274    "surfaces/surface_range.h",
275    "switches.cc",
276    "switches.h",
277    "traced_value.cc",
278    "traced_value.h",
279    "vertical_scroll_direction.h",
280    "viz_common_export.h",
281    "viz_utils.cc",
282    "viz_utils.h",
283  ]
284
285  deps = [
286    "//base",
287    "//build:chromecast_buildflags",
288    "//build:chromeos_buildflags",
289
290    # TODO(staraz): cc/base was added because SharedQuadState includes
291    # cc::MathUtil. Remove it once cc/base/math_util* are moved to viz.
292    "//cc/base",
293    "//cc/paint",
294    "//gpu/command_buffer/client:gles2_implementation",
295    "//gpu/command_buffer/client:gles2_interface",
296    "//gpu/command_buffer/client:raster",
297    "//gpu/command_buffer/client:raster_interface",
298    "//gpu/config",
299    "//gpu/ipc/common:common",
300    "//gpu/vulkan:buildflags",
301    "//mojo/public/cpp/base",
302    "//mojo/public/cpp/system",
303    "//services/tracing/public/cpp:cpp",
304    "//third_party/libyuv",
305    "//ui/gfx",
306    "//ui/gfx:color_space",
307    "//ui/gfx:geometry_skia",
308    "//ui/gfx/geometry",
309    "//ui/gl",
310    "//ui/latency",
311  ]
312
313  if (is_win) {
314    sources += [
315      "display/use_layered_window.cc",
316      "display/use_layered_window.h",
317    ]
318
319    deps += [ "//ui/base" ]
320  }
321
322  if (is_android) {
323    deps += [
324      ":common_jni_headers",
325      "//gpu/config",
326    ]
327  }
328
329  public_deps = [
330    ":resource_format_utils",
331    "//gpu/command_buffer/client",
332    "//gpu/command_buffer/common",
333    "//mojo/public/cpp/bindings",
334    "//skia",
335  ]
336  if (enable_vulkan) {
337    public_deps += [ ":vulkan_context_provider" ]
338  }
339  if (is_mac) {
340    public_deps += [ ":metal_context_provider" ]
341  }
342  if (skia_use_dawn) {
343    public_deps += [ ":dawn_context_provider" ]
344  }
345}
346
347viz_source_set("unit_tests") {
348  testonly = true
349  sources = [
350    "display/overlay_strategy_unittest.cc",
351    "frame_sinks/begin_frame_args_unittest.cc",
352    "frame_sinks/begin_frame_source_unittest.cc",
353    "frame_sinks/copy_output_util_unittest.cc",
354    "frame_sinks/delay_based_time_source_unittest.cc",
355    "gpu/context_cache_controller_unittest.cc",
356    "quads/compositor_render_pass_unittest.cc",
357    "quads/draw_quad_unittest.cc",
358    "quads/render_pass_io_unittest.cc",
359    "resources/resource_sizes_unittest.cc",
360    "surfaces/child_local_surface_id_allocator_unittest.cc",
361    "surfaces/local_surface_id_unittest.cc",
362    "surfaces/parent_local_surface_id_allocator_unittest.cc",
363    "surfaces/scoped_surface_id_allocator_unittest.cc",
364    "surfaces/surface_range_unittest.cc",
365    "yuv_readback_unittest.cc",
366  ]
367
368  if (enable_gl_backend_tests) {
369    sources += [
370      "gl_i420_converter_pixeltest.cc",
371      "gl_i420_converter_unittest.cc",
372      "gl_scaler_overscan_pixeltest.cc",
373      "gl_scaler_pixeltest.cc",
374      "gl_scaler_shader_pixeltest.cc",
375      "gl_scaler_test_util.cc",
376      "gl_scaler_test_util.h",
377      "gl_scaler_unittest.cc",
378    ]
379  }
380
381  if (enable_vulkan) {
382    sources += [ "gpu/vulkan_in_process_context_provider_unittest.cc" ]
383  }
384  deps = [
385    ":common",
386    "//base/test:test_support",
387    "//cc:test_support",
388    "//components/viz/test:test_support",
389    "//gpu/command_buffer/client:gles2_implementation",
390    "//gpu/command_buffer/client:gles2_interface",
391    "//gpu/ipc:gl_in_process_context",
392    "//gpu/ipc/common:surface_handle_type",
393    "//media",
394    "//testing/gmock",
395    "//testing/gtest",
396    "//ui/gfx",
397    "//ui/gfx:color_space",
398    "//ui/gfx/geometry",
399  ]
400}
401
402viz_source_set("perf_tests") {
403  testonly = true
404  sources = [ "quads/draw_quad_perftest.cc" ]
405
406  deps = [
407    ":common",
408    "//base",
409    "//cc/base",
410    "//skia",
411    "//testing/gtest",
412    "//testing/perf",
413  ]
414}
415
416if (is_android) {
417  android_library("common_java") {
418    deps = [ "//base:base_java" ]
419    sources = [
420      "java/src/org/chromium/components/viz/common/VizSwitches.java",
421      "java/src/org/chromium/components/viz/common/display/DeJellyUtils.java",
422    ]
423  }
424
425  generate_jni("common_jni_headers") {
426    sources = [
427      "java/src/org/chromium/components/viz/common/display/DeJellyUtils.java",
428    ]
429  }
430}
431