mutter/src/meta
Robert Mader a9c24ff653 multi-texture-format: Add P010 YCbCr format
It's the 10 bit equivalent to NV12 and uses the same layout as P016, i.e.
16 bit components with the lowest 6 bits set to 0 (padding), allowing us
to use 16 bit "subformats".

Thus adding support is quite trivial as we can reuse the NV12 shader.
The format is widely supported in decoding and display hardware (on Intel
since Kaby Lake), as well as modern codecs (AV1, VP9, HEVC) and has
visible quality advantages over NV12.

Note that the additional colors are lost if composited to a 8 bit RGB
framebuffer. Switching between direct scanout and compositing can thus
cause quality differences. This is no new phenomena, however, as the
same is the case already for e.g. GL clients using 10 bit formats -
including video players.

Also note that P012 and P016 could trivially added as well - it's not
done here as they are uncommen and thus hard to test.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3244>
2023-09-13 14:11:27 +02:00
..
barrier.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
boxes.h boxes: Drop the MetaRectangle typedef 2023-09-01 09:42:48 +00:00
common.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
compositor-mutter.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
compositor.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
display.h mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00
group.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
keybindings.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
main.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meson.build compositor: Add MetaMultiTexture class 2023-07-25 21:24:35 +00:00
meta-backend.h Update license access method 2023-08-30 08:48:23 +02:00
meta-background-actor.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-background-content.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-background-group.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-background-image.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-background.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-close-dialog.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-context.h Update license access method 2023-08-30 08:48:23 +02:00
meta-cursor-tracker.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-dnd.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-enum-types.c.in core: Drop "volatile" from static GTypes in manual registration 2021-03-22 10:47:51 +00:00
meta-enum-types.h.in cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-enums.h Update license access method 2023-08-30 08:48:23 +02:00
meta-idle-monitor.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-inhibit-shortcuts-dialog.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-later.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-launch-context.h Update license access method 2023-08-30 08:48:23 +02:00
meta-monitor-manager.h monitor-manager: Add 'reason' argument to 'power-save-changed' signal 2023-09-02 11:07:38 +00:00
meta-multi-texture-format.h multi-texture-format: Add P010 YCbCr format 2023-09-13 14:11:27 +02:00
meta-multi-texture.h Update license access method 2023-08-30 08:48:23 +02:00
meta-plugin.h mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00
meta-remote-access-controller.h Update license access method 2023-08-30 08:48:23 +02:00
meta-selection-source-memory.h Update license access method 2023-08-30 08:48:23 +02:00
meta-selection-source.h Update license access method 2023-08-30 08:48:23 +02:00
meta-selection.h Update license access method 2023-08-30 08:48:23 +02:00
meta-settings.h Update license access method 2023-08-30 08:48:23 +02:00
meta-shadow-factory.h mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00
meta-shaped-texture.h mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00
meta-sound-player.h Update license access method 2023-08-30 08:48:23 +02:00
meta-stage.h Update license access method 2023-08-30 08:48:23 +02:00
meta-startup-notification.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-wayland-client.h Update license access method 2023-08-30 08:48:23 +02:00
meta-wayland-compositor.h Update license access method 2023-08-30 08:48:23 +02:00
meta-window-actor.h mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00
meta-window-group.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-window-shape.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-workspace-manager.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-x11-display.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
meta-x11-errors.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
prefs.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
types.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
util.h cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00
window.h mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00
workspace.h mutter: Completely replace MetaRectangle with MtkRectangle 2023-08-30 16:46:14 +02:00