Skip to content

Commit 3fd4b75

Browse files
Michel Dänzeralexdeucher
authored andcommitted
drm/amdgpu: Set MASTER_UPDATE_MODE to 0 again
With the previous change, it's safe to let page flips take effect anytime during a vertical blank period. This can avoid delaying a flip by a frame in some cases where we get to amdgpu_flip_work_func -> adev->mode_info.funcs->page_flip during a vertical blank period. Acked-by: Christian König <christian.koenig@amd.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent 325cbba commit 3fd4b75

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

drivers/gpu/drm/amd/amdgpu/dce_v10_0.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -646,8 +646,8 @@ static void dce_v10_0_resume_mc_access(struct amdgpu_device *adev,
646646

647647
if (save->crtc_enabled[i]) {
648648
tmp = RREG32(mmMASTER_UPDATE_MODE + crtc_offsets[i]);
649-
if (REG_GET_FIELD(tmp, MASTER_UPDATE_MODE, MASTER_UPDATE_MODE) != 3) {
650-
tmp = REG_SET_FIELD(tmp, MASTER_UPDATE_MODE, MASTER_UPDATE_MODE, 3);
649+
if (REG_GET_FIELD(tmp, MASTER_UPDATE_MODE, MASTER_UPDATE_MODE) != 0) {
650+
tmp = REG_SET_FIELD(tmp, MASTER_UPDATE_MODE, MASTER_UPDATE_MODE, 0);
651651
WREG32(mmMASTER_UPDATE_MODE + crtc_offsets[i], tmp);
652652
}
653653
tmp = RREG32(mmGRPH_UPDATE + crtc_offsets[i]);
@@ -2314,8 +2314,8 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc,
23142314
WREG32(mmVIEWPORT_SIZE + amdgpu_crtc->crtc_offset,
23152315
(viewport_w << 16) | viewport_h);
23162316

2317-
/* set pageflip to happen only at start of vblank interval (front porch) */
2318-
WREG32(mmMASTER_UPDATE_MODE + amdgpu_crtc->crtc_offset, 3);
2317+
/* set pageflip to happen anywhere in vblank interval */
2318+
WREG32(mmMASTER_UPDATE_MODE + amdgpu_crtc->crtc_offset, 0);
23192319

23202320
if (!atomic && fb && fb != crtc->primary->fb) {
23212321
amdgpu_fb = to_amdgpu_framebuffer(fb);

drivers/gpu/drm/amd/amdgpu/dce_v11_0.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2297,8 +2297,8 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc,
22972297
WREG32(mmVIEWPORT_SIZE + amdgpu_crtc->crtc_offset,
22982298
(viewport_w << 16) | viewport_h);
22992299

2300-
/* set pageflip to happen only at start of vblank interval (front porch) */
2301-
WREG32(mmCRTC_MASTER_UPDATE_MODE + amdgpu_crtc->crtc_offset, 3);
2300+
/* set pageflip to happen anywhere in vblank interval */
2301+
WREG32(mmCRTC_MASTER_UPDATE_MODE + amdgpu_crtc->crtc_offset, 0);
23022302

23032303
if (!atomic && fb && fb != crtc->primary->fb) {
23042304
amdgpu_fb = to_amdgpu_framebuffer(fb);

drivers/gpu/drm/amd/amdgpu/dce_v8_0.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2183,8 +2183,8 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc,
21832183
WREG32(mmVIEWPORT_SIZE + amdgpu_crtc->crtc_offset,
21842184
(viewport_w << 16) | viewport_h);
21852185

2186-
/* set pageflip to happen only at start of vblank interval (front porch) */
2187-
WREG32(mmMASTER_UPDATE_MODE + amdgpu_crtc->crtc_offset, 3);
2186+
/* set pageflip to happen anywhere in vblank interval */
2187+
WREG32(mmMASTER_UPDATE_MODE + amdgpu_crtc->crtc_offset, 0);
21882188

21892189
if (!atomic && fb && fb != crtc->primary->fb) {
21902190
amdgpu_fb = to_amdgpu_framebuffer(fb);

0 commit comments

Comments
 (0)