This type is used to support a 3x4 matrix in colorops. A 3x4 matrix uses the last column as a "bias" column. Some HW exposes support for 3x4. The calculation looks like: out matrix in |R| |0 1 2 3 | | R | |G| = |4 5 6 7 | x | G | |B| |8 9 10 11| | B | |1.0| This is also the first colorop where we need a blob property to program the property. For that we'll introduce a new DATA property that can be used by all colorop TYPEs requiring a blob. The way a DATA blob is read depends on the TYPE of the colorop. We only create the DATA property for property types that need it.
Showing the changes to include/uapi (2 of 6 files). Show all
Unified · Split
| @@ -1656,15 +1656,6 @@ struct drm_amdgpu_info_uq_metadata { · 1655 unmodified lines | |||
| 1656 | #define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */ | 1656 | #define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */ |
| 1657 | #define AMDGPU_FAMILY_GC_12_0_0 152 /* GC 12.0.0 */ | 1657 | #define AMDGPU_FAMILY_GC_12_0_0 152 /* GC 12.0.0 */ |
| 1658 | 1658 | ||
| 1659 | /* FIXME wrong namespace! */ | ||
| 1660 | struct drm_color_ctm_3x4 { | ||
| 1661 | /* | ||
| 1662 | * Conversion matrix with 3x4 dimensions in S31.32 sign-magnitude | ||
| 1663 | * (not two's complement!) format. | ||
| 1664 | */ | ||
| 1665 | __u64 matrix[12]; | ||
| 1666 | }; | ||
| 1667 | |||
| 1668 | #if defined(__cplusplus) | 1659 | #if defined(__cplusplus) |
| 1669 | } | 1660 | } |
| 1670 | #endif | 1661 | #endif |
| @@ -847,6 +847,20 @@ struct drm_color_ctm { · 846 unmodified lines | |||
| 847 | __u64 matrix[9]; | 847 | __u64 matrix[9]; |
| 848 | }; | 848 | }; |
| 849 | 849 | ||
| 850 | struct drm_color_ctm_3x4 { | ||
| 851 | /* | ||
| 852 | * Conversion matrix with 3x4 dimensions in S31.32 sign-magnitude | ||
| 853 | * (not two's complement!) format. | ||
| 854 | * | ||
| 855 | * out matrix in | ||
| 856 | * |R| |0 1 2 3 | | R | | ||
| 857 | * |G| = |4 5 6 7 | x | G | | ||
| 858 | * |B| |8 9 10 11| | B | | ||
| 859 | * |1.0| | ||
| 860 | */ | ||
| 861 | __u64 matrix[12]; | ||
| 862 | }; | ||
| 863 | |||
| 850 | struct drm_color_lut { | 864 | struct drm_color_lut { |
| 851 | /* | 865 | /* |
| 852 | * Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and | 866 | * Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and |
| @@ -874,7 +888,23 @@ enum drm_colorop_type { · 21 unmodified lines | |||
| 874 | * A 1D curve that is being applied to all color channels. The | 888 | * A 1D curve that is being applied to all color channels. The |
| 875 | * curve is specified via the CURVE_1D_TYPE colorop property. | 889 | * curve is specified via the CURVE_1D_TYPE colorop property. |
| 876 | */ | 890 | */ |
| 877 | DRM_COLOROP_1D_CURVE | 891 | DRM_COLOROP_1D_CURVE, |
| 892 | |||
| 893 | /** | ||
| 894 | * @DRM_COLOROP_CTM_3X4: | ||
| 895 | * | ||
| 896 | * enum string "3x4 Matrix" | ||
| 897 | * | ||
| 898 | * A 3x4 matrix. Its values are specified via the | ||
| 899 | * &drm_color_ctm_3x4 struct provided via the DATA property. | ||
| 900 | * | ||
| 901 | * The DATA blob is a float[12]: | ||
| 902 | * out matrix in | ||
| 903 | * | R | | 0 1 2 3 | | R | | ||
| 904 | * | G | = | 4 5 6 7 | x | G | | ||
| 905 | * | B | | 8 9 10 12 | | B | | ||
| 906 | */ | ||
| 907 | DRM_COLOROP_CTM_3X4, | ||
| 878 | }; | 908 | }; |
| 879 | 909 | ||
| 880 | /** | 910 | /** |