On Fri, Sep 5, 2014 at 12:58 AM, Roy Spliet <[email protected]> wrote: > Solves blinking on reclocking memory. The value set is an underestimate, but > with non-reduced vblanking this should give us plenty of time Hey Roy,
I've merged all (squashed the kepler change into the commit where it's needed too) except this patch, which needs to be rebased on top of 3.17-rc. There's one minor nitpick inline too. Please also try and watch the wrapping of commit messages, I added newlines to make it easier to read them in git-log output. Thanks, Ben. > > Signed-off-by: Roy Spliet <[email protected]> > --- > drivers/gpu/drm/nouveau/nv50_display.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nv50_display.c > b/drivers/gpu/drm/nouveau/nv50_display.c > index 4c534b7..cfa7ecf 100644 > --- a/drivers/gpu/drm/nouveau/nv50_display.c > +++ b/drivers/gpu/drm/nouveau/nv50_display.c > @@ -1070,7 +1070,7 @@ nv50_crtc_mode_set(struct drm_crtc *crtc, struct > drm_display_mode *umode, > u32 vscan = (mode->flags & DRM_MODE_FLAG_DBLSCAN) ? 2 : 1; > u32 hactive, hsynce, hbackp, hfrontp, hblanke, hblanks; > u32 vactive, vsynce, vbackp, vfrontp, vblanke, vblanks; > - u32 vblan2e = 0, vblan2s = 1; > + u32 vblan2e = 0, vblan2s = 1, vblankus; > u32 *push; > int ret; > > @@ -1087,6 +1087,7 @@ nv50_crtc_mode_set(struct drm_crtc *crtc, struct > drm_display_mode *umode, > vblanke = vsynce + vbackp; > vfrontp = (mode->vsync_start - mode->vdisplay) * vscan / ilace; > vblanks = vactive - vfrontp - 1; > + > if (mode->flags & DRM_MODE_FLAG_INTERLACE) { > vblan2e = vactive + vsynce + vbackp; > vblan2s = vblan2e + (mode->vdisplay * vscan / ilace); > @@ -1100,17 +1101,22 @@ nv50_crtc_mode_set(struct drm_crtc *crtc, struct > drm_display_mode *umode, > push = evo_wait(mast, 64); > if (push) { > if (nv50_vers(mast) < NVD0_DISP_MAST_CLASS) { > + /* XXX: Safe underestimate, even "0" works */ > + vblankus = (vactive - mode->vdisplay - 2) * hactive; > + vblankus *= 1000; > + vblankus /= mode->clock; When you rebase, can you move this calculation into the common code please :) > + > evo_mthd(push, 0x0804 + (nv_crtc->index * 0x400), 2); > evo_data(push, 0x00800000 | mode->clock); > evo_data(push, (ilace == 2) ? 2 : 0); > - evo_mthd(push, 0x0810 + (nv_crtc->index * 0x400), 6); > + evo_mthd(push, 0x0810 + (nv_crtc->index * 0x400), 8); > evo_data(push, 0x00000000); > evo_data(push, (vactive << 16) | hactive); > evo_data(push, ( vsynce << 16) | hsynce); > evo_data(push, (vblanke << 16) | hblanke); > evo_data(push, (vblanks << 16) | hblanks); > evo_data(push, (vblan2e << 16) | vblan2s); > - evo_mthd(push, 0x082c + (nv_crtc->index * 0x400), 1); > + evo_data(push, vblankus); > evo_data(push, 0x00000000); > evo_mthd(push, 0x0900 + (nv_crtc->index * 0x400), 2); > evo_data(push, 0x00000311); > -- > 1.9.3 > > > _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
