1bf215546Sopenharmony_ci# Copyright © 2017 Intel Corporation
2bf215546Sopenharmony_ci# SPDX-License-Identifier: MIT
3bf215546Sopenharmony_ci
4bf215546Sopenharmony_citu_entrypoints = custom_target(
5bf215546Sopenharmony_ci  'tu_entrypoints',
6bf215546Sopenharmony_ci  input : [vk_entrypoints_gen, vk_api_xml],
7bf215546Sopenharmony_ci  output : ['tu_entrypoints.h', 'tu_entrypoints.c'],
8bf215546Sopenharmony_ci  command : [
9bf215546Sopenharmony_ci    prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
10bf215546Sopenharmony_ci    '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'tu',
11bf215546Sopenharmony_ci  ],
12bf215546Sopenharmony_ci  depend_files : vk_entrypoints_gen_depend_files,
13bf215546Sopenharmony_ci)
14bf215546Sopenharmony_ci
15bf215546Sopenharmony_ci
16bf215546Sopenharmony_cilibtu_files = files(
17bf215546Sopenharmony_ci  'tu_autotune.c',
18bf215546Sopenharmony_ci  'tu_clear_blit.c',
19bf215546Sopenharmony_ci  'tu_cmd_buffer.c',
20bf215546Sopenharmony_ci  'tu_cs_breadcrumbs.c',
21bf215546Sopenharmony_ci  'tu_cs.c',
22bf215546Sopenharmony_ci  'tu_device.c',
23bf215546Sopenharmony_ci  'tu_descriptor_set.c',
24bf215546Sopenharmony_ci  'tu_dynamic_rendering.c',
25bf215546Sopenharmony_ci  'tu_formats.c',
26bf215546Sopenharmony_ci  'tu_image.c',
27bf215546Sopenharmony_ci  'tu_lrz.c',
28bf215546Sopenharmony_ci  'tu_nir_lower_multiview.c',
29bf215546Sopenharmony_ci  'tu_pass.c',
30bf215546Sopenharmony_ci  'tu_pipeline.c',
31bf215546Sopenharmony_ci  'tu_query.c',
32bf215546Sopenharmony_ci  'tu_shader.c',
33bf215546Sopenharmony_ci  'tu_suballoc.c',
34bf215546Sopenharmony_ci  'tu_util.c',
35bf215546Sopenharmony_ci)
36bf215546Sopenharmony_ci
37bf215546Sopenharmony_citu_deps = []
38bf215546Sopenharmony_citu_flags = []
39bf215546Sopenharmony_ci
40bf215546Sopenharmony_citu_wsi = false
41bf215546Sopenharmony_ci
42bf215546Sopenharmony_ciif with_platform_x11
43bf215546Sopenharmony_ci  tu_deps += dep_xcb_dri3
44bf215546Sopenharmony_ci  tu_wsi = true
45bf215546Sopenharmony_ciendif
46bf215546Sopenharmony_ci
47bf215546Sopenharmony_ciif with_platform_wayland
48bf215546Sopenharmony_ci  tu_deps += dep_wayland_client
49bf215546Sopenharmony_ci  tu_wsi = true
50bf215546Sopenharmony_ciendif
51bf215546Sopenharmony_ci
52bf215546Sopenharmony_ciif system_has_kms_drm and not with_platform_android
53bf215546Sopenharmony_ci  tu_wsi = true
54bf215546Sopenharmony_ciendif
55bf215546Sopenharmony_ci
56bf215546Sopenharmony_ciif tu_wsi
57bf215546Sopenharmony_ci  libtu_files += 'tu_wsi.c'
58bf215546Sopenharmony_ciendif
59bf215546Sopenharmony_ci
60bf215546Sopenharmony_ciif with_platform_android
61bf215546Sopenharmony_ci  libtu_files += files('tu_android.c')
62bf215546Sopenharmony_ci  tu_deps += [dep_android]
63bf215546Sopenharmony_ciendif
64bf215546Sopenharmony_ci
65bf215546Sopenharmony_ciif with_xlib_lease
66bf215546Sopenharmony_ci  tu_deps += [dep_xlib_xrandr]
67bf215546Sopenharmony_ciendif
68bf215546Sopenharmony_ci
69bf215546Sopenharmony_ciif with_freedreno_kgsl
70bf215546Sopenharmony_ci  tu_flags += '-DTU_USE_KGSL'
71bf215546Sopenharmony_ci  # Even if libdrm is available we shouldn't use it in KGSL build
72bf215546Sopenharmony_ci  tu_flags += '-UHAVE_LIBDRM'
73bf215546Sopenharmony_ci  libtu_files += files('tu_kgsl.c')
74bf215546Sopenharmony_cielse
75bf215546Sopenharmony_ci  libtu_files += files('tu_drm.c')
76bf215546Sopenharmony_ci  tu_deps += dep_libdrm
77bf215546Sopenharmony_ciendif
78bf215546Sopenharmony_ci
79bf215546Sopenharmony_citu_tracepoints = custom_target(
80bf215546Sopenharmony_ci  'tu_tracepoints.[ch]',
81bf215546Sopenharmony_ci  input: 'tu_tracepoints.py',
82bf215546Sopenharmony_ci  output: ['tu_tracepoints.c', 'tu_tracepoints.h', 'tu_tracepoints_perfetto.h'],
83bf215546Sopenharmony_ci  command: [
84bf215546Sopenharmony_ci    prog_python, '@INPUT@',
85bf215546Sopenharmony_ci    '-p', join_paths(meson.source_root(), 'src/util/perf/'),
86bf215546Sopenharmony_ci    '--utrace-src', '@OUTPUT0@',
87bf215546Sopenharmony_ci    '--utrace-hdr', '@OUTPUT1@',
88bf215546Sopenharmony_ci    '--perfetto-hdr', '@OUTPUT2@',
89bf215546Sopenharmony_ci  ],
90bf215546Sopenharmony_ci  depend_files: u_trace_py,
91bf215546Sopenharmony_ci)
92bf215546Sopenharmony_ci
93bf215546Sopenharmony_ciif with_perfetto
94bf215546Sopenharmony_ci  libtu_files += ['tu_perfetto.cc', 'tu_perfetto_util.c']
95bf215546Sopenharmony_ci  tu_deps += dep_perfetto
96bf215546Sopenharmony_ciendif
97bf215546Sopenharmony_ci
98bf215546Sopenharmony_cilibvulkan_freedreno = shared_library(
99bf215546Sopenharmony_ci  'vulkan_freedreno',
100bf215546Sopenharmony_ci  [libtu_files, tu_entrypoints, tu_tracepoints, freedreno_xml_header_files, sha1_h, u_format_pack_h],
101bf215546Sopenharmony_ci  include_directories : [
102bf215546Sopenharmony_ci    inc_include,
103bf215546Sopenharmony_ci    inc_src,
104bf215546Sopenharmony_ci    inc_mapi,
105bf215546Sopenharmony_ci    inc_mesa,
106bf215546Sopenharmony_ci    inc_gallium,
107bf215546Sopenharmony_ci    inc_gallium_aux,
108bf215546Sopenharmony_ci    inc_compiler,
109bf215546Sopenharmony_ci    inc_freedreno,
110bf215546Sopenharmony_ci  ],
111bf215546Sopenharmony_ci  link_with : [
112bf215546Sopenharmony_ci    libfreedreno_ir3,
113bf215546Sopenharmony_ci    libfreedreno_layout,
114bf215546Sopenharmony_ci    libfreedreno_perfcntrs,
115bf215546Sopenharmony_ci  ],
116bf215546Sopenharmony_ci  dependencies : [
117bf215546Sopenharmony_ci    idep_libfreedreno_common,
118bf215546Sopenharmony_ci    dep_dl,
119bf215546Sopenharmony_ci    dep_elf,
120bf215546Sopenharmony_ci    dep_m,
121bf215546Sopenharmony_ci    dep_thread,
122bf215546Sopenharmony_ci    dep_valgrind,
123bf215546Sopenharmony_ci    idep_nir,
124bf215546Sopenharmony_ci    tu_deps,
125bf215546Sopenharmony_ci    idep_vulkan_util,
126bf215546Sopenharmony_ci    idep_vulkan_runtime,
127bf215546Sopenharmony_ci    idep_vulkan_wsi,
128bf215546Sopenharmony_ci    idep_mesautil,
129bf215546Sopenharmony_ci  ],
130bf215546Sopenharmony_ci  c_args : [no_override_init_args, tu_flags],
131bf215546Sopenharmony_ci  gnu_symbol_visibility : 'hidden',
132bf215546Sopenharmony_ci  link_args : [ld_args_bsymbolic, ld_args_gc_sections, ld_args_build_id],
133bf215546Sopenharmony_ci  install : true,
134bf215546Sopenharmony_ci)
135bf215546Sopenharmony_ci
136bf215546Sopenharmony_ciif with_symbols_check
137bf215546Sopenharmony_ci  test(
138bf215546Sopenharmony_ci    'tu symbols check',
139bf215546Sopenharmony_ci    symbols_check,
140bf215546Sopenharmony_ci    args : [
141bf215546Sopenharmony_ci      '--lib', libvulkan_freedreno,
142bf215546Sopenharmony_ci      '--symbols-file', vulkan_icd_symbols,
143bf215546Sopenharmony_ci      symbols_check_args,
144bf215546Sopenharmony_ci    ],
145bf215546Sopenharmony_ci    suite : ['freedreno'],
146bf215546Sopenharmony_ci  )
147bf215546Sopenharmony_ciendif
148bf215546Sopenharmony_ci
149bf215546Sopenharmony_cifreedreno_icd = custom_target(
150bf215546Sopenharmony_ci  'freedreno_icd',
151bf215546Sopenharmony_ci  input : [vk_icd_gen, vk_api_xml],
152bf215546Sopenharmony_ci  output : 'freedreno_icd.@0@.json'.format(host_machine.cpu()),
153bf215546Sopenharmony_ci  command : [
154bf215546Sopenharmony_ci    prog_python, '@INPUT0@',
155bf215546Sopenharmony_ci    '--api-version', '1.1', '--xml', '@INPUT1@',
156bf215546Sopenharmony_ci    '--lib-path', join_paths(get_option('prefix'), get_option('libdir'),
157bf215546Sopenharmony_ci                             'libvulkan_freedreno.so'),
158bf215546Sopenharmony_ci    '--out', '@OUTPUT@',
159bf215546Sopenharmony_ci  ],
160bf215546Sopenharmony_ci  build_by_default : true,
161bf215546Sopenharmony_ci  install_dir : with_vulkan_icd_dir,
162bf215546Sopenharmony_ci  install : true,
163bf215546Sopenharmony_ci)
164bf215546Sopenharmony_ci
165bf215546Sopenharmony_ciif meson.version().version_compare('>= 0.58')
166bf215546Sopenharmony_ci  _dev_icdname = 'freedreno_devenv_icd.@0@.json'.format(host_machine.cpu())
167bf215546Sopenharmony_ci  custom_target(
168bf215546Sopenharmony_ci    'freedreno_devenv_icd',
169bf215546Sopenharmony_ci    input : [vk_icd_gen, vk_api_xml],
170bf215546Sopenharmony_ci    output : _dev_icdname,
171bf215546Sopenharmony_ci    command : [
172bf215546Sopenharmony_ci      prog_python, '@INPUT0@',
173bf215546Sopenharmony_ci      '--api-version', '1.1', '--xml', '@INPUT1@',
174bf215546Sopenharmony_ci      '--lib-path', meson.current_build_dir() / 'libvulkan_freedreno.so',
175bf215546Sopenharmony_ci      '--out', '@OUTPUT@',
176bf215546Sopenharmony_ci    ],
177bf215546Sopenharmony_ci    build_by_default : true,
178bf215546Sopenharmony_ci  )
179bf215546Sopenharmony_ci
180bf215546Sopenharmony_ci  devenv.append('VK_ICD_FILENAMES', meson.current_build_dir() / _dev_icdname)
181bf215546Sopenharmony_ciendif
182