root/include/drm/drm_color_mgmt.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. drm_color_lut_size

   1 /*
   2  * Copyright (c) 2016 Intel Corporation
   3  *
   4  * Permission to use, copy, modify, distribute, and sell this software and its
   5  * documentation for any purpose is hereby granted without fee, provided that
   6  * the above copyright notice appear in all copies and that both that copyright
   7  * notice and this permission notice appear in supporting documentation, and
   8  * that the name of the copyright holders not be used in advertising or
   9  * publicity pertaining to distribution of the software without specific,
  10  * written prior permission.  The copyright holders make no representations
  11  * about the suitability of this software for any purpose.  It is provided "as
  12  * is" without express or implied warranty.
  13  *
  14  * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  15  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  16  * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  17  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  18  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  19  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  20  * OF THIS SOFTWARE.
  21  */
  22 
  23 #ifndef __DRM_COLOR_MGMT_H__
  24 #define __DRM_COLOR_MGMT_H__
  25 
  26 #include <linux/ctype.h>
  27 #include <drm/drm_property.h>
  28 
  29 struct drm_crtc;
  30 struct drm_plane;
  31 
  32 uint32_t drm_color_lut_extract(uint32_t user_input, uint32_t bit_precision);
  33 
  34 void drm_crtc_enable_color_mgmt(struct drm_crtc *crtc,
  35                                 uint degamma_lut_size,
  36                                 bool has_ctm,
  37                                 uint gamma_lut_size);
  38 
  39 int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
  40                                  int gamma_size);
  41 
  42 /**
  43  * drm_color_lut_size - calculate the number of entries in the LUT
  44  * @blob: blob containing the LUT
  45  *
  46  * Returns:
  47  * The number of entries in the color LUT stored in @blob.
  48  */
  49 static inline int drm_color_lut_size(const struct drm_property_blob *blob)
  50 {
  51         return blob->length / sizeof(struct drm_color_lut);
  52 }
  53 
  54 enum drm_color_encoding {
  55         DRM_COLOR_YCBCR_BT601,
  56         DRM_COLOR_YCBCR_BT709,
  57         DRM_COLOR_YCBCR_BT2020,
  58         DRM_COLOR_ENCODING_MAX,
  59 };
  60 
  61 enum drm_color_range {
  62         DRM_COLOR_YCBCR_LIMITED_RANGE,
  63         DRM_COLOR_YCBCR_FULL_RANGE,
  64         DRM_COLOR_RANGE_MAX,
  65 };
  66 
  67 int drm_plane_create_color_properties(struct drm_plane *plane,
  68                                       u32 supported_encodings,
  69                                       u32 supported_ranges,
  70                                       enum drm_color_encoding default_encoding,
  71                                       enum drm_color_range default_range);
  72 
  73 /**
  74  * enum drm_color_lut_tests - hw-specific LUT tests to perform
  75  *
  76  * The drm_color_lut_check() function takes a bitmask of the values here to
  77  * determine which tests to apply to a userspace-provided LUT.
  78  */
  79 enum drm_color_lut_tests {
  80         /**
  81          * @DRM_COLOR_LUT_EQUAL_CHANNELS:
  82          *
  83          * Checks whether the entries of a LUT all have equal values for the
  84          * red, green, and blue channels.  Intended for hardware that only
  85          * accepts a single value per LUT entry and assumes that value applies
  86          * to all three color components.
  87          */
  88         DRM_COLOR_LUT_EQUAL_CHANNELS = BIT(0),
  89 
  90         /**
  91          * @DRM_COLOR_LUT_NON_DECREASING:
  92          *
  93          * Checks whether the entries of a LUT are always flat or increasing
  94          * (never decreasing).
  95          */
  96         DRM_COLOR_LUT_NON_DECREASING = BIT(1),
  97 };
  98 
  99 int drm_color_lut_check(const struct drm_property_blob *lut, u32 tests);
 100 #endif

/* [<][>][^][v][top][bottom][index][help] */