mesa/src/vulkan/meson.build

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

104 lines
2.7 KiB
Meson
Raw Normal View History

# Copyright © 2017 Intel Corporation
# SPDX-License-Identifier: MIT
vk_api_xml = files('registry/vk.xml')
vulkan_icd_link_args = []
vulkan_icd_link_depends = []
if with_platform_android
vulkan_icd_symbols = files('vulkan-icd-android-symbols.txt')
if with_ld_version_script
vulkan_icd_link_args += ['-Wl,--version-script', join_paths(meson.current_source_dir(), 'vulkan-android.sym')]
vulkan_icd_link_depends += files('vulkan-android.sym')
endif
else
vulkan_icd_symbols = files('vulkan-icd-symbols.txt')
if with_ld_version_script
vulkan_icd_link_args += ['-Wl,--version-script', join_paths(meson.current_source_dir(), 'vulkan.sym')]
vulkan_icd_link_depends += files('vulkan.sym')
endif
endif
inc_vulkan_util = include_directories('util')
vulkan_wsi_deps = []
vulkan_wsi_list = []
vulkan_api_def = custom_target(
'vulkan_api.def',
input: 'vulkan_api.def.in',
output : 'vulkan_api.def',
command : gen_vs_module_defs_normal_command,
)
if with_platform_x11
vulkan_wsi_deps += [
dep_xcb,
dep_x11_xcb,
dep_xcb_dri3,
dep_xcb_present,
dep_xcb_xfixes,
dep_xcb_sync,
dep_xcb_xrandr,
dep_xcb_shm,
dep_xshmfence,
]
vulkan_wsi_list += '-DVK_USE_PLATFORM_XCB_KHR'
vulkan_wsi_list += '-DVK_USE_PLATFORM_XLIB_KHR'
if with_xcb_keysyms
vulkan_wsi_deps += dep_xcb_keysyms
endif
endif
if with_platform_wayland
vulkan_wsi_deps += dep_wayland_client
vulkan_wsi_list += '-DVK_USE_PLATFORM_WAYLAND_KHR'
endif
if system_has_kms_drm and not with_platform_android
vulkan_wsi_deps += [dep_libdrm, dep_display_info]
vulkan_wsi_list += '-DVK_USE_PLATFORM_DISPLAY_KHR'
endif
if with_xlib_lease
vulkan_wsi_deps += [dep_xlib_xrandr]
vulkan_wsi_list += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT'
endif
if with_platform_android
vulkan_wsi_list += '-DVK_USE_PLATFORM_ANDROID_KHR'
endif
if with_platform_windows
vulkan_wsi_list += '-DVK_USE_PLATFORM_WIN32_KHR'
endif
if with_platform_macos
vulkan_wsi_list += '-DVK_USE_PLATFORM_MACOS_MVK'
vulkan_wsi_list += '-DVK_USE_PLATFORM_METAL_EXT'
vulkan_wsi_deps += dependency(
'appleframeworks',
modules : ['QuartzCore', 'Metal']
)
endif
idep_vulkan_wsi_defines = declare_dependency(
compile_args : vulkan_wsi_list,
dependencies : vulkan_wsi_deps,
)
vulkan_wsi_deps += idep_vulkan_wsi_defines
subdir('util')
subdir('runtime')
subdir('wsi')
if with_vulkan_overlay_layer
subdir('overlay-layer')
endif
if with_vulkan_device_select_layer
subdir('device-select-layer')
endif
vulkan/screenshot-layer: Add Vulkan screenshot layer This change adds a Vulkan screenshot layer that allows users to take screenshots from a Vulkan application, but has an emphasis on performance, decreasing the performance impact on the application involved. This allows for automated setups to use this layer to take screenshots for navigating various in-application menus. This layer works by hooking into various common Vulkan setup functions, until it enters the vkQueuePresentKHR function, and from there it copies the current frame's image from the swapchain as an RGB image to host-cached memory, where we will receive the information as a framebuffer pointer. From there, we copy the framebuffer contents to a thread that will detach from the main process so it can write the image to a PNG file without holding back the main thread. This layer was created from using the existing overlay layer as a template, then adding portions of LunarG's VulkanTools screenshot layer: https://github.com/LunarG/VulkanTools/blob/main/layersvt/screenshot.cpp More specifically, there were usages of functions, along with modifications of various functions from screenshot.cpp in the VulkanTools project, used in screenshot.cpp. There are some sections of the screenshotting functionality that remain unmodified from the original screenshot.cpp file in VulkanTools, including the global locking structures and the writeFile() function, which takes care of obtaining the images from the swapchain. There were various areas in which modifications were made, including how images are written to a file (using PNG instead of PPM, introducing threading, added fences/semaphores, etc), along with many smaller changes. v2: Fix segfault upon application exit v3: Fix filename issue with concatenation, along with some leftover memory handling that wasn't cleaned up. v4: Fix some error handling and nits v5: Fix output directory handling Reviewed-by: Ivan Briano <ivan.briano@intel.com Signed-off-by: Casey Bowman <casey.g.bowman@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30527>
2024-05-29 23:39:45 -07:00
if with_vulkan_screenshot_layer
subdir('screenshot-layer')
endif
if with_vulkan_vram_report_limit_layer
subdir('vram-report-limit-layer')
endif
if with_vulkan_anti_lag_layer
subdir('anti-lag-layer')
endif