render/vulkan: add Vulkan renderer

This new renderer is implemented with the existing wlr_renderer API
(which is known to be sub-optimal for some operations). It's not
used by default, but users can opt-in by setting WLR_RENDERER=vulkan.

The renderer depends on VK_EXT_image_drm_format_modifier and
VK_EXT_physical_device_drm.

Co-authored-by: Simon Ser <contact@emersion.fr>
Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
This commit is contained in:
nyorain 2021-02-21 18:30:12 +01:00 committed by Simon Ser
parent 2edf468aeb
commit 8e34692250
21 changed files with 3704 additions and 2 deletions

View file

@ -0,0 +1,20 @@
vulkan_shaders_src = [
'common.vert',
'texture.frag',
'quad.frag',
]
vulkan_shaders = []
foreach shader : vulkan_shaders_src
name = shader.underscorify() + '_data'
args = [glslang, '-V', '@INPUT@', '-o', '@OUTPUT@', '--vn', name]
header = custom_target(
shader + '_spv',
output: shader + '.h',
input: shader,
command: args)
vulkan_shaders += [header]
endforeach
wlr_files += vulkan_shaders