[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