Skip to content

Commit 307dda6

Browse files
swatish2-linuxcmpatel8588
authored andcommitted
UPSTREAM: drm/i915/display: Add func to get gamma bit precision
Each platform supports different gamma modes and each gamma mode has different bit precision. Here bit precision corresponds to number of bits the hw LUT supports. Add func per platform to return bit precision corresponding to gamma mode which will be later used as a parameter in lut comparison function intel_color_lut_equal(). This is done for legacy, ilk, glk and their variant platforms. v6: -Added func intel_color_get_bit_precision() to get bit precision for gamma and degamma lut readout depending upon platform and corresponding to load_luts() [Ankit] -Made patch11 as patch3 [Jani] v7: -Renamed func intel_color_get_bit_precision() to intel_color_get_gamma_bit_precision() -Added separate function/platform for gamma bit precision [Ville] -Corrected checkpatch warnings v8: -Split patch 3 into 4 separate patches v9: -Changed commit message, gave more info [Uma] -Added precision func for icl+ platform v10: -Removed precision func for chv and icl+ platforms [Jani] -Added gamma_enable check once [Jani] Signed-off-by: Swati Sharma <swati2.sharma@intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/1567538578-4489-2-git-send-email-swati2.sharma@intel.com (cherry picked from commit 145450f) Signed-off-by: Chintan Patel <chintan.m.patel@intel.com> BUG=b:146438784, b:146143855, b:145022885, b:144953588 TEST=Boot to graphics on TGL board provided Mesa Iris enabled see: b:141490430 TEST=Run WebGL benchmark with 1k+ fish should not show blue fish TEST=Font should be clear when typing on login screen Change-Id: If5a5a021d2881e77e13309c976efcc01ea9f92b9
1 parent 9460d41 commit 307dda6

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

drivers/gpu/drm/i915/display/intel_color.c

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,6 +1432,66 @@ static int icl_color_check(struct intel_crtc_state *crtc_state)
14321432
return 0;
14331433
}
14341434

1435+
static int i9xx_gamma_precision(const struct intel_crtc_state *crtc_state)
1436+
{
1437+
switch (crtc_state->gamma_mode) {
1438+
case GAMMA_MODE_MODE_8BIT:
1439+
return 8;
1440+
case GAMMA_MODE_MODE_10BIT:
1441+
return 16;
1442+
default:
1443+
MISSING_CASE(crtc_state->gamma_mode);
1444+
return 0;
1445+
}
1446+
}
1447+
1448+
static int ilk_gamma_precision(const struct intel_crtc_state *crtc_state)
1449+
{
1450+
if ((crtc_state->csc_mode & CSC_POSITION_BEFORE_GAMMA) == 0)
1451+
return 0;
1452+
1453+
switch (crtc_state->gamma_mode) {
1454+
case GAMMA_MODE_MODE_8BIT:
1455+
return 8;
1456+
case GAMMA_MODE_MODE_10BIT:
1457+
return 10;
1458+
default:
1459+
MISSING_CASE(crtc_state->gamma_mode);
1460+
return 0;
1461+
}
1462+
}
1463+
1464+
static int glk_gamma_precision(const struct intel_crtc_state *crtc_state)
1465+
{
1466+
switch (crtc_state->gamma_mode) {
1467+
case GAMMA_MODE_MODE_8BIT:
1468+
return 8;
1469+
case GAMMA_MODE_MODE_10BIT:
1470+
return 10;
1471+
default:
1472+
MISSING_CASE(crtc_state->gamma_mode);
1473+
return 0;
1474+
}
1475+
}
1476+
1477+
int intel_color_get_gamma_bit_precision(const struct intel_crtc_state *crtc_state)
1478+
{
1479+
struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
1480+
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
1481+
1482+
if (!crtc_state->gamma_enable)
1483+
return 0;
1484+
1485+
if (HAS_GMCH(dev_priv) && !IS_CHERRYVIEW(dev_priv))
1486+
return i9xx_gamma_precision(crtc_state);
1487+
else if (IS_CANNONLAKE(dev_priv) || IS_GEMINILAKE(dev_priv))
1488+
return glk_gamma_precision(crtc_state);
1489+
else if (IS_IRONLAKE(dev_priv))
1490+
return ilk_gamma_precision(crtc_state);
1491+
1492+
return 0;
1493+
}
1494+
14351495
void intel_color_init(struct intel_crtc *crtc)
14361496
{
14371497
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);

drivers/gpu/drm/i915/display/intel_color.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ int intel_color_check(struct intel_crtc_state *crtc_state);
1414
void intel_color_commit(const struct intel_crtc_state *crtc_state);
1515
void intel_color_load_luts(const struct intel_crtc_state *crtc_state);
1616
void intel_color_get_config(struct intel_crtc_state *crtc_state);
17+
int intel_color_get_gamma_bit_precision(const struct intel_crtc_state *crtc_state);
1718

1819
#endif /* __INTEL_COLOR_H__ */

0 commit comments

Comments
 (0)