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