xref: /aosp_15_r20/external/mesa3d/src/freedreno/vulkan/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright © 2017 Intel Corporation
2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Workertu_entrypoints = custom_target(
5*61046927SAndroid Build Coastguard Worker  'tu_entrypoints',
6*61046927SAndroid Build Coastguard Worker  input : [vk_entrypoints_gen, vk_api_xml],
7*61046927SAndroid Build Coastguard Worker  output : ['tu_entrypoints.h', 'tu_entrypoints.cc'],
8*61046927SAndroid Build Coastguard Worker  command : [
9*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
10*61046927SAndroid Build Coastguard Worker    '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'tu',
11*61046927SAndroid Build Coastguard Worker    '--include', 'adreno_common.xml.h',
12*61046927SAndroid Build Coastguard Worker    '--tmpl-prefix', 'tu', '--tmpl-param', 'chip CHIP',
13*61046927SAndroid Build Coastguard Worker    '--tmpl-variants', '<A6XX>', '<A7XX>',
14*61046927SAndroid Build Coastguard Worker    '--beta', with_vulkan_beta.to_string(),
15*61046927SAndroid Build Coastguard Worker    '--device-prefix', 'tu_rmv',
16*61046927SAndroid Build Coastguard Worker  ],
17*61046927SAndroid Build Coastguard Worker  depend_files : vk_entrypoints_gen_depend_files,
18*61046927SAndroid Build Coastguard Worker)
19*61046927SAndroid Build Coastguard Worker
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard Workerlibtu_files = files(
22*61046927SAndroid Build Coastguard Worker  'layers/tu_rmv_layer.cc',
23*61046927SAndroid Build Coastguard Worker  'tu_autotune.cc',
24*61046927SAndroid Build Coastguard Worker  'tu_buffer.cc',
25*61046927SAndroid Build Coastguard Worker  'tu_buffer_view.cc',
26*61046927SAndroid Build Coastguard Worker  'tu_clear_blit.cc',
27*61046927SAndroid Build Coastguard Worker  'tu_cmd_buffer.cc',
28*61046927SAndroid Build Coastguard Worker  'tu_cs_breadcrumbs.cc',
29*61046927SAndroid Build Coastguard Worker  'tu_cs.cc',
30*61046927SAndroid Build Coastguard Worker  'tu_device.cc',
31*61046927SAndroid Build Coastguard Worker  'tu_descriptor_set.cc',
32*61046927SAndroid Build Coastguard Worker  'tu_dynamic_rendering.cc',
33*61046927SAndroid Build Coastguard Worker  'tu_event.cc',
34*61046927SAndroid Build Coastguard Worker  'tu_formats.cc',
35*61046927SAndroid Build Coastguard Worker  'tu_image.cc',
36*61046927SAndroid Build Coastguard Worker  'tu_knl.cc',
37*61046927SAndroid Build Coastguard Worker  'tu_lrz.cc',
38*61046927SAndroid Build Coastguard Worker  'tu_nir_lower_multiview.cc',
39*61046927SAndroid Build Coastguard Worker  'tu_pass.cc',
40*61046927SAndroid Build Coastguard Worker  'tu_pipeline.cc',
41*61046927SAndroid Build Coastguard Worker  'tu_sampler.cc',
42*61046927SAndroid Build Coastguard Worker  'tu_query_pool.cc',
43*61046927SAndroid Build Coastguard Worker  'tu_rmv.cc',
44*61046927SAndroid Build Coastguard Worker  'tu_shader.cc',
45*61046927SAndroid Build Coastguard Worker  'tu_suballoc.cc',
46*61046927SAndroid Build Coastguard Worker  'tu_util.cc',
47*61046927SAndroid Build Coastguard Worker)
48*61046927SAndroid Build Coastguard Worker
49*61046927SAndroid Build Coastguard Workerlibtu_includes = [
50*61046927SAndroid Build Coastguard Worker    inc_include,
51*61046927SAndroid Build Coastguard Worker    inc_src,
52*61046927SAndroid Build Coastguard Worker    inc_freedreno,
53*61046927SAndroid Build Coastguard Worker]
54*61046927SAndroid Build Coastguard Worker
55*61046927SAndroid Build Coastguard Workertu_link_with = []
56*61046927SAndroid Build Coastguard Workertu_deps = []
57*61046927SAndroid Build Coastguard Workertu_flags = []
58*61046927SAndroid Build Coastguard Worker
59*61046927SAndroid Build Coastguard Workertu_wsi = false
60*61046927SAndroid Build Coastguard Worker
61*61046927SAndroid Build Coastguard Workerif with_platform_x11
62*61046927SAndroid Build Coastguard Worker  tu_deps += dep_xcb_dri3
63*61046927SAndroid Build Coastguard Worker  tu_wsi = true
64*61046927SAndroid Build Coastguard Workerendif
65*61046927SAndroid Build Coastguard Worker
66*61046927SAndroid Build Coastguard Workerif with_platform_wayland
67*61046927SAndroid Build Coastguard Worker  tu_deps += dep_wayland_client
68*61046927SAndroid Build Coastguard Worker  tu_wsi = true
69*61046927SAndroid Build Coastguard Workerendif
70*61046927SAndroid Build Coastguard Worker
71*61046927SAndroid Build Coastguard Workerif system_has_kms_drm and not with_platform_android
72*61046927SAndroid Build Coastguard Worker  tu_wsi = true
73*61046927SAndroid Build Coastguard Workerendif
74*61046927SAndroid Build Coastguard Worker
75*61046927SAndroid Build Coastguard Workerif tu_wsi
76*61046927SAndroid Build Coastguard Worker  libtu_files += 'tu_wsi.cc'
77*61046927SAndroid Build Coastguard Workerendif
78*61046927SAndroid Build Coastguard Worker
79*61046927SAndroid Build Coastguard Workerif with_platform_android
80*61046927SAndroid Build Coastguard Worker  libtu_files += files('tu_android.cc')
81*61046927SAndroid Build Coastguard Worker  tu_deps += [dep_android]
82*61046927SAndroid Build Coastguard Workerendif
83*61046927SAndroid Build Coastguard Worker
84*61046927SAndroid Build Coastguard Workerif with_xlib_lease
85*61046927SAndroid Build Coastguard Worker  tu_deps += [dep_xlib_xrandr]
86*61046927SAndroid Build Coastguard Workerendif
87*61046927SAndroid Build Coastguard Worker
88*61046927SAndroid Build Coastguard Workerif freedreno_kmds.contains('kgsl')
89*61046927SAndroid Build Coastguard Worker  tu_flags += '-DTU_HAS_KGSL'
90*61046927SAndroid Build Coastguard Worker  libtu_files += files('tu_knl_kgsl.cc')
91*61046927SAndroid Build Coastguard Workerendif
92*61046927SAndroid Build Coastguard Worker
93*61046927SAndroid Build Coastguard Workerif freedreno_kmds.contains('msm')
94*61046927SAndroid Build Coastguard Worker  tu_flags += '-DTU_HAS_MSM'
95*61046927SAndroid Build Coastguard Worker  libtu_files += files('tu_knl_drm_msm.cc', 'tu_knl_drm.cc')
96*61046927SAndroid Build Coastguard Worker  tu_deps += dep_libdrm
97*61046927SAndroid Build Coastguard Workerendif
98*61046927SAndroid Build Coastguard Worker
99*61046927SAndroid Build Coastguard Workerif freedreno_kmds.contains('virtio')
100*61046927SAndroid Build Coastguard Worker  tu_flags += '-DTU_HAS_VIRTIO'
101*61046927SAndroid Build Coastguard Worker  libtu_files += files('tu_knl_drm_virtio.cc', 'tu_knl_drm.cc')
102*61046927SAndroid Build Coastguard Worker  libtu_includes += [
103*61046927SAndroid Build Coastguard Worker    inc_virtio_gpu,
104*61046927SAndroid Build Coastguard Worker    inc_virtio_vdrm,
105*61046927SAndroid Build Coastguard Worker  ]
106*61046927SAndroid Build Coastguard Worker  tu_link_with += libvdrm
107*61046927SAndroid Build Coastguard Worker  tu_deps += dep_libdrm
108*61046927SAndroid Build Coastguard Workerendif
109*61046927SAndroid Build Coastguard Worker
110*61046927SAndroid Build Coastguard Workertu_tracepoints = custom_target(
111*61046927SAndroid Build Coastguard Worker  'tu_tracepoints.[ch]',
112*61046927SAndroid Build Coastguard Worker  input: 'tu_tracepoints.py',
113*61046927SAndroid Build Coastguard Worker  output: ['tu_tracepoints.cc', 'tu_tracepoints.h', 'tu_tracepoints_perfetto.h'],
114*61046927SAndroid Build Coastguard Worker  command: [
115*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT@',
116*61046927SAndroid Build Coastguard Worker    '-p', join_paths(dir_source_root, 'src/util/perf/'),
117*61046927SAndroid Build Coastguard Worker    '--utrace-src', '@OUTPUT0@',
118*61046927SAndroid Build Coastguard Worker    '--utrace-hdr', '@OUTPUT1@',
119*61046927SAndroid Build Coastguard Worker    '--perfetto-hdr', '@OUTPUT2@',
120*61046927SAndroid Build Coastguard Worker  ],
121*61046927SAndroid Build Coastguard Worker  depend_files: u_trace_py,
122*61046927SAndroid Build Coastguard Worker)
123*61046927SAndroid Build Coastguard Worker
124*61046927SAndroid Build Coastguard Workerif with_perfetto
125*61046927SAndroid Build Coastguard Worker  libtu_files += ['tu_perfetto.cc']
126*61046927SAndroid Build Coastguard Worker  tu_deps += dep_perfetto
127*61046927SAndroid Build Coastguard Workerendif
128*61046927SAndroid Build Coastguard Worker
129*61046927SAndroid Build Coastguard Workertu_cpp_args = []
130*61046927SAndroid Build Coastguard Workertu_cpp_args += cpp.get_supported_arguments([
131*61046927SAndroid Build Coastguard Worker  '-fno-exceptions',
132*61046927SAndroid Build Coastguard Worker  '-fno-rtti',
133*61046927SAndroid Build Coastguard Worker  '-Wno-address-of-temporary',
134*61046927SAndroid Build Coastguard Worker  '-Wno-array-bounds',
135*61046927SAndroid Build Coastguard Worker  '-Wno-c99-designator',
136*61046927SAndroid Build Coastguard Worker  '-Wno-class-memaccess',
137*61046927SAndroid Build Coastguard Worker  '-Wno-missing-braces',
138*61046927SAndroid Build Coastguard Worker  '-Wno-narrowing',
139*61046927SAndroid Build Coastguard Worker  '-Wno-pointer-arith',
140*61046927SAndroid Build Coastguard Worker  '-Wno-reorder-init-list',
141*61046927SAndroid Build Coastguard Worker  '-Wno-sign-compare',
142*61046927SAndroid Build Coastguard Worker  '-Wno-switch',
143*61046927SAndroid Build Coastguard Worker  '-Wno-unused-function',
144*61046927SAndroid Build Coastguard Worker  '-Wno-writable-strings',
145*61046927SAndroid Build Coastguard Worker  '-Wno-write-strings',
146*61046927SAndroid Build Coastguard Worker  '-Wno-vla-cxx-extension',
147*61046927SAndroid Build Coastguard Worker])
148*61046927SAndroid Build Coastguard Worker
149*61046927SAndroid Build Coastguard Worker# HACK compiler.get_supported_arguments()/has_argument() do not seem
150*61046927SAndroid Build Coastguard Worker# to be reliable for cross builds (!?!) so just jam in some args we
151*61046927SAndroid Build Coastguard Worker# need and hope for the best
152*61046927SAndroid Build Coastguard Workerif meson.is_cross_build()
153*61046927SAndroid Build Coastguard Worker  tu_cpp_args += '-Wno-array-bounds'
154*61046927SAndroid Build Coastguard Worker  tu_cpp_args += '-Wno-c++11-narrowing'
155*61046927SAndroid Build Coastguard Worker  tu_cpp_args += '-Wno-missing-braces'
156*61046927SAndroid Build Coastguard Worker  tu_cpp_args += '-Wno-unused-function'
157*61046927SAndroid Build Coastguard Worker  tu_cpp_args += '-Wno-writable-strings'
158*61046927SAndroid Build Coastguard Workerendif
159*61046927SAndroid Build Coastguard Worker
160*61046927SAndroid Build Coastguard Workerlibvulkan_freedreno = shared_library(
161*61046927SAndroid Build Coastguard Worker  'vulkan_freedreno',
162*61046927SAndroid Build Coastguard Worker  [libtu_files, tu_entrypoints, tu_tracepoints, freedreno_xml_header_files, sha1_h, u_format_pack_h],
163*61046927SAndroid Build Coastguard Worker  include_directories : libtu_includes,
164*61046927SAndroid Build Coastguard Worker  link_with : [
165*61046927SAndroid Build Coastguard Worker    libfreedreno_ir3,
166*61046927SAndroid Build Coastguard Worker    libfreedreno_layout,
167*61046927SAndroid Build Coastguard Worker    libfreedreno_perfcntrs,
168*61046927SAndroid Build Coastguard Worker    tu_link_with,
169*61046927SAndroid Build Coastguard Worker  ],
170*61046927SAndroid Build Coastguard Worker  dependencies : [
171*61046927SAndroid Build Coastguard Worker    idep_libfreedreno_common,
172*61046927SAndroid Build Coastguard Worker    dep_dl,
173*61046927SAndroid Build Coastguard Worker    dep_elf,
174*61046927SAndroid Build Coastguard Worker    dep_m,
175*61046927SAndroid Build Coastguard Worker    dep_thread,
176*61046927SAndroid Build Coastguard Worker    dep_valgrind,
177*61046927SAndroid Build Coastguard Worker    idep_nir,
178*61046927SAndroid Build Coastguard Worker    tu_deps,
179*61046927SAndroid Build Coastguard Worker    idep_vulkan_util,
180*61046927SAndroid Build Coastguard Worker    idep_vulkan_runtime,
181*61046927SAndroid Build Coastguard Worker    idep_vulkan_wsi,
182*61046927SAndroid Build Coastguard Worker    idep_mesautil,
183*61046927SAndroid Build Coastguard Worker  ],
184*61046927SAndroid Build Coastguard Worker  c_args : [no_override_init_args, tu_flags],
185*61046927SAndroid Build Coastguard Worker  cpp_args : [tu_cpp_args, tu_flags],
186*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
187*61046927SAndroid Build Coastguard Worker  link_args : [vulkan_icd_link_args, ld_args_bsymbolic, ld_args_gc_sections, ld_args_build_id],
188*61046927SAndroid Build Coastguard Worker  link_depends : vulkan_icd_link_depends,
189*61046927SAndroid Build Coastguard Worker  install : true,
190*61046927SAndroid Build Coastguard Worker)
191*61046927SAndroid Build Coastguard Worker
192*61046927SAndroid Build Coastguard Workerif with_symbols_check
193*61046927SAndroid Build Coastguard Worker  test(
194*61046927SAndroid Build Coastguard Worker    'tu symbols check',
195*61046927SAndroid Build Coastguard Worker    symbols_check,
196*61046927SAndroid Build Coastguard Worker    args : [
197*61046927SAndroid Build Coastguard Worker      '--lib', libvulkan_freedreno,
198*61046927SAndroid Build Coastguard Worker      '--symbols-file', vulkan_icd_symbols,
199*61046927SAndroid Build Coastguard Worker      symbols_check_args,
200*61046927SAndroid Build Coastguard Worker    ],
201*61046927SAndroid Build Coastguard Worker    suite : ['freedreno'],
202*61046927SAndroid Build Coastguard Worker  )
203*61046927SAndroid Build Coastguard Workerendif
204*61046927SAndroid Build Coastguard Worker
205*61046927SAndroid Build Coastguard Workerfreedreno_icd = custom_target(
206*61046927SAndroid Build Coastguard Worker  'freedreno_icd',
207*61046927SAndroid Build Coastguard Worker  input : [vk_icd_gen, vk_api_xml],
208*61046927SAndroid Build Coastguard Worker  output : 'freedreno_icd.@[email protected]'.format(host_machine.cpu()),
209*61046927SAndroid Build Coastguard Worker  command : [
210*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@',
211*61046927SAndroid Build Coastguard Worker    '--api-version', '1.1', '--xml', '@INPUT1@',
212*61046927SAndroid Build Coastguard Worker    '--lib-path', join_paths(get_option('prefix'), get_option('libdir'),
213*61046927SAndroid Build Coastguard Worker                             'libvulkan_freedreno.so'),
214*61046927SAndroid Build Coastguard Worker    '--out', '@OUTPUT@',
215*61046927SAndroid Build Coastguard Worker  ],
216*61046927SAndroid Build Coastguard Worker  build_by_default : true,
217*61046927SAndroid Build Coastguard Worker  install_dir : with_vulkan_icd_dir,
218*61046927SAndroid Build Coastguard Worker  install_tag : 'runtime',
219*61046927SAndroid Build Coastguard Worker  install : true,
220*61046927SAndroid Build Coastguard Worker)
221*61046927SAndroid Build Coastguard Worker
222*61046927SAndroid Build Coastguard Worker_dev_icdname = 'freedreno_devenv_icd.@[email protected]'.format(host_machine.cpu())
223*61046927SAndroid Build Coastguard Worker_dev_icd = custom_target(
224*61046927SAndroid Build Coastguard Worker  'freedreno_devenv_icd',
225*61046927SAndroid Build Coastguard Worker  input : [vk_icd_gen, vk_api_xml],
226*61046927SAndroid Build Coastguard Worker  output : _dev_icdname,
227*61046927SAndroid Build Coastguard Worker  command : [
228*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@',
229*61046927SAndroid Build Coastguard Worker    '--api-version', '1.1', '--xml', '@INPUT1@',
230*61046927SAndroid Build Coastguard Worker    '--lib-path', meson.current_build_dir() / 'libvulkan_freedreno.so',
231*61046927SAndroid Build Coastguard Worker    '--out', '@OUTPUT@',
232*61046927SAndroid Build Coastguard Worker  ],
233*61046927SAndroid Build Coastguard Worker  build_by_default : true,
234*61046927SAndroid Build Coastguard Worker)
235*61046927SAndroid Build Coastguard Worker
236*61046927SAndroid Build Coastguard Workerdevenv.append('VK_DRIVER_FILES', _dev_icd.full_path())
237*61046927SAndroid Build Coastguard Worker# Deprecated: replaced by VK_DRIVER_FILES above
238*61046927SAndroid Build Coastguard Workerdevenv.append('VK_ICD_FILENAMES', _dev_icd.full_path())
239