[PATCH xf86-video-amdgpu 0/7] Enabling Color Management - Round 3

Michel Dänzer michel at daenzer.net
Wed Jun 6 16:01:48 UTC 2018


Hi Leo,


On 2018-06-01 06:03 PM, sunpeng.li at amd.com wrote:
> From: "Leo (Sunpeng) Li" <sunpeng.li at amd.com>
> 
> This ended up being different enough from v2 to warrant a new patchset. Per
> Michel's suggestions, there have been various optimizations and cleanups.
> Here's what's changed:
> 
> * Cache DRM color management property IDs at pre-init,
>     * instead of querying DRM each time we need to modify color properties.
> 
> * Remove drmmode_update_cm_props().
>     * Update color properties in drmmode_output_get_property() instead.
>     * This also makes old calls to update_cm_props redundant.
> 
> * Get rid of fake CRTCs.
>     * Previously, we were allocating a fake CRTC to configure color props on
>       outputs that don't have a CRTC.
>     * Instead, rr_configure_and_change_cm_property() can be easily modified to
>       accept NULL CRTCs.
> 
> * Drop patches to persist color properties across DPMS events.
>     * Kernel driver should be patched instead:
>       https://lists.freedesktop.org/archives/amd-gfx/2018-May/022744.html
>     * Color props including legacy gamma now persist across crtc dpms.
>     * Non-legacy props now persist across output dpms and hotplug, as long
>       as the same CRTC remains attached to that output.
> 
> And some smaller improvements:
> 
> * Change CTM to be 32-bit format instead of 16-bit.
>     * This requires clients to ensure that each 32-bit element is padded to be
>       long-sized, since libXrandr parses 32-bit format as long-typed.
> 
> * Optimized color management init during CRTC init.
>     * Query DRM once for the list of properties, instead of twice.

Sounds good. I'll be going through the patches in detail from now on,
but I don't know yet when I'll be able to finish the review.


Meanwhile, heads up on two issues I discovered while smoke-testing the
series (which are sort of related, but occur even without this series):


Running Xorg in depth 30[0] results in completely wrong colours
(everything has a red tint) with current kernels. I think this is
because DC now preserves the gamma LUT values, but xf86-video-amdgpu
never sets them at depth 30, so the hardware is still using values for
24-bit RGB.

Can you look into making xf86-video-amdgpu set the LUT values at depth
30 as well? Ideally in a way which doesn't require all patches in this
series, so that it could be backported for a 18.0.2 point release if
necessary. (Similarly for skipping drmmode_cursor_gamma when the kernel
supports the new colour management properties, to fix
https://bugs.freedesktop.org/106578)


Trying to run Xorg in depth 16 or 8[0] results in failure to set any mode:

[    56.138] (EE) AMDGPU(0): failed to set mode: Invalid argument
[    56.138] (WW) AMDGPU(0): Failed to set mode on CRTC 0
[    56.172] (EE) AMDGPU(0): Failed to enable any CRTC

Works fine with amdgpu.dc=0. This has been broken at least since the
4.16 development cycle.


[0] You can change Xorg's colour depth either via -depth on its command
line, or via the xorg.conf screen section:

Section "Screen"
        Identifier "Screen0"
        DefaultDepth 30 # or 16 or 8
EndSection


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the amd-gfx mailing list