mirror of
https://github.com/torvalds/linux.git
synced 2026-05-02 13:32:40 -04:00
drm/amd/display: add driver-specific property for plane degamma LUT
Hook up driver-specific atomic operations for managing AMD color properties. Create AMD driver-specific color management properties and attach them according to HW capabilities defined by `struct dc_color_caps`. First add plane degamma LUT properties that means user-blob and its size. We will add more plane color properties in the next patches. In addition, we define AMD_PRIVATE_COLOR to guard these driver-specific plane properties. Plane degamma can be used to linearize input space for arithmetical operations that are more accurate when applied in linear color. v2: - update degamma LUT prop description - move private color operations from amdgpu_display to amdgpu_dm_color v5: - get degamma blob correctly (Joshua) Reviewed-by: Harry Wentland <harry.wentland@amd.com> Co-developed-by: Joshua Ashton <joshua@froggi.es> Signed-off-by: Joshua Ashton <joshua@froggi.es> Signed-off-by: Melissa Wen <mwen@igalia.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
24013b9301
commit
9342a9ae54
@@ -727,6 +727,16 @@ extern const struct amdgpu_ip_block_version dm_ip_block;
|
||||
struct dm_plane_state {
|
||||
struct drm_plane_state base;
|
||||
struct dc_plane_state *dc_state;
|
||||
|
||||
/* Plane color mgmt */
|
||||
/**
|
||||
* @degamma_lut:
|
||||
*
|
||||
* 1D LUT for mapping framebuffer/plane pixel data before sampling or
|
||||
* blending operations. It's usually applied to linearize input space.
|
||||
* The blob (if not NULL) is an array of &struct drm_color_lut.
|
||||
*/
|
||||
struct drm_property_blob *degamma_lut;
|
||||
};
|
||||
|
||||
struct dm_crtc_state {
|
||||
@@ -817,6 +827,7 @@ void amdgpu_dm_trigger_timing_sync(struct drm_device *dev);
|
||||
#define MAX_COLOR_LEGACY_LUT_ENTRIES 256
|
||||
|
||||
void amdgpu_dm_init_color_mod(void);
|
||||
int amdgpu_dm_create_color_properties(struct amdgpu_device *adev);
|
||||
int amdgpu_dm_verify_lut_sizes(const struct drm_crtc_state *crtc_state);
|
||||
int amdgpu_dm_update_crtc_color_mgmt(struct dm_crtc_state *crtc);
|
||||
int amdgpu_dm_update_plane_color_mgmt(struct dm_crtc_state *crtc,
|
||||
|
||||
Reference in New Issue
Block a user