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ä <[email protected]>
>>>
>>> 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: [email protected]
>>> Cc: Mihail Atanassov <[email protected]>
>>> Cc: Liviu Dudau <[email protected]>
>>> Cc: Brian Starkey <[email protected]>
>>> Cc: Mali DP Maintainers <[email protected]>
>>> Cc: Johnson Lin <[email protected]>
>>> Cc: Uma Shankar <[email protected]>
>>> Cc: Shashank Sharma <[email protected]>
>>> Signed-off-by: Ville Syrjälä <[email protected]>
>>
>> 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 <[email protected]>
>>
>> (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
>> [email protected]
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to