The VGA output was showing some flashing pixels when TV was enabled
and the pixel clock was high enough.
---
 drivers/gpu/drm/nouveau/nouveau_calc.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_calc.c 
b/drivers/gpu/drm/nouveau/nouveau_calc.c
index e2b78d2..3f80db8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_calc.c
+++ b/drivers/gpu/drm/nouveau/nouveau_calc.c
@@ -174,7 +174,7 @@ nv10CalcArbitration(struct nv_fifo_info *fifo, struct 
nv_sim_state *arb)
        int us_m, us_m_min, us_n, us_p, crtc_drain_rate;
        int vus_m;
        int vpm_us, us_video, cpm_us, us_crt, clwm;
-       int clwm_rnd_down;
+       int clwm_rnd_down, min_clwm;
        int m2us, us_pipe_min, p1clk, p2;
        int min_mclk_extra;
        int us_min_mclk_extra;
@@ -323,8 +323,12 @@ nv10CalcArbitration(struct nv_fifo_info *fifo, struct 
nv_sim_state *arb)
                                min_mclk_extra--;
                }
 
-               if (clwm < (1024 - cbs + 8))
-                       clwm = 1024 - cbs + 8;
+               /* This correction works around a slight snow effect
+                * when the TV and VGA outputs are enabled simultaneously. */
+               min_clwm = 1024 - cbs + 128 * pclk_freq / 100000;
+               if (clwm < min_clwm)
+                       clwm = min_clwm;
+
                /*  printf("CRT LWM: prog: 0x%x, bs: 256\n", clwm); */
                fifo->graphics_lwm = clwm;
                fifo->graphics_burst_size = cbs;
-- 
1.6.3.3

_______________________________________________
Nouveau mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to