diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 99 | 
1 files changed, 96 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h index 32fe05c810c6..1fe21a70ddd0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h @@ -32,7 +32,6 @@  #include <drm/display/drm_dp_helper.h>  #include <drm/drm_crtc.h> -#include <drm/drm_edid.h>  #include <drm/drm_encoder.h>  #include <drm/drm_fixed.h>  #include <drm/drm_framebuffer.h> @@ -51,6 +50,7 @@ struct amdgpu_device;  struct amdgpu_encoder;  struct amdgpu_router;  struct amdgpu_hpd; +struct edid;  #define to_amdgpu_crtc(x) container_of(x, struct amdgpu_crtc, base)  #define to_amdgpu_connector(x) container_of(x, struct amdgpu_connector, base) @@ -324,8 +324,6 @@ struct amdgpu_mode_info {  	struct drm_property *audio_property;  	/* FMT dithering */  	struct drm_property *dither_property; -	/* Adaptive Backlight Modulation (power feature) */ -	struct drm_property *abm_level_property;  	/* hardcoded DFP edid from BIOS */  	struct edid *bios_hardcoded_edid;  	int bios_hardcoded_edid_size; @@ -343,6 +341,97 @@ struct amdgpu_mode_info {  	int			disp_priority;  	const struct amdgpu_display_funcs *funcs;  	const enum drm_plane_type *plane_type; + +	/* Driver-private color mgmt props */ + +	/* @plane_degamma_lut_property: Plane property to set a degamma LUT to +	 * convert encoded values to light linear values before sampling or +	 * blending. +	 */ +	struct drm_property *plane_degamma_lut_property; +	/* @plane_degamma_lut_size_property: Plane property to define the max +	 * size of degamma LUT as supported by the driver (read-only). +	 */ +	struct drm_property *plane_degamma_lut_size_property; +	/** +	 * @plane_degamma_tf_property: Plane pre-defined transfer function to +	 * to go from scanout/encoded values to linear values. +	 */ +	struct drm_property *plane_degamma_tf_property; +	/** +	 * @plane_hdr_mult_property: +	 */ +	struct drm_property *plane_hdr_mult_property; + +	struct drm_property *plane_ctm_property; +	/** +	 * @shaper_lut_property: Plane property to set pre-blending shaper LUT +	 * that converts color content before 3D LUT. If +	 * plane_shaper_tf_property != Identity TF, AMD color module will +	 * combine the user LUT values with pre-defined TF into the LUT +	 * parameters to be programmed. +	 */ +	struct drm_property *plane_shaper_lut_property; +	/** +	 * @shaper_lut_size_property: Plane property for the size of +	 * pre-blending shaper LUT as supported by the driver (read-only). +	 */ +	struct drm_property *plane_shaper_lut_size_property; +	/** +	 * @plane_shaper_tf_property: Plane property to set a predefined +	 * transfer function for pre-blending shaper (before applying 3D LUT) +	 * with or without LUT. There is no shaper ROM, but we can use AMD +	 * color modules to program LUT parameters from predefined TF (or +	 * from a combination of pre-defined TF and the custom 1D LUT). +	 */ +	struct drm_property *plane_shaper_tf_property; +	/** +	 * @plane_lut3d_property: Plane property for color transformation using +	 * a 3D LUT (pre-blending), a three-dimensional array where each +	 * element is an RGB triplet. Each dimension has the size of +	 * lut3d_size. The array contains samples from the approximated +	 * function. On AMD, values between samples are estimated by +	 * tetrahedral interpolation. The array is accessed with three indices, +	 * one for each input dimension (color channel), blue being the +	 * outermost dimension, red the innermost. +	 */ +	struct drm_property *plane_lut3d_property; +	/** +	 * @plane_degamma_lut_size_property: Plane property to define the max +	 * size of 3D LUT as supported by the driver (read-only). The max size +	 * is the max size of one dimension and, therefore, the max number of +	 * entries for 3D LUT array is the 3D LUT size cubed; +	 */ +	struct drm_property *plane_lut3d_size_property; +	/** +	 * @plane_blend_lut_property: Plane property for output gamma before +	 * blending. Userspace set a blend LUT to convert colors after 3D LUT +	 * conversion. It works as a post-3DLUT 1D LUT. With shaper LUT, they +	 * are sandwiching 3D LUT with two 1D LUT. If plane_blend_tf_property +	 * != Identity TF, AMD color module will combine the user LUT values +	 * with pre-defined TF into the LUT parameters to be programmed. +	 */ +	struct drm_property *plane_blend_lut_property; +	/** +	 * @plane_blend_lut_size_property: Plane property to define the max +	 * size of blend LUT as supported by the driver (read-only). +	 */ +	struct drm_property *plane_blend_lut_size_property; +	/** +	 * @plane_blend_tf_property: Plane property to set a predefined +	 * transfer function for pre-blending blend/out_gamma (after applying +	 * 3D LUT) with or without LUT. There is no blend ROM, but we can use +	 * AMD color modules to program LUT parameters from predefined TF (or +	 * from a combination of pre-defined TF and the custom 1D LUT). +	 */ +	struct drm_property *plane_blend_tf_property; +	/* @regamma_tf_property: Transfer function for CRTC regamma +	 * (post-blending). Possible values are defined by `enum +	 * amdgpu_transfer_function`. There is no regamma ROM, but we can use +	 * AMD color modules to program LUT parameters from predefined TF (or +	 * from a combination of pre-defined TF and the custom 1D LUT). +	 */ +	struct drm_property *regamma_tf_property;  };  #define AMDGPU_MAX_BL_LEVEL 0xFF @@ -416,6 +505,10 @@ struct amdgpu_crtc {  	int otg_inst;  	struct drm_pending_vblank_event *event; + +	bool wb_pending; +	bool wb_enabled; +	struct drm_writeback_connector *wb_conn;  };  struct amdgpu_encoder_atom_dig {  |