|
@@ -84,8 +84,8 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name,
|
|
|
}
|
|
|
|
|
|
*values_cnt = 3;
|
|
|
- /* Reset crc_skipped flag on dm state */
|
|
|
- crtc_state->crc_first_skipped = false;
|
|
|
+ /* Reset crc_skipped on dm state */
|
|
|
+ crtc_state->crc_skip_count = 0;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -109,11 +109,11 @@ void amdgpu_dm_crtc_handle_crc_irq(struct drm_crtc *crtc)
|
|
|
/*
|
|
|
* Since flipping and crc enablement happen asynchronously, we - more
|
|
|
* often than not - will be returning an 'uncooked' crc on first frame.
|
|
|
- * Probably because hw isn't ready yet. Simply skip the first crc
|
|
|
- * value.
|
|
|
+ * Probably because hw isn't ready yet. For added security, skip the
|
|
|
+ * first two CRC values.
|
|
|
*/
|
|
|
- if (!crtc_state->crc_first_skipped) {
|
|
|
- crtc_state->crc_first_skipped = true;
|
|
|
+ if (crtc_state->crc_skip_count < 2) {
|
|
|
+ crtc_state->crc_skip_count += 1;
|
|
|
return;
|
|
|
}
|
|
|
|