mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-05 22:12:16 +00:00
drm/amd/display: Refactor max color lut entries into a macro.
Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com> Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
e277adc5a0
commit
236d0e4f6f
3 changed files with 10 additions and 8 deletions
|
@ -3202,8 +3202,9 @@ static int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
|
||||||
acrtc->base.enabled = false;
|
acrtc->base.enabled = false;
|
||||||
|
|
||||||
dm->adev->mode_info.crtcs[crtc_index] = acrtc;
|
dm->adev->mode_info.crtcs[crtc_index] = acrtc;
|
||||||
drm_crtc_enable_color_mgmt(&acrtc->base, 256, true, 256);
|
drm_crtc_enable_color_mgmt(&acrtc->base, MAX_COLOR_LUT_ENTRIES,
|
||||||
drm_mode_crtc_set_gamma_size(&acrtc->base, 256);
|
true, MAX_COLOR_LUT_ENTRIES);
|
||||||
|
drm_mode_crtc_set_gamma_size(&acrtc->base, MAX_COLOR_LUT_ENTRIES);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
@ -268,6 +268,8 @@ void amdgpu_dm_crtc_handle_crc_irq(struct drm_crtc *crtc);
|
||||||
#define amdgpu_dm_crtc_handle_crc_irq(x)
|
#define amdgpu_dm_crtc_handle_crc_irq(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define MAX_COLOR_LUT_ENTRIES 256
|
||||||
|
|
||||||
void amdgpu_dm_init_color_mod(void);
|
void amdgpu_dm_init_color_mod(void);
|
||||||
int amdgpu_dm_set_degamma_lut(struct drm_crtc_state *crtc_state,
|
int amdgpu_dm_set_degamma_lut(struct drm_crtc_state *crtc_state,
|
||||||
struct dc_plane_state *dc_plane_state);
|
struct dc_plane_state *dc_plane_state);
|
||||||
|
|
|
@ -39,14 +39,13 @@ void amdgpu_dm_init_color_mod(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define MAX_LUT_ENTRIES 256
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return true if the given lut is a linear mapping of values, i.e. it acts
|
* Return true if the given lut is a linear mapping of values, i.e. it acts
|
||||||
* like a bypass LUT.
|
* like a bypass LUT.
|
||||||
*
|
*
|
||||||
* It is considered linear if the lut represents:
|
* It is considered linear if the lut represents:
|
||||||
* f(a) = (0xFF00/MAX_LUT_ENTRIES-1)a; for integer a in [0, MAX_LUT_ENTRIES)
|
* f(a) = (0xFF00/MAX_COLOR_LUT_ENTRIES-1)a; for integer a in
|
||||||
|
* [0, MAX_COLOR_LUT_ENTRIES)
|
||||||
*/
|
*/
|
||||||
static bool __is_lut_linear(struct drm_color_lut *lut)
|
static bool __is_lut_linear(struct drm_color_lut *lut)
|
||||||
{
|
{
|
||||||
|
@ -55,12 +54,12 @@ static bool __is_lut_linear(struct drm_color_lut *lut)
|
||||||
uint32_t expected;
|
uint32_t expected;
|
||||||
int delta;
|
int delta;
|
||||||
|
|
||||||
for (i = 0; i < MAX_LUT_ENTRIES; i++) {
|
for (i = 0; i < MAX_COLOR_LUT_ENTRIES; i++) {
|
||||||
/* All color values should equal */
|
/* All color values should equal */
|
||||||
if ((lut[i].red != lut[i].green) || (lut[i].green != lut[i].blue))
|
if ((lut[i].red != lut[i].green) || (lut[i].green != lut[i].blue))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
expected = i * max_os / (MAX_LUT_ENTRIES-1);
|
expected = i * max_os / (MAX_COLOR_LUT_ENTRIES-1);
|
||||||
|
|
||||||
/* Allow a +/-1 error. */
|
/* Allow a +/-1 error. */
|
||||||
delta = lut[i].red - expected;
|
delta = lut[i].red - expected;
|
||||||
|
@ -113,7 +112,7 @@ int amdgpu_dm_set_regamma_lut(struct dm_crtc_state *crtc)
|
||||||
if (!gamma)
|
if (!gamma)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
gamma->num_entries = MAX_LUT_ENTRIES;
|
gamma->num_entries = MAX_COLOR_LUT_ENTRIES;
|
||||||
gamma->type = GAMMA_RGB_256;
|
gamma->type = GAMMA_RGB_256;
|
||||||
|
|
||||||
/* Truncate, and store in dc_gamma for output tf calculation */
|
/* Truncate, and store in dc_gamma for output tf calculation */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue