<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - xf86-video-intel-2.99.912 and newer causing flickering on game."
   href="https://bugs.freedesktop.org/show_bug.cgi?id=81973#c5">Comment # 5</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - xf86-video-intel-2.99.912 and newer causing flickering on game."
   href="https://bugs.freedesktop.org/show_bug.cgi?id=81973">bug 81973</a>
              from <span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span></b>
        <pre>Outside of skipping SwapBuffers if the buffers are stale, there is not much in
there (it's mostly taken up by a rename).

Just to rule out a common issue, first try:

diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 5d1c3da..4d006f8 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -2918,7 +2918,7 @@ sna_dri2_schedule_swap(ClientPtr client, DrawablePtr
draw, DRI2BufferPtr front,

        if (immediate_swap(sna, *target_msc, divisor, draw, crtc,
&current_msc)) {
                bool sync = current_msc < *target_msc;
-               if (!sna_dri2_immediate_blit(sna, info, sync, true))
+               if (!sna_dri2_immediate_blit(sna, info, true, true))
                        sna_dri2_event_free(sna, draw, info);
                *target_msc = current_msc + sync;
                return TRUE;


(which disables adaptive vsync), then try:

diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 5d1c3da..57cedd6 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -2856,7 +2856,7 @@ sna_dri2_schedule_swap(ClientPtr client, DrawablePtr
draw, DRI2BufferPtr front,
                goto skip;

        if (get_private(back)->stale)
-               goto skip;
+               ErrorF("rendering with a stale back buffer, client didn't call
GetBuffers before SwapBuffers\n");

        assert(sna_pixmap_from_drawable(draw)->flush);



(In reply to <a href="show_bug.cgi?id=81973#c4">comment #4</a>)
<span class="quote">> Well, maybe this is a non-problem. I noticed some tearing while running that
> game. So I enabled TearFree and that fixes the random flickering blotches
> with 2.99.914. Yahoo!!! I'm one of the developers of Fatdog64, would there
> be any downside if we enable TearFree by default? I looked at the man page,
> I'm guessing it's off by default because most folks run a compositing window
> manager.</span >

TearFree offers advantages even with a compositing manager since it enables the
single crtc flips (useful for playing games on a single screen in a
multimonitor setup). And it should really present any extra overhead in the
compositing scenario. The only reason I have left it off for now (it is enabled
by default in some powersaving modes) is the worry I have with reserving space
for an extra framebuffer in our early (8xx) chipsets.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>