summaryrefslogtreecommitdiff
path: root/src/amd/vulkan/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'src/amd/vulkan/meson.build')
-rw-r--r--src/amd/vulkan/meson.build297
1 files changed, 207 insertions, 90 deletions
diff --git a/src/amd/vulkan/meson.build b/src/amd/vulkan/meson.build
index e67aa992037..4bdc115703e 100644
--- a/src/amd/vulkan/meson.build
+++ b/src/amd/vulkan/meson.build
@@ -1,37 +1,86 @@
# Copyright © 2017 Intel Corporation
+#
+# SPDX-License-Identifier: MIT
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
+radv_entrypoints_gen_command = [
+ prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
+ '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@',
+ '--beta', with_vulkan_beta.to_string()
+]
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
+radv_entrypoints_gen_command += [
+ # RADV entrypooints
+ '--prefix', 'radv',
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
+ # Tracing layer entrypoints
+ '--device-prefix', 'sqtt',
+ '--device-prefix', 'rra',
+ '--device-prefix', 'rmv',
+ '--device-prefix', 'ctx_roll',
+
+ # Application layer entrypoints
+ '--device-prefix', 'metro_exodus',
+ '--device-prefix', 'rage2',
+ '--device-prefix', 'quantic_dream',
+
+ # Command buffer annotation layer entrypoints
+ '--device-prefix', 'annotate',
+]
radv_entrypoints = custom_target(
'radv_entrypoints',
input : [vk_entrypoints_gen, vk_api_xml],
output : ['radv_entrypoints.h', 'radv_entrypoints.c'],
- command : [
- prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
- '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'radv',
- '--device-prefix', 'sqtt',
- ],
+ command : radv_entrypoints_gen_command,
depend_files : vk_entrypoints_gen_depend_files,
)
libradv_files = files(
+ 'bvh/bvh.h',
+ 'layers/radv_ctx_roll_layer.c',
+ 'layers/radv_metro_exodus.c',
+ 'layers/radv_rage2.c',
+ 'layers/radv_quantic_dream.c',
+ 'layers/radv_rmv_layer.c',
+ 'layers/radv_rra_layer.c',
'layers/radv_sqtt_layer.c',
+ 'meta/radv_meta.c',
+ 'meta/radv_meta.h',
+ 'meta/radv_meta_astc_decode.c',
+ 'meta/radv_meta_blit.c',
+ 'meta/radv_meta_blit2d.c',
+ 'meta/radv_meta_buffer.c',
+ 'meta/radv_meta_bufimage.c',
+ 'meta/radv_meta_clear.c',
+ 'meta/radv_meta_copy.c',
+ 'meta/radv_meta_copy_vrs_htile.c',
+ 'meta/radv_meta_dcc_retile.c',
+ 'meta/radv_meta_decompress.c',
+ 'meta/radv_meta_etc_decode.c',
+ 'meta/radv_meta_fast_clear.c',
+ 'meta/radv_meta_fmask_copy.c',
+ 'meta/radv_meta_fmask_expand.c',
+ 'meta/radv_meta_resolve.c',
+ 'meta/radv_meta_resolve_cs.c',
+ 'meta/radv_meta_resolve_fs.c',
+ 'nir/radv_nir.h',
+ 'nir/radv_nir_apply_pipeline_layout.c',
+ 'nir/radv_nir_export_multiview.c',
+ 'nir/radv_nir_lower_abi.c',
+ 'nir/radv_nir_lower_cooperative_matrix.c',
+ 'nir/radv_nir_lower_fs_barycentric.c',
+ 'nir/radv_nir_lower_fs_intrinsics.c',
+ 'nir/radv_nir_lower_hit_attrib_derefs.c',
+ 'nir/radv_nir_lower_intrinsics_early.c',
+ 'nir/radv_nir_lower_io.c',
+ 'nir/radv_nir_lower_poly_line_smooth.c',
+ 'nir/radv_nir_lower_primitive_shading_rate.c',
+ 'nir/radv_nir_lower_ray_queries.c',
+ 'nir/radv_nir_lower_view_index.c',
+ 'nir/radv_nir_lower_viewport_to_zero.c',
+ 'nir/radv_nir_lower_vs_inputs.c',
+ 'nir/radv_nir_rt_common.c',
+ 'nir/radv_nir_rt_shader.c',
'winsys/null/radv_null_bo.c',
'winsys/null/radv_null_bo.h',
'winsys/null/radv_null_cs.c',
@@ -39,54 +88,83 @@ libradv_files = files(
'winsys/null/radv_null_winsys.c',
'winsys/null/radv_null_winsys_public.h',
'radv_acceleration_structure.c',
- 'radv_acceleration_structure.h',
'radv_android.c',
+ 'radv_android.h',
+ 'radv_buffer.c',
+ 'radv_buffer.h',
+ 'radv_buffer_view.c',
+ 'radv_buffer_view.h',
'radv_cmd_buffer.c',
+ 'radv_cmd_buffer.h',
+ 'radv_cp_dma.c',
+ 'radv_cp_dma.h',
+ 'radv_cp_reg_shadowing.c',
+ 'radv_cp_reg_shadowing.h',
+ 'radv_cs.c',
'radv_cs.h',
'radv_debug.c',
'radv_debug.h',
'radv_device.c',
+ 'radv_device.h',
+ 'radv_device_memory.c',
+ 'radv_device_memory.h',
'radv_descriptor_set.c',
'radv_descriptor_set.h',
+ 'radv_device_generated_commands.c',
+ 'radv_device_generated_commands.h',
+ 'radv_event.c',
+ 'radv_event.h',
'radv_formats.c',
+ 'radv_formats.h',
'radv_image.c',
- 'radv_llvm_helper.cpp',
- 'radv_meta.c',
- 'radv_meta.h',
- 'radv_meta_blit.c',
- 'radv_meta_blit2d.c',
- 'radv_meta_buffer.c',
- 'radv_meta_bufimage.c',
- 'radv_meta_clear.c',
- 'radv_meta_copy.c',
- 'radv_meta_copy_vrs_htile.c',
- 'radv_meta_dcc_retile.c',
- 'radv_meta_decompress.c',
- 'radv_meta_fast_clear.c',
- 'radv_meta_fmask_expand.c',
- 'radv_meta_resolve.c',
- 'radv_meta_resolve_cs.c',
- 'radv_meta_resolve_fs.c',
- 'radv_nir_lower_ycbcr_textures.c',
- 'radv_nir_to_llvm.c',
- 'radv_pass.c',
+ 'radv_image.h',
+ 'radv_image_view.c',
+ 'radv_image_view.h',
+ 'radv_instance.c',
+ 'radv_instance.h',
+ 'radv_perfcounter.c',
+ 'radv_physical_device.c',
'radv_pipeline.c',
+ 'radv_pipeline.h',
'radv_pipeline_cache.c',
+ 'radv_pipeline_cache.h',
+ 'radv_pipeline_compute.c',
+ 'radv_pipeline_compute.h',
+ 'radv_pipeline_graphics.c',
'radv_pipeline_rt.c',
- 'radv_private.h',
+ 'radv_pipeline_rt.h',
+ 'radv_printf.c',
+ 'radv_printf.h',
+ 'radv_queue.c',
+ 'radv_queue.h',
'radv_radeon_winsys.h',
+ 'radv_rmv.c',
+ 'radv_rmv.h',
+ 'radv_rra.c',
+ 'radv_rra.h',
+ 'radv_sampler.c',
+ 'radv_sampler.h',
+ 'radv_sdma.c',
+ 'radv_sdma.h',
'radv_shader.c',
'radv_shader.h',
'radv_shader_args.c',
'radv_shader_args.h',
- 'radv_shader_helper.h',
'radv_shader_info.c',
+ 'radv_shader_info.h',
+ 'radv_shader_object.c',
+ 'radv_shader_object.h',
+ 'radv_spm.c',
+ 'radv_spm.h',
'radv_sqtt.c',
+ 'radv_sqtt.h',
'radv_query.c',
- 'radv_util.c',
+ 'radv_query.h',
+ 'radv_video.c',
+ 'radv_video.h',
+ 'radv_video_enc.c',
'radv_wsi.c',
- 'si_cmd_buffer.c',
- 'vk_format.h',
+ 'radv_wsi.h',
)
if not with_platform_windows
@@ -103,81 +181,70 @@ if not with_platform_windows
)
endif
+if with_llvm
+ libradv_files += files(
+ 'radv_llvm_helper.cpp',
+ 'radv_llvm_helper.h',
+ 'radv_nir_to_llvm.c',
+ 'radv_nir_to_llvm.h',
+ )
+endif
+
+subdir('radix_sort')
+libradv_files += radix_sort_files
+
+subdir('bvh')
+
+subdir('layers')
+
radv_deps = []
radv_flags = cc.get_supported_arguments(['-Wimplicit-fallthrough', '-Wshadow'])
if with_platform_x11
radv_deps += dep_xcb_dri3
- radv_flags += [
- '-DVK_USE_PLATFORM_XCB_KHR',
- '-DVK_USE_PLATFORM_XLIB_KHR',
- ]
- libradv_files += files('radv_wsi_x11.c')
endif
if with_platform_wayland
radv_deps += dep_wayland_client
- radv_flags += '-DVK_USE_PLATFORM_WAYLAND_KHR'
- libradv_files += files('radv_wsi_wayland.c')
-endif
-
-if system_has_kms_drm and not with_platform_android
- radv_flags += '-DVK_USE_PLATFORM_DISPLAY_KHR'
- libradv_files += files('radv_wsi_display.c')
endif
if with_xlib_lease
radv_deps += [dep_xlib_xrandr]
- radv_flags += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT'
endif
if with_platform_android
radv_deps += dep_android
- radv_flags += [
- '-DVK_USE_PLATFORM_ANDROID_KHR'
- ]
endif
-if with_platform_windows
- radv_flags += [
- '-DVK_USE_PLATFORM_WIN32_KHR',
- ]
-endif
-
-# When static linking LLVM, all its symbols are public API.
-# That may cause symbol collision, so explicitly demote everything.
-libvulkan_radeon_ld_args = []
-libvulkan_radeon_link_depends = []
-
-if with_llvm and with_ld_version_script
- libvulkan_radeon_ld_args += ['-Wl,--version-script', join_paths(meson.current_source_dir(), 'vulkan.sym')]
- libvulkan_radeon_link_depends += files('vulkan.sym')
+radv_build_id = get_option('radv-build-id')
+if radv_build_id != ''
+ radv_flags += '-DRADV_BUILD_ID_OVERRIDE="' + radv_build_id + '"'
endif
-vulkan_radv_def = 'vulkan_radv.def'
-
libvulkan_radeon = shared_library(
'vulkan_radeon',
- [libradv_files, radv_entrypoints, sha1_h],
- vs_module_defs : vulkan_radv_def,
+ [libradv_files, radv_entrypoints, sha1_h, radix_sort_spv, bvh_spv, radv_annotate_layer],
+ vs_module_defs : vulkan_api_def,
include_directories : [
- inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_amd, inc_amd_common, inc_amd_common_llvm, inc_compiler, inc_util, inc_vulkan_wsi,
+ inc_include, inc_src, inc_amd, inc_amd_common, inc_amd_common_llvm, inc_util,
],
link_with : [
- libamd_common, libamd_common_llvm, libamdgpu_addrlib, libvulkan_wsi,
+ libamd_common, libamd_common_llvm, libamdgpu_addrlib,
],
dependencies : [
dep_llvm, dep_libdrm_amdgpu, dep_thread, dep_elf, dep_dl, dep_m,
dep_valgrind, radv_deps, idep_aco,
- idep_mesautil, idep_nir, idep_vulkan_util, idep_amdgfxregs_h, idep_xmlconfig,
+ idep_mesautil, idep_nir, idep_vulkan_util, idep_vulkan_wsi,
+ idep_vulkan_runtime, idep_amdgfxregs_h, idep_xmlconfig,
],
c_args : [no_override_init_args, radv_flags, c_msvc_compat_args],
cpp_args : [radv_flags, cpp_msvc_compat_args],
link_args : [
- ld_args_build_id, ld_args_bsymbolic, ld_args_gc_sections, libvulkan_radeon_ld_args,
+ ld_args_build_id, ld_args_bsymbolic, ld_args_gc_sections, vulkan_icd_link_args,
],
- link_depends : [libvulkan_radeon_link_depends,],
+ link_depends : vulkan_icd_link_depends,
gnu_symbol_visibility : 'hidden',
+ name_prefix : host_machine.system() == 'windows' ? '' : [],
install : true,
)
@@ -198,22 +265,72 @@ endif
icd_lib_path = join_paths(get_option('prefix'), get_option('libdir'))
icd_file_name = 'libvulkan_radeon.so'
if with_platform_windows
- icd_lib_path = '.'
+ icd_lib_path = import('fs').relative_to(get_option('bindir'), with_vulkan_icd_dir)
icd_file_name = 'vulkan_radeon.dll'
endif
+icd_command = [
+ prog_python, '@INPUT0@',
+ '--api-version', '1.3', '--xml', '@INPUT1@',
+ '--lib-path', join_paths(icd_lib_path, icd_file_name),
+ '--out', '@OUTPUT@',
+]
+if with_platform_windows
+ icd_command += '--use-backslash'
+endif
+
radeon_icd = custom_target(
'radeon_icd',
input : [vk_icd_gen, vk_api_xml],
output : 'radeon_icd.@0@.json'.format(host_machine.cpu()),
+ command : icd_command,
+ build_by_default : true,
+ install_dir : with_vulkan_icd_dir,
+ install_tag : 'runtime',
+ install : true,
+)
+
+_dev_icdname = 'radeon_devenv_icd.@0@.json'.format(host_machine.cpu())
+_dev_icd = custom_target(
+ 'radeon_devenv_icd',
+ input : [vk_icd_gen, vk_api_xml],
+ output : _dev_icdname,
command : [
prog_python, '@INPUT0@',
- '--api-version', '1.2', '--xml', '@INPUT1@',
- '--lib-path', join_paths(icd_lib_path, icd_file_name),
+ '--api-version', '1.3', '--xml', '@INPUT1@',
+ '--lib-path', meson.current_build_dir() / icd_file_name,
'--out', '@OUTPUT@',
],
build_by_default : true,
- install_dir : with_vulkan_icd_dir,
- install : true,
)
+devenv.append('VK_DRIVER_FILES', _dev_icd.full_path())
+# Deprecated: replaced by VK_DRIVER_FILES above
+devenv.append('VK_ICD_FILENAMES', _dev_icd.full_path())
+
+if with_tests
+ test(
+ 'radv_tests',
+ executable(
+ 'radv_tests',
+ files(
+ 'nir/radv_nir_lower_hit_attrib_derefs.c',
+ 'tests/radv_nir_lower_hit_attrib_derefs_tests.cpp',
+ ),
+ cpp_args : [cpp_msvc_compat_args],
+ gnu_symbol_visibility : 'hidden',
+ include_directories : [
+ inc_include,
+ inc_src,
+ inc_amd,
+ inc_amd_common,
+ inc_compiler,
+ inc_util,
+ include_directories('.'),
+ ],
+ dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
+ ),
+ suite : ['compiler', 'nir'],
+ protocol : 'gtest',
+ )
+endif