mpv/video/out/meson.build

49 lines
2.2 KiB
Meson
Raw Normal View History

wl_protocol_dir = wayland['deps'][2].get_variable(pkgconfig: 'pkgdatadir', internal: 'pkgdatadir')
protocols = [[wl_protocol_dir, 'stable/presentation-time/presentation-time.xml'],
[wl_protocol_dir, 'stable/viewporter/viewporter.xml'],
[wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'],
[wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'],
[wl_protocol_dir, 'unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml'],
[wl_protocol_dir, 'unstable/xdg-decoration/xdg-decoration-unstable-v1.xml'],
[wl_protocol_dir, 'staging/content-type/content-type-v1.xml'],
wayland: add support for xx-color-management-v4 for vo_dmabuf_wayland Although this protocol isn't official yet, several compositors are known to support it to some extent and this lets users actually view HDR with less hacks/workarounds. The actual protocol here is simply copy and pasted from the upstream fork* where these are developed. There is also icc profile support in the protocol, but this is omitted for now in favor of setting colorspaces and signalling hdr metadata. However for mpv, this only actually has any practical use with vo_dmabuf_wayland so this is the only VO that will make use of the protocol. When using vulkan, this is already handled via vulkan extensions by compositors and vo_gpu_next. So actually we don't want to use the wayland protocol in that case since it will just get in the way. The only known limitation on that front is driver support for hdr vulkan surfaces but as soon as that is available it should just work with no code changes. For opengl, hdr support there is a whole other mess with a lot of unknowns but simply using this protocol isn't good enough and would require changes elsewhere. vo_wlshm is currently too stupid to pick any format besides bgr0 or 0rgb, so any color management there is meaningless at this stage. So this means that only vo_dmabuf_wayland can actually use this protocol. But that's perfectly fine. Without this, vo_dmabuf_wayland has a very bad limitation in that it cannot communicate colorspaces at all and compositors have to guess. Using xx-color-management-v4 fixes this. For the other VOs, merely having the common protocol setup stuff in the common code does no harm and later if they get smarter, it's easy for them to use the stuff since it is written generically anyway. *: https://gitlab.freedesktop.org/swick/wayland-protocols/-/tree/color-xx/staging/color-management
2024-09-26 22:28:35 +00:00
[wl_protocol_dir, 'staging/fractional-scale/fractional-scale-v1.xml'],
[wl_protocol_dir, 'staging/single-pixel-buffer/single-pixel-buffer-v1.xml'],
wayland: add support for xx-color-management-v4 for vo_dmabuf_wayland Although this protocol isn't official yet, several compositors are known to support it to some extent and this lets users actually view HDR with less hacks/workarounds. The actual protocol here is simply copy and pasted from the upstream fork* where these are developed. There is also icc profile support in the protocol, but this is omitted for now in favor of setting colorspaces and signalling hdr metadata. However for mpv, this only actually has any practical use with vo_dmabuf_wayland so this is the only VO that will make use of the protocol. When using vulkan, this is already handled via vulkan extensions by compositors and vo_gpu_next. So actually we don't want to use the wayland protocol in that case since it will just get in the way. The only known limitation on that front is driver support for hdr vulkan surfaces but as soon as that is available it should just work with no code changes. For opengl, hdr support there is a whole other mess with a lot of unknowns but simply using this protocol isn't good enough and would require changes elsewhere. vo_wlshm is currently too stupid to pick any format besides bgr0 or 0rgb, so any color management there is meaningless at this stage. So this means that only vo_dmabuf_wayland can actually use this protocol. But that's perfectly fine. Without this, vo_dmabuf_wayland has a very bad limitation in that it cannot communicate colorspaces at all and compositors have to guess. Using xx-color-management-v4 fixes this. For the other VOs, merely having the common protocol setup stuff in the common code does no harm and later if they get smarter, it's easy for them to use the stuff since it is written generically anyway. *: https://gitlab.freedesktop.org/swick/wayland-protocols/-/tree/color-xx/staging/color-management
2024-09-26 22:28:35 +00:00
['protocols', 'xx-color-management-v4.xml']]
wl_protocols_source = []
wl_protocols_headers = []
foreach v: ['1.32']
features += {'wayland-protocols-' + v.replace('.', '-'):
wayland['deps'][2].version().version_compare('>=' + v)}
endforeach
if features['wayland-protocols-1-32']
protocols += [[wl_protocol_dir, 'staging/cursor-shape/cursor-shape-v1.xml'],
[wl_protocol_dir, 'unstable/tablet/tablet-unstable-v2.xml']] # required by cursor-shape
endif
foreach p: protocols
xml = join_paths(p)
wl_protocols_source += custom_target(xml.underscorify() + '_c',
input: xml,
output: '@BASENAME@.c',
command: [wayland['scanner'], 'private-code', '@INPUT@', '@OUTPUT@'],
)
wl_protocols_headers += custom_target(xml.underscorify() + '_h',
input: xml,
output: '@BASENAME@.h',
command: [wayland['scanner'], 'client-header', '@INPUT@', '@OUTPUT@'],
)
endforeach
lib_client_protocols = static_library('protocols',
wl_protocols_source + wl_protocols_headers,
dependencies: wayland['deps'][0])
client_protocols = declare_dependency(link_with: lib_client_protocols,
sources: wl_protocols_headers)
dependencies += [client_protocols, wayland['deps']]
sources += files('wayland_common.c')