xref: /aosp_15_r20/external/mesa3d/src/amd/vulkan/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1# Copyright © 2017 Intel Corporation
2# SPDX-License-Identifier: MIT
3
4radv_entrypoints_gen_command = [
5  prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
6  '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@',
7  '--beta', with_vulkan_beta.to_string()
8]
9
10radv_entrypoints_gen_command += [
11  # RADV entrypooints
12  '--prefix', 'radv',
13
14  # Tracing layer entrypoints
15  '--device-prefix', 'sqtt',
16  '--device-prefix', 'rra',
17  '--device-prefix', 'rmv',
18  '--device-prefix', 'ctx_roll',
19
20  # Application layer entrypoints
21  '--device-prefix', 'metro_exodus',
22  '--device-prefix', 'rage2',
23  '--device-prefix', 'quantic_dream',
24
25  # Command buffer annotation layer entrypoints
26  '--device-prefix', 'annotate',
27]
28
29radv_entrypoints = custom_target(
30  'radv_entrypoints',
31  input : [vk_entrypoints_gen, vk_api_xml],
32  output : ['radv_entrypoints.h', 'radv_entrypoints.c'],
33  command : radv_entrypoints_gen_command,
34  depend_files : vk_entrypoints_gen_depend_files,
35)
36
37libradv_files = files(
38  'bvh/bvh.h',
39  'layers/radv_ctx_roll_layer.c',
40  'layers/radv_metro_exodus.c',
41  'layers/radv_rage2.c',
42  'layers/radv_quantic_dream.c',
43  'layers/radv_rmv_layer.c',
44  'layers/radv_rra_layer.c',
45  'layers/radv_sqtt_layer.c',
46  'meta/radv_meta.c',
47  'meta/radv_meta.h',
48  'meta/radv_meta_astc_decode.c',
49  'meta/radv_meta_blit.c',
50  'meta/radv_meta_blit2d.c',
51  'meta/radv_meta_buffer.c',
52  'meta/radv_meta_bufimage.c',
53  'meta/radv_meta_clear.c',
54  'meta/radv_meta_copy.c',
55  'meta/radv_meta_copy_vrs_htile.c',
56  'meta/radv_meta_dcc_retile.c',
57  'meta/radv_meta_decompress.c',
58  'meta/radv_meta_etc_decode.c',
59  'meta/radv_meta_fast_clear.c',
60  'meta/radv_meta_fmask_copy.c',
61  'meta/radv_meta_fmask_expand.c',
62  'meta/radv_meta_resolve.c',
63  'meta/radv_meta_resolve_cs.c',
64  'meta/radv_meta_resolve_fs.c',
65  'nir/radv_nir.h',
66  'nir/radv_nir_apply_pipeline_layout.c',
67  'nir/radv_nir_export_multiview.c',
68  'nir/radv_nir_lower_abi.c',
69  'nir/radv_nir_lower_cooperative_matrix.c',
70  'nir/radv_nir_lower_fs_barycentric.c',
71  'nir/radv_nir_lower_fs_intrinsics.c',
72  'nir/radv_nir_lower_hit_attrib_derefs.c',
73  'nir/radv_nir_lower_intrinsics_early.c',
74  'nir/radv_nir_lower_io.c',
75  'nir/radv_nir_lower_poly_line_smooth.c',
76  'nir/radv_nir_lower_primitive_shading_rate.c',
77  'nir/radv_nir_lower_ray_queries.c',
78  'nir/radv_nir_lower_view_index.c',
79  'nir/radv_nir_lower_viewport_to_zero.c',
80  'nir/radv_nir_lower_vs_inputs.c',
81  'nir/radv_nir_opt_tid_function.c',
82  'nir/radv_nir_remap_color_attachment.c',
83  'nir/radv_nir_rt_common.c',
84  'nir/radv_nir_rt_shader.c',
85  'winsys/null/radv_null_bo.c',
86  'winsys/null/radv_null_bo.h',
87  'winsys/null/radv_null_cs.c',
88  'winsys/null/radv_null_cs.h',
89  'winsys/null/radv_null_winsys.c',
90  'winsys/null/radv_null_winsys_public.h',
91  'radv_acceleration_structure.c',
92  'radv_android.c',
93  'radv_android.h',
94  'radv_buffer.c',
95  'radv_buffer.h',
96  'radv_buffer_view.c',
97  'radv_buffer_view.h',
98  'radv_cmd_buffer.c',
99  'radv_cmd_buffer.h',
100  'radv_cp_dma.c',
101  'radv_cp_dma.h',
102  'radv_cp_reg_shadowing.c',
103  'radv_cp_reg_shadowing.h',
104  'radv_cs.c',
105  'radv_cs.h',
106  'radv_debug.c',
107  'radv_debug.h',
108  'radv_device.c',
109  'radv_device.h',
110  'radv_device_memory.c',
111  'radv_device_memory.h',
112  'radv_descriptor_set.c',
113  'radv_descriptor_set.h',
114  'radv_device_generated_commands.c',
115  'radv_device_generated_commands.h',
116  'radv_event.c',
117  'radv_event.h',
118  'radv_formats.c',
119  'radv_formats.h',
120  'radv_image.c',
121  'radv_image.h',
122  'radv_image_view.c',
123  'radv_image_view.h',
124  'radv_instance.c',
125  'radv_instance.h',
126  'radv_perfcounter.c',
127  'radv_physical_device.c',
128  'radv_pipeline.c',
129  'radv_pipeline.h',
130  'radv_pipeline_binary.c',
131  'radv_pipeline_binary.h',
132  'radv_pipeline_cache.c',
133  'radv_pipeline_cache.h',
134  'radv_pipeline_compute.c',
135  'radv_pipeline_compute.h',
136  'radv_pipeline_graphics.c',
137  'radv_pipeline_rt.c',
138  'radv_pipeline_rt.h',
139  'radv_printf.c',
140  'radv_printf.h',
141  'radv_queue.c',
142  'radv_queue.h',
143  'radv_radeon_winsys.h',
144  'radv_rmv.c',
145  'radv_rmv.h',
146  'radv_rra.c',
147  'radv_rra.h',
148  'radv_sampler.c',
149  'radv_sampler.h',
150  'radv_sdma.c',
151  'radv_sdma.h',
152  'radv_shader.c',
153  'radv_shader.h',
154  'radv_shader_args.c',
155  'radv_shader_args.h',
156  'radv_shader_info.c',
157  'radv_shader_info.h',
158  'radv_shader_object.c',
159  'radv_shader_object.h',
160  'radv_spm.c',
161  'radv_spm.h',
162  'radv_sqtt.c',
163  'radv_sqtt.h',
164  'radv_query.c',
165  'radv_query.h',
166  'radv_video.c',
167  'radv_video.h',
168  'radv_video_enc.c',
169  'radv_wsi.c',
170  'radv_wsi.h',
171)
172
173if not with_platform_windows
174  libradv_files += files(
175    'winsys/amdgpu/radv_amdgpu_bo.c',
176    'winsys/amdgpu/radv_amdgpu_bo.h',
177    'winsys/amdgpu/radv_amdgpu_cs.c',
178    'winsys/amdgpu/radv_amdgpu_cs.h',
179    'winsys/amdgpu/radv_amdgpu_surface.c',
180    'winsys/amdgpu/radv_amdgpu_surface.h',
181    'winsys/amdgpu/radv_amdgpu_winsys.c',
182    'winsys/amdgpu/radv_amdgpu_winsys.h',
183    'winsys/amdgpu/radv_amdgpu_winsys_public.h',
184  )
185endif
186
187if amd_with_llvm
188  libradv_files += files(
189    'radv_llvm_helper.cpp',
190    'radv_llvm_helper.h',
191    'radv_nir_to_llvm.c',
192    'radv_nir_to_llvm.h',
193  )
194endif
195
196subdir('radix_sort')
197libradv_files += radix_sort_files
198
199subdir('bvh')
200
201subdir('layers')
202
203radv_deps = []
204radv_flags = cc.get_supported_arguments(['-Wimplicit-fallthrough', '-Wshadow'])
205
206if with_platform_x11
207  radv_deps += dep_xcb_dri3
208endif
209
210if with_platform_wayland
211  radv_deps += dep_wayland_client
212endif
213
214if with_xlib_lease
215  radv_deps += [dep_xlib_xrandr]
216endif
217
218if with_platform_android
219  radv_deps += dep_android
220endif
221
222radv_build_id = get_option('radv-build-id')
223if radv_build_id != ''
224  radv_flags += '-DRADV_BUILD_ID_OVERRIDE="' + radv_build_id + '"'
225endif
226
227libvulkan_radeon = shared_library(
228  'vulkan_radeon',
229  [libradv_files, radv_entrypoints, sha1_h, radix_sort_spv, bvh_spv, radv_annotate_layer],
230  vs_module_defs : vulkan_api_def,
231  include_directories : [
232    inc_include, inc_src, inc_amd, inc_amd_common, inc_amd_common_llvm, inc_util,
233  ],
234  link_with : [
235    libamd_common, libamd_common_llvm, libamdgpu_addrlib,
236  ],
237  dependencies : [
238    dep_llvm, dep_libdrm_amdgpu, dep_thread, dep_elf, dep_dl, dep_m,
239    dep_valgrind, radv_deps, idep_aco,
240    idep_mesautil, idep_nir, idep_vulkan_util, idep_vulkan_wsi,
241    idep_vulkan_runtime, idep_amdgfxregs_h, idep_xmlconfig,
242  ],
243  c_args : [no_override_init_args, radv_flags, c_msvc_compat_args],
244  cpp_args : [radv_flags, cpp_msvc_compat_args],
245  link_args : [
246    ld_args_build_id, ld_args_bsymbolic, ld_args_gc_sections, vulkan_icd_link_args,
247  ],
248  link_depends : vulkan_icd_link_depends,
249  gnu_symbol_visibility : 'hidden',
250  name_prefix : host_machine.system() == 'windows' ? '' : [],
251  install : true,
252)
253
254if with_symbols_check
255  test(
256    'radv symbols check',
257    symbols_check,
258    args : [
259      '--lib', libvulkan_radeon,
260      '--symbols-file', vulkan_icd_symbols,
261      '--ignore-symbol', 'ac_init_shared_llvm_once',
262      symbols_check_args,
263    ],
264    suite : ['amd'],
265  )
266endif
267
268icd_lib_path = join_paths(get_option('prefix'), get_option('libdir'))
269icd_file_name = 'libvulkan_radeon.so'
270if with_platform_windows
271  icd_lib_path = import('fs').relative_to(get_option('bindir'), with_vulkan_icd_dir)
272  icd_file_name = 'vulkan_radeon.dll'
273endif
274
275icd_command = [
276  prog_python, '@INPUT0@',
277  '--api-version', '1.3', '--xml', '@INPUT1@',
278  '--lib-path', join_paths(icd_lib_path, icd_file_name),
279  '--out', '@OUTPUT@',
280]
281if with_platform_windows
282  icd_command += '--use-backslash'
283endif
284
285radeon_icd = custom_target(
286  'radeon_icd',
287  input : [vk_icd_gen, vk_api_xml],
288  output : 'radeon_icd.@[email protected]'.format(host_machine.cpu()),
289  command : icd_command,
290  build_by_default : true,
291  install_dir : with_vulkan_icd_dir,
292  install_tag : 'runtime',
293  install : true,
294)
295
296_dev_icdname = 'radeon_devenv_icd.@[email protected]'.format(host_machine.cpu())
297_dev_icd = custom_target(
298  'radeon_devenv_icd',
299  input : [vk_icd_gen, vk_api_xml],
300  output : _dev_icdname,
301  command : [
302    prog_python, '@INPUT0@',
303    '--api-version', '1.3', '--xml', '@INPUT1@',
304    '--lib-path', meson.current_build_dir() / icd_file_name,
305    '--out', '@OUTPUT@',
306  ],
307  build_by_default : true,
308)
309
310devenv.append('VK_DRIVER_FILES', _dev_icd.full_path())
311# Deprecated: replaced by VK_DRIVER_FILES above
312devenv.append('VK_ICD_FILENAMES', _dev_icd.full_path())
313
314if with_tests
315  test(
316    'radv_tests',
317    executable(
318      'radv_tests',
319      files(
320        'nir/radv_nir_lower_hit_attrib_derefs.c',
321        'tests/radv_nir_lower_hit_attrib_derefs_tests.cpp',
322      ),
323      cpp_args : [cpp_msvc_compat_args],
324      gnu_symbol_visibility : 'hidden',
325      include_directories : [
326        inc_include,
327        inc_src,
328        inc_amd,
329        inc_amd_common,
330        inc_compiler,
331        inc_util,
332        include_directories('.'),
333      ],
334      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
335    ),
336    suite : ['compiler', 'nir'],
337    protocol : 'gtest',
338  )
339endif
340