[PATCH 1/4] drm/uapi: The ctm matrix uses sign-magnitude representation

Harry Wentland harry.wentland at amd.com
Tue Mar 6 15:41:28 UTC 2018


On 2018-03-06 02:51 AM, Daniel Vetter wrote:
> On Fri, Feb 23, 2018 at 11:26:41AM -0500, Harry Wentland wrote:
>> On 2018-02-22 04:42 PM, Ville Syrjala wrote:
>>> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>>>
>>> The documentation for the ctm matrix suggests a two's complement
>>> format, but at least the i915 implementation is using sign-magnitude
>>> instead. And looks like malidp is doing the same. Change the docs
>>> to match the current implementation, and change the type from __s64
>>> to __u64 to drive the point home.
>>>
>>> Cc: dri-devel at lists.freedesktop.org
>>> Cc: Mihail Atanassov <mihail.atanassov at arm.com>
>>> Cc: Liviu Dudau <liviu.dudau at arm.com>
>>> Cc: Brian Starkey <brian.starkey at arm.com>
>>> Cc: Mali DP Maintainers <malidp at foss.arm.com>
>>> Cc: Johnson Lin <johnson.lin at intel.com>
>>> Cc: Uma Shankar <uma.shankar at intel.com>
>>> Cc: Shashank Sharma <shashank.sharma at intel.com>
>>> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
>>
>> Good clarification. Our new CTM implementation (1) actually assumed
>> two's complement but nobody's using it yet, so we'll patch it to
>> convert.
> 
> Another reason to start looking into igt and the tests there? That would
> have caught this too ...

There need to be new IGT tests that can actually test for signed-magnitude vs two's compliment differences, which would have to be tests of the CTM in some non-RGB colorspace where negative numbers are actually meaningful. The existing tests will test a negative matrix but in RGB colorspace any negative number will simply map to zero/black, no matter the magnitude.

I'll put such a test on our team's backlog but not sure when we'll actually get to it. We'd have to check if we could have a meaningful test for this with the current capabilities of DC.

Harry

> -Daniel
> 
>>
>> Reviewed-by: Harry Wentland <harry.wentland at amd.com>
>>
>> (1) https://patchwork.freedesktop.org/patch/204005/
>>
>> Harry
>>
>>> ---
>>>  include/uapi/drm/drm_mode.h | 7 +++++--
>>>  1 file changed, 5 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
>>> index 2c575794fb52..b5d7d9e0eff5 100644
>>> --- a/include/uapi/drm/drm_mode.h
>>> +++ b/include/uapi/drm/drm_mode.h
>>> @@ -598,8 +598,11 @@ struct drm_mode_crtc_lut {
>>>  };
>>>  
>>>  struct drm_color_ctm {
>>> -	/* Conversion matrix in S31.32 format. */
>>> -	__s64 matrix[9];
>>> +	/*
>>> +	 * Conversion matrix in S31.32 sign-magnitude
>>> +	 * (not two's complement!) format.
>>> +	 */
>>> +	__u64 matrix[9];
>>>  };
>>>  
>>>  struct drm_color_lut {
>>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 


More information about the dri-devel mailing list