diff --git a/meson.build b/meson.build index dd936c3c..c4416bf7 100644 --- a/meson.build +++ b/meson.build @@ -165,19 +165,24 @@ else dep_rt = null_dep endif -vkh_sp = subproject('vulkan-headers') -vk_api_xml = vkh_sp.get_variable('vulkan_api_xml') -dep_vulkan = vkh_sp.get_variable('vulkan_headers_dep') - -vk_enum_to_str = custom_target( - 'vk_enum_to_str', - input : ['bin/gen_enum_to_str.py', vk_api_xml], - output : ['vk_enum_to_str.c', 'vk_enum_to_str.h'], - command : [ - prog_python, '@INPUT0@', '--xml', '@INPUT1@', - '--outdir', meson.current_build_dir() - ], -) +if get_option('use_vulkan') + vkh_sp = subproject('vulkan-headers') + vk_api_xml = vkh_sp.get_variable('vulkan_api_xml') + dep_vulkan = vkh_sp.get_variable('vulkan_headers_dep') + + vk_enum_to_str = custom_target( + 'vk_enum_to_str', + input : ['bin/gen_enum_to_str.py', vk_api_xml], + output : ['vk_enum_to_str.c', 'vk_enum_to_str.h'], + command : [ + prog_python, '@INPUT0@', '--xml', '@INPUT1@', + '--outdir', meson.current_build_dir() + ], + ) +else + dep_vulkan = null_dep + vk_enum_to_str = [] +endif imgui_options = [ 'default_library=static', diff --git a/meson_options.txt b/meson_options.txt index 5f7d11bd..0daa0995 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -6,6 +6,7 @@ option('with_nvml', type : 'combo', value : 'enabled', choices: ['enabled', 'sys option('with_xnvctrl', type : 'feature', value : 'enabled', description: 'Enable XNVCtrl support') option('with_x11', type : 'feature', value : 'enabled') option('with_wayland', type : 'feature', value : 'disabled') +option('use_vulkan', type : 'boolean', value : 'true') option('with_dbus', type : 'feature', value : 'enabled') option('loglevel', type: 'combo', choices : ['trace', 'debug', 'info', 'warn', 'err', 'critical', 'off'], value : 'info', description: 'Max log level in non-debug build') option('mangoapp', type: 'boolean', value : false) diff --git a/src/hud_elements.cpp b/src/hud_elements.cpp index 1200295d..841f3bbc 100644 --- a/src/hud_elements.cpp +++ b/src/hud_elements.cpp @@ -560,6 +560,7 @@ void HudElements::engine_version(){ ImguiNextColumnFirstItem(); ImGui::PushFont(HUDElements.sw_stats->font1); if (HUDElements.is_vulkan) { +#ifdef HAVE_VULKAN if ((HUDElements.sw_stats->engine == EngineTypes::DXVK || HUDElements.sw_stats->engine == EngineTypes::VKD3D)){ ImGui::TextColored(HUDElements.colors.engine, "%s/%d.%d.%d", HUDElements.sw_stats->engineVersion.c_str(), @@ -573,6 +574,7 @@ void HudElements::engine_version(){ HUDElements.sw_stats->version_vk.minor, HUDElements.sw_stats->version_vk.patch); } +#endif } else { ImGui::TextColored(HUDElements.colors.engine, "%d.%d%s", HUDElements.sw_stats->version_gl.major, HUDElements.sw_stats->version_gl.minor, @@ -729,8 +731,10 @@ void HudElements::image(){ HUDElements.image_infos.loaded = true; if (HUDElements.is_vulkan) { +#ifdef HAVE_VULKAN if ((HUDElements.image_infos.texture = add_texture(HUDElements.sw_stats, value, &(HUDElements.image_infos.width), &(HUDElements.image_infos.height), maxwidth))) HUDElements.image_infos.valid = true; +#endif } else { HUDElements.image_infos.valid = GL_LoadTextureFromFile(value.c_str(), reinterpret_cast(&(HUDElements.image_infos.texture)), @@ -759,8 +763,10 @@ void HudElements::background_image(){ if (HUDElements.background_image_infos.loaded == false) { HUDElements.background_image_infos.loaded = true; if (HUDElements.is_vulkan) { +#ifdef HAVE_VULKAN if ((HUDElements.background_image_infos.texture = add_texture(HUDElements.sw_stats, value, &(HUDElements.background_image_infos.width), &(HUDElements.background_image_infos.height), 0))) HUDElements.background_image_infos.valid = true; +#endif } else { HUDElements.background_image_infos.valid = GL_LoadTextureFromFile(value.c_str(), reinterpret_cast(&(HUDElements.background_image_infos.texture)), diff --git a/src/meson.build b/src/meson.build index e08a2ae2..229ea90e 100644 --- a/src/meson.build +++ b/src/meson.build @@ -41,12 +41,16 @@ vklayer_files = files( 'logging.cpp', 'config.cpp', 'gpu.cpp', - 'vulkan.cpp', 'blacklist.cpp', 'file_utils.cpp', 'intel.cpp', 'load_textures.cpp', ) + +if get_option('use_vulkan') + vklayer_files += files('vulkan.cpp') +endif + opengl_files = [] if ['windows', 'mingw'].contains(host_machine.system()) vklayer_files += files( @@ -142,6 +146,10 @@ if is_unixy endif endif +if get_option('use_vulkan') + pre_args += '-DHAVE_VULKAN' +endif + link_args = cc.get_supported_link_arguments(['-Wl,-Bsymbolic-functions', '-Wl,-z,relro', '-Wl,--exclude-libs,ALL', '-lGL']) # meson fails to check version-script so just force add link_args += '-Wl,--version-script,@0@'.format(join_paths(meson.current_source_dir(), 'mangohud.version'))