mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-24 01:54:03 -04:00
Hardware understands the regamma LUT as a piecewise linear function, with points spaced exponentially along the range. We previously programmed the LUT for range [2^-10, 2^0). This causes (normalized) color values of 1 (=2^0) to miss the programmed LUT, and fall onto the end region. For DCE, the end region is extrapolated using a single (base, slope) pair, using the max y-value from the last point in the curve as base. This presents a problem, since this value affects all three color channels. Scaling down the intensity of say - the blue regamma curve - will not affect it's end region. This is especially noticiable when using RedShift. It scales down the blue and green channels, but leaves full-intensity colors unshifted. Therefore, extend the range to cover [2^-10, 2^1) by programming another hardware segment, containing only one point. That way, we won't be hitting the end region. Note that things are a bit different for DCN, since the end region can be set per-channel. Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com> Reviewed-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
||
---|---|---|
.. | ||
basics | ||
bios | ||
calcs | ||
core | ||
dce | ||
dce80 | ||
dce100 | ||
dce110 | ||
dce112 | ||
dce120 | ||
dcn10 | ||
dml | ||
gpio | ||
i2caux | ||
inc | ||
irq | ||
virtual | ||
dc.h | ||
dc_bios_types.h | ||
dc_ddc_types.h | ||
dc_dp_types.h | ||
dc_helper.c | ||
dc_hw_types.h | ||
dc_link.h | ||
dc_stream.h | ||
dc_types.h | ||
dm_helpers.h | ||
dm_pp_smu.h | ||
dm_services.h | ||
dm_services_types.h | ||
irq_types.h | ||
Makefile | ||
os_types.h |