mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2025-12-20 04:40:07 +01:00
clients/simple-dmabuf-vulkan: New Vulkan client example
Example to serve as a reference of a basic Wayland client using Vulkan with dmabuf. This does not use a traditional Vulkan swapchain but implements it using imported gbm buffers. Also features use of linux-explicit-synchronization-unstable-v1 with Vulkan. Based on weston-simple-dmabuf-egl. Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
This commit is contained in:
parent
75c37afa62
commit
5536a98e97
4 changed files with 2236 additions and 0 deletions
|
|
@ -211,6 +211,48 @@ if dep_vulkan.found() and prog_glslang.found()
|
||||||
'deps': [ 'vulkan', 'wayland-cursor' ],
|
'deps': [ 'vulkan', 'wayland-cursor' ],
|
||||||
'options': [ 'renderer-gl' ]
|
'options': [ 'renderer-gl' ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
srcs_simple_dmabuf_vulkan_shaders = [
|
||||||
|
'simple_dmabuf_vulkan_vertex_shader.vert',
|
||||||
|
'simple_dmabuf_vulkan_fragment_shader.frag',
|
||||||
|
]
|
||||||
|
|
||||||
|
simple_dmabuf_vulkan_shaders = []
|
||||||
|
foreach s : srcs_simple_dmabuf_vulkan_shaders
|
||||||
|
simple_dmabuf_vulkan_shaders += custom_target(s + '.spv.h',
|
||||||
|
command: [ prog_glslang, '@INPUT@', '--quiet', '--variable-name', '@BASENAME@', '-V', '-x', '-o', '@OUTPUT@' ],
|
||||||
|
input: s,
|
||||||
|
output: '@BASENAME@.spv.h',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
simple_clients += {
|
||||||
|
'name': 'dmabuf-vulkan',
|
||||||
|
'sources': [
|
||||||
|
'simple-dmabuf-vulkan.c',
|
||||||
|
simple_dmabuf_vulkan_shaders,
|
||||||
|
linux_dmabuf_unstable_v1_client_protocol_h,
|
||||||
|
linux_dmabuf_unstable_v1_protocol_c,
|
||||||
|
linux_explicit_synchronization_unstable_v1_client_protocol_h,
|
||||||
|
linux_explicit_synchronization_unstable_v1_protocol_c,
|
||||||
|
xdg_shell_client_protocol_h,
|
||||||
|
xdg_shell_protocol_c,
|
||||||
|
weston_direct_display_client_protocol_h,
|
||||||
|
weston_direct_display_protocol_c,
|
||||||
|
],
|
||||||
|
'dep_objs': [
|
||||||
|
dep_vulkan,
|
||||||
|
dep_libdrm_headers,
|
||||||
|
dep_libm,
|
||||||
|
dep_libdrm,
|
||||||
|
dep_libshared,
|
||||||
|
dep_matrix_c,
|
||||||
|
dep_wayland_client,
|
||||||
|
dep_libweston_private, # for pixel-formats.h
|
||||||
|
],
|
||||||
|
'deps': [ 'vulkan', 'wayland-cursor', 'gbm' ],
|
||||||
|
'options': [ 'renderer-gl' ]
|
||||||
|
}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
foreach t : simple_clients
|
foreach t : simple_clients
|
||||||
|
|
|
||||||
2168
clients/simple-dmabuf-vulkan.c
Normal file
2168
clients/simple-dmabuf-vulkan.c
Normal file
File diff suppressed because it is too large
Load diff
9
clients/simple_dmabuf_vulkan_fragment_shader.frag
Normal file
9
clients/simple_dmabuf_vulkan_fragment_shader.frag
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#version 450 core
|
||||||
|
|
||||||
|
layout(location = 0) in vec4 v_color;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 f_color;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
f_color = v_color;
|
||||||
|
}
|
||||||
17
clients/simple_dmabuf_vulkan_vertex_shader.vert
Normal file
17
clients/simple_dmabuf_vulkan_vertex_shader.vert
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#version 450 core
|
||||||
|
|
||||||
|
layout(std140, set = 0, binding = 0) uniform block {
|
||||||
|
uniform mat4 reflection;
|
||||||
|
uniform float offset;
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(location = 0) in vec4 pos;
|
||||||
|
layout(location = 1) in vec4 color;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 v_color;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_Position = reflection * (pos + vec4(offset, offset, 0.0, 0.0));
|
||||||
|
v_color = color;
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue