From 29ffc7941042d697ca687be3ab408f18822301a4 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 8 Feb 2023 09:34:34 +0100 Subject: [PATCH] meson: don't pass vk wsi args where they don't belong Only code that cares about Vulkan WSI should get the corresponding arguments passed. Otherwise, the Vulkan headers might end up including other headers that we don't have the correct dependencies passed for. So let's give those a dedicated variable, and only pass that where it's actually needed. Fixes: b39958a3a18 ("anv,nir: Move the ANV YCbCr lowering pass to common code") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8193 Reviewed-by: Yonggang Luo Reviewed-by: Adam Jackson Part-of: --- meson.build | 28 +++++++--------------- src/amd/vulkan/meson.build | 2 +- src/egl/meson.build | 4 ++++ src/freedreno/vulkan/meson.build | 2 +- src/gallium/drivers/zink/meson.build | 2 +- src/gallium/frontends/dri/meson.build | 1 + src/gallium/frontends/lavapipe/meson.build | 2 +- src/gallium/frontends/wgl/meson.build | 4 ++++ src/glx/meson.build | 1 + src/imagination/vulkan/meson.build | 1 + src/intel/vulkan/meson.build | 1 + src/intel/vulkan_hasvk/meson.build | 1 + src/microsoft/vulkan/meson.build | 2 +- src/panfrost/vulkan/meson.build | 2 +- src/virtio/vulkan/meson.build | 1 + src/vulkan/device-select-layer/meson.build | 2 +- src/vulkan/runtime/meson.build | 2 +- src/vulkan/wsi/meson.build | 2 ++ 18 files changed, 33 insertions(+), 27 deletions(-) diff --git a/meson.build b/meson.build index e19acb3993a..e8cd1b8f6fb 100644 --- a/meson.build +++ b/meson.build @@ -362,38 +362,28 @@ with_xlib_lease = get_option('xlib-lease') \ .require(with_platform_x11 and system_has_kms_drm, error_message : 'xlib-lease requires X11 and KMS/DRM support') \ .allowed() +vk_wsi_args = [] + if with_platform_wayland - c_args += '-DVK_USE_PLATFORM_WAYLAND_KHR' - #add this once aco and other places can build with it - #cpp_args += '-DVK_USE_PLATFORM_WAYLAND_KHR' + vk_wsi_args += '-DVK_USE_PLATFORM_WAYLAND_KHR' endif if with_platform_x11 and host_machine.system() != 'darwin' - c_args += ['-DVK_USE_PLATFORM_XCB_KHR', '-DVK_USE_PLATFORM_XLIB_KHR'] - #add this once aco and other places can build with it - #cpp_args += ['-DVK_USE_PLATFORM_XCB_KHR', '-DVK_USE_PLATFORM_XLIB_KHR'] + vk_wsi_args += ['-DVK_USE_PLATFORM_XCB_KHR', '-DVK_USE_PLATFORM_XLIB_KHR'] endif if with_platform_windows - c_args += '-DVK_USE_PLATFORM_WIN32_KHR' - cpp_args += '-DVK_USE_PLATFORM_WIN32_KHR' + vk_wsi_args += '-DVK_USE_PLATFORM_WIN32_KHR' endif if with_platform_android - c_args += '-DVK_USE_PLATFORM_ANDROID_KHR' - cpp_args += '-DVK_USE_PLATFORM_ANDROID_KHR' + vk_wsi_args += '-DVK_USE_PLATFORM_ANDROID_KHR' endif if with_xlib_lease - c_args += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT' - #add this once aco and other places can build with it - #cpp_args += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT' + vk_wsi_args += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT' endif if system_has_kms_drm and not with_platform_android - c_args += '-DVK_USE_PLATFORM_DISPLAY_KHR' - cpp_args += '-DVK_USE_PLATFORM_DISPLAY_KHR' + vk_wsi_args += '-DVK_USE_PLATFORM_DISPLAY_KHR' endif if host_machine.system() == 'darwin' - c_args += '-DVK_USE_PLATFORM_MACOS_MVK' - cpp_args += '-DVK_USE_PLATFORM_MACOS_MVK' - c_args += '-DVK_USE_PLATFORM_METAL_EXT' - cpp_args += '-DVK_USE_PLATFORM_METAL_EXT' + vk_wsi_args += ['-DVK_USE_PLATFORM_MACOS_MVK', '-DVK_USE_PLATFORM_METAL_EXT'] endif with_egl = get_option('egl') \ diff --git a/src/amd/vulkan/meson.build b/src/amd/vulkan/meson.build index c1f4ee4f08f..2ffd6c578f6 100644 --- a/src/amd/vulkan/meson.build +++ b/src/amd/vulkan/meson.build @@ -196,7 +196,7 @@ libvulkan_radeon = shared_library( idep_vulkan_runtime, idep_amdgfxregs_h, idep_xmlconfig, idep_vulkan_common_entrypoints_h, idep_vulkan_wsi_entrypoints_h ], - c_args : [no_override_init_args, radv_flags, c_msvc_compat_args], + c_args : [no_override_init_args, vk_wsi_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, diff --git a/src/egl/meson.build b/src/egl/meson.build index 948dcd90670..01fccf9912c 100644 --- a/src/egl/meson.build +++ b/src/egl/meson.build @@ -106,6 +106,10 @@ if with_dri2 'drivers/dri2/platform_device.c', 'drivers/dri2/platform_surfaceless.c', ) + + c_args_for_egl += vk_wsi_args + cpp_args_for_egl += vk_wsi_args + if with_platform_x11 files_egl += files('drivers/dri2/platform_x11.c') if with_dri3 diff --git a/src/freedreno/vulkan/meson.build b/src/freedreno/vulkan/meson.build index 421c2ffca49..34534bc9621 100644 --- a/src/freedreno/vulkan/meson.build +++ b/src/freedreno/vulkan/meson.build @@ -127,7 +127,7 @@ libvulkan_freedreno = shared_library( idep_vulkan_wsi, idep_mesautil, ], - c_args : [no_override_init_args, tu_flags], + c_args : [no_override_init_args, tu_flags, vk_wsi_args], gnu_symbol_visibility : 'hidden', link_args : [ld_args_bsymbolic, ld_args_gc_sections, ld_args_build_id], install : true, diff --git a/src/gallium/drivers/zink/meson.build b/src/gallium/drivers/zink/meson.build index e054f5a23d1..5f9d4e55002 100644 --- a/src/gallium/drivers/zink/meson.build +++ b/src/gallium/drivers/zink/meson.build @@ -100,7 +100,7 @@ libzink = static_library( idep_nir_headers, idep_mesautil, idep_vulkan_util_headers, idep_vulkan_wsi_headers, idep_vulkan_util, dep_libdrm ], - c_args: zink_c_args, + c_args: [zink_c_args, vk_wsi_args], ) driver_zink = declare_dependency( diff --git a/src/gallium/frontends/dri/meson.build b/src/gallium/frontends/dri/meson.build index 47dcdfd295b..04aafb2f378 100644 --- a/src/gallium/frontends/dri/meson.build +++ b/src/gallium/frontends/dri/meson.build @@ -51,6 +51,7 @@ if with_gallium_zink and not with_platform_android libdri_c_args += '-DKOPPER_LIB_NAMES="libEGL and libGLX"' endif files_libdri += files('kopper.c') + libdri_c_args += vk_wsi_args endif if with_gallium_softpipe diff --git a/src/gallium/frontends/lavapipe/meson.build b/src/gallium/frontends/lavapipe/meson.build index 8215cf0dacb..2ed4abfe4b6 100644 --- a/src/gallium/frontends/lavapipe/meson.build +++ b/src/gallium/frontends/lavapipe/meson.build @@ -42,7 +42,7 @@ endif liblavapipe_st = static_library( 'lavapipe_st', [liblvp_files, lvp_entrypoints, sha1_h], - c_args : [ c_msvc_compat_args, lvp_flags ], + c_args : [ c_msvc_compat_args, lvp_flags, vk_wsi_args], gnu_symbol_visibility : 'hidden', include_directories : [ inc_include, inc_src, inc_util, inc_gallium, inc_compiler, inc_gallium_aux ], dependencies : [ dep_llvm, idep_nir, idep_mesautil, idep_vulkan_util, idep_vulkan_wsi, diff --git a/src/gallium/frontends/wgl/meson.build b/src/gallium/frontends/wgl/meson.build index 5c39bf32a8d..5423c5872a6 100644 --- a/src/gallium/frontends/wgl/meson.build +++ b/src/gallium/frontends/wgl/meson.build @@ -25,6 +25,10 @@ if not with_shared_glapi _c_args_wgl += '-D_GLAPI_NO_EXPORTS' endif +if with_gallium_zink + _c_args_wgl += vk_wsi_args +endif + files_libwgl = files( 'stw_context.c', 'stw_device.c', diff --git a/src/glx/meson.build b/src/glx/meson.build index 20f04742894..60ae7d436fc 100644 --- a/src/glx/meson.build +++ b/src/glx/meson.build @@ -128,6 +128,7 @@ libglx = static_library( include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_glapi, inc_loader], c_args : [ '-DGL_LIB_NAME="lib@0@.so.@1@"'.format(gl_lib_name, gl_lib_version.split('.')[0]), + vk_wsi_args ], gnu_symbol_visibility : 'hidden', link_with : [ diff --git a/src/imagination/vulkan/meson.build b/src/imagination/vulkan/meson.build index ba4538239fe..3e39b155593 100644 --- a/src/imagination/vulkan/meson.build +++ b/src/imagination/vulkan/meson.build @@ -83,6 +83,7 @@ pvr_deps = [ pvr_flags = [ no_override_init_args, + vk_wsi_args, ] if with_imagination_srv diff --git a/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build index 1886ea0904a..a27e5db40ac 100644 --- a/src/intel/vulkan/meson.build +++ b/src/intel/vulkan/meson.build @@ -25,6 +25,7 @@ inc_anv = include_directories('.') anv_flags = [ no_override_init_args, c_sse2_args, + vk_wsi_args, ] anv_cpp_flags = [] diff --git a/src/intel/vulkan_hasvk/meson.build b/src/intel/vulkan_hasvk/meson.build index 0d53080a2f0..fbcfbb0a355 100644 --- a/src/intel/vulkan_hasvk/meson.build +++ b/src/intel/vulkan_hasvk/meson.build @@ -139,6 +139,7 @@ anv_deps = [ anv_flags = [ no_override_init_args, c_sse2_args, + vk_wsi_args, ] anv_cpp_flags = [] diff --git a/src/microsoft/vulkan/meson.build b/src/microsoft/vulkan/meson.build index 998f0d06b15..64d8c2f1856 100644 --- a/src/microsoft/vulkan/meson.build +++ b/src/microsoft/vulkan/meson.build @@ -85,7 +85,7 @@ libvulkan_dzn = shared_library( inc_compiler, inc_util ], dependencies : [dzn_deps, idep_vulkan_wsi, idep_xmlconfig], - c_args : dzn_flags, + c_args : [dzn_flags, vk_wsi_args], cpp_args : dzn_cpp_flags, gnu_symbol_visibility : 'hidden', link_args : [ld_args_bsymbolic, ld_args_gc_sections], diff --git a/src/panfrost/vulkan/meson.build b/src/panfrost/vulkan/meson.build index 8d7cc5e2b11..8629627f8c8 100644 --- a/src/panfrost/vulkan/meson.build +++ b/src/panfrost/vulkan/meson.build @@ -134,7 +134,7 @@ libvulkan_panfrost = shared_library( idep_vulkan_wsi, idep_mesautil, ], - c_args : [no_override_init_args, panvk_flags], + c_args : [no_override_init_args, panvk_flags, vk_wsi_args], link_args : [ld_args_bsymbolic, ld_args_gc_sections], install : true, ) diff --git a/src/virtio/vulkan/meson.build b/src/virtio/vulkan/meson.build index 3f9456a146b..e360e80cd73 100644 --- a/src/virtio/vulkan/meson.build +++ b/src/virtio/vulkan/meson.build @@ -82,6 +82,7 @@ vn_deps = [ vn_flags = [ no_override_init_args, + vk_wsi_args, ] vn_libs = [] diff --git a/src/vulkan/device-select-layer/meson.build b/src/vulkan/device-select-layer/meson.build index 4a2228eedfc..257b8708adf 100644 --- a/src/vulkan/device-select-layer/meson.build +++ b/src/vulkan/device-select-layer/meson.build @@ -39,7 +39,7 @@ endif vklayer_mesa_device_select = shared_library( 'VkLayer_MESA_device_select', vklayer_files, - c_args : [no_override_init_args, vklayer_flags], + c_args : [no_override_init_args, vklayer_flags, vk_wsi_args], gnu_symbol_visibility : 'hidden', dependencies : [ idep_vulkan_util, idep_vulkan_wsi_headers, idep_mesautil, vklayer_deps, diff --git a/src/vulkan/runtime/meson.build b/src/vulkan/runtime/meson.build index c5a0b42d205..e992a844c47 100644 --- a/src/vulkan/runtime/meson.build +++ b/src/vulkan/runtime/meson.build @@ -189,7 +189,7 @@ libvulkan_runtime = static_library( dependencies : vulkan_runtime_deps, # For glsl_type_singleton link_with : libcompiler, - c_args : [c_msvc_compat_args], + c_args : [c_msvc_compat_args, vk_wsi_args], gnu_symbol_visibility : 'hidden', build_by_default : false, ) diff --git a/src/vulkan/wsi/meson.build b/src/vulkan/wsi/meson.build index a79e3a34789..cca907999ba 100644 --- a/src/vulkan/wsi/meson.build +++ b/src/vulkan/wsi/meson.build @@ -60,6 +60,8 @@ wsi_entrypoints = custom_target( libvulkan_wsi = static_library( 'vulkan_wsi', [files_vulkan_wsi, wsi_entrypoints], + c_args: [vk_wsi_args], + cpp_args: [vk_wsi_args], include_directories : [inc_include, inc_src, inc_gallium], dependencies : [ vulkan_wsi_deps, dep_libdrm, dep_libudev, idep_vulkan_util_headers,