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