Op 08-07-15 om 11:09 schreef Daniel Vetter: > On Wed, Jul 08, 2015 at 10:38:33AM +0200, Maarten Lankhorst wrote: >> Op 07-07-15 om 12:11 schreef Daniel Vetter: >>> On Tue, Jul 07, 2015 at 09:08:17AM +0200, Maarten Lankhorst wrote: >>>> @@ -12392,27 +12379,124 @@ static bool intel_fuzzy_clock_check(int clock1, >>>> int clock2) >>>> base.head) \ >>>> if (mask & (1 <<(intel_crtc)->pipe)) >>>> >>>> + >>>> +static bool >>>> +intel_compare_m_n(unsigned int m, unsigned int n, >>>> + unsigned int m2, unsigned int n2) >>>> +{ >>>> + if (m == m2 && n == n2) >>>> + return true; >>>> + >>>> + if (!m || !n || !m2 || !n2) >>>> + return false; >>>> + >>>> + if (m > m2) { >>>> + while (m > m2) { >>> I think we need to make sure we don't reduce precision by eating low bits, >>> i.e. >>> while (m > m2 && !(m & 1) && !(n & 1)) { >> Could be useful, lets hope everyone rounds in the same way. :) >>>> + m >>= 1; >>>> + n >>= 1; >>>> + } >>>> + } else if (m < m2) { >>>> + while (m < m2) { >>>> + m2 >>= 1; >>>> + n2 >>= 1; >>>> + } >>>> + } >>>> + >>>> + return m == m2 && n == n2; >>>> +} >>>> + >>>> +static bool >>>> +intel_compare_link_m_n(const struct intel_link_m_n *m_n, >>>> + const struct intel_link_m_n *m2_n2) >>> I think these need to take adjust as an agurment and check for exact match >>> (not just matching ratio), like before. >> I just implemented it, then remembered why I didn't. >> >> It will cause a failure in intel_modeset_check_state. > That shouldn't happen. I guess the bug is that adjust doesn't live up to > it's name and doesn't copy the current value over to the new config if > they're compatible? It's a compare function, I didn't want to do adjustments in it and leaving it as a multiple is harmless. In case of gen >= 8 it might even fix itself through intel_dp_set_drrs_state.
~Maarten _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx