It is to be used to enable HDR by allowing userpace to create and pass 3D LUTs to kernel and hardware. new drm_colorop_type: DRM_COLOROP_3D_LUT.
Showing the changes to include/uapi/drm (1 of 5 files). Show all
Unified · Split
| @@ -942,6 +942,40 @@ enum drm_colorop_type { · 941 unmodified lines | ||
| 942 | 942 | * property. |
| 943 | 943 | */ |
| 944 | 944 | DRM_COLOROP_MULTIPLIER, |
| 945 | + | |
| 946 | + /** | |
| 947 | + * @DRM_COLOROP_3D_LUT: | |
| 948 | + * | |
| 949 | + * enum string "3D LUT" | |
| 950 | + * | |
| 951 | + * A 3D LUT of &drm_color_lut32 entries, | |
| 952 | + * packed into a blob via the DATA property. The driver's expected | |
| 953 | + * LUT size is advertised via the SIZE property, i.e., a 3D LUT with | |
| 954 | + * 17x17x17 entries will have SIZE set to 17. | |
| 955 | + * | |
| 956 | + * The DATA blob is a 3D array of struct drm_color_lut32 with dimension | |
| 957 | + * length of "size". | |
| 958 | + * The LUT elements are traversed like so: | |
| 959 | + * | |
| 960 | + * for B in range 0..n | |
| 961 | + * for G in range 0..n | |
| 962 | + * for R in range 0..n | |
| 963 | + * index = R + n * (G + n * B) | |
| 964 | + * color = lut3d[index] | |
| 965 | + */ | |
| 966 | + DRM_COLOROP_3D_LUT, | |
| 967 | +}; | |
| 968 | + | |
| 969 | +/** | |
| 970 | + * enum drm_colorop_lut3d_interpolation_type - type of 3DLUT interpolation | |
| 971 | + */ | |
| 972 | +enum drm_colorop_lut3d_interpolation_type { | |
| 973 | + /** | |
| 974 | + * @DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL: | |
| 975 | + * | |
| 976 | + * Tetrahedral 3DLUT interpolation | |
| 977 | + */ | |
| 978 | + DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL, | |
| 945 | 979 | }; |
| 946 | 980 | |
| 947 | 981 | /** |