[PATCH v5 00/44] Color Pipeline API w/ VKMS
Harry Wentland
harry.wentland at amd.com
Thu Oct 3 20:00:45 UTC 2024
On 2024-09-10 16:37, Alex Goins wrote:
> Hi Harry,
>
> Thanks for this. I just want to remind about a few things that would be required
> for NVIDIA hardware, as discussed at the Display Next Hackfest -- fully
> understand that they aren't currently included in this series because they
> aren't required on AMD hardware. Allowing color ops to be non-bypassable is a
> big improvement in this direction.
>
Thanks for your feedback.
> In each of these cases, it should be possible to represent NVIDIA's color
> pipeline using the existing color ops, but it would rely on rejecting invalid
> configurations in atomic check, with no way to communicate the limitations to
> clients.
>
> - Tag IN_FORMATS for a color pipeline (as you have mentioned).
> + Required to communicate that the first NVIDIA pre-blending LUT is
> incompatible with FP16 inputs.
>
I have a sketch in a branch [1] but the work was a bit larger than
I anticipated so I parked it for now.
> - Introduce a single-channel 1DLUT color op, or add the ability to flag
> individual channels of an ordinary 1DLUT as read-only.
> + Required to handle NVIDIA's 1D tone-mapping LUT designed to operate only
> on the intensity component of ICtCp.
>
I'm reluctant to add a new single-channel colorop type without having the
ability to test it. Though I guess VKMS could serve as a stand-in but that
would mean an implementation for it in VKMS.
> - Allow marking color ops as read-only and non-bypassable (halfway there)
> and/or allow marking a color op as requiring a modeset to update.
> + Required to handle specific LUTs that can't have their entries changed
> while in use without visible glitches/tearing, yet must be enabled to
> support tone-mapping and pre-blend scaling.
> + In lieu of the first option, it may be suitable to just use the existing
> 1D curve colorop with only a single curve supported, marked as
> non-bypassable. Allowing modesets as in the second option would allow for
> the possibility of selecting different curves, however.
>
Flags should be easy to add to a colorop because a colorop is just a DRM
object, so we can extend it with new properties. I envision this to be a
FLAGS bitmask property, so the implementation can probably look similar
to the rotation property [2]. And the flags can be REQUIRES_MODESET and
SINGLE_CHANNEL, or something like that.
[1] https://gitlab.freedesktop.org/hwentland/linux/-/tree/amd-color-pipeline-v6-in-formats
[2] https://drmdb.emersion.fr/properties/3435973836/rotation
Harry
> Thanks,
> Alex Goins
> NVIDIA
More information about the amd-gfx
mailing list