Bug 28072 - Regression: i965: neverball is unplayably slow with mesa 7.8 and xserver 1.8.0
Summary: Regression: i965: neverball is unplayably slow with mesa 7.8 and xserver 1.8.0
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Eric Anholt
QA Contact:
Keywords: NEEDINFO
Depends on:
Reported: 2010-05-11 18:53 UTC by Nick Bowler
Modified: 2011-01-31 13:04 UTC (History)
0 users

See Also:
i915 platform:
i915 features:

Complete build log. (198.89 KB, text/plain)
2010-05-13 16:22 UTC, Nick Bowler
Throttle after doing copyregion/swapbuffers round trip (6.01 KB, patch)
2010-05-18 20:03 UTC, Kristian Høgsberg
Details | Splinter Review

Description Nick Bowler 2010-05-11 18:53:17 UTC
I ran into this a while ago while testing for bug 27277.  The symptoms are very
similar to that bug, but I'm pretty sure it's actually a different problem, so
I'm filing a new bug.

With mesa 7.8.1 and xserver 1.8.0, neverball is extremely jerky to the point of
being unplayable.  Both are required to be recent: the game works perfectly
with server 1.7.7 and/or mesa 7.7.1.  Only larger window sizes are affected
(i.e. 1280x1024), small sizes (i.e. 640x480) remain smooth.

The issue still exists in mesa git master.

I'm using a ThinkPad T500 with a GM45, with xf86-video-intel-2.11.0.  Bisection
was inconclusive due to compile errors near the end, but here are the results:

There are only 'skip'ped commits left to test.
The first bad commit could be any of:
We cannot bisect more!

git bisect start
# bad: [edbc302ad678e1a4a8803ba0e827a13dd27105d2] mesa/st+tgsi: Provide a free callback to match with ureg_get_tokens().
git bisect bad edbc302ad678e1a4a8803ba0e827a13dd27105d2
# good: [0c88e340499c961cc7a06107a727710a67e280ed] mesa: Add 7.7.1 release MD5 sums
git bisect good 0c88e340499c961cc7a06107a727710a67e280ed
# good: [68ca19afd7299fa9c686f95d53b7e14df37aba4c] mesa: Don't bind DRAW/READ_FRAMEBUFFER separately without FBO blit support
git bisect good 68ca19afd7299fa9c686f95d53b7e14df37aba4c
# bad: [bee9964b29b2428ee75e2d1efc0e1d2c2518a417] Merge remote branch 'origin/master' into lp-binning
git bisect bad bee9964b29b2428ee75e2d1efc0e1d2c2518a417
# good: [d28740c298968303500a8c43047ded2679e727ac] Move pf_is_depth_stencil() to u_format auxiliary module.
git bisect good d28740c298968303500a8c43047ded2679e727ac
# good: [ba33ef00118d1c6017585af1498b89e99fe045be] lvmpipe: Initialize all coordinates.
git bisect good ba33ef00118d1c6017585af1498b89e99fe045be
# bad: [11cf3cb2c463cf8af8a7e63eb9521979bfd303f8] egl: Fix leaks in eglReleaseThread.
git bisect bad 11cf3cb2c463cf8af8a7e63eb9521979bfd303f8
# good: [daccc962a15f333a4759849d7088b0c985189175] r100: add blit support
git bisect good daccc962a15f333a4759849d7088b0c985189175
# good: [1ca22855119508457b2cbd9a0a3b840e47a61eff] progs/fp: testcases for GL_ARB_fragment_coord_conventions
git bisect good 1ca22855119508457b2cbd9a0a3b840e47a61eff
# good: [76bc66b664c7e135aa9c06cedd94ee1961d68c70] r300g: fix up buffer emission ordering.
git bisect good 76bc66b664c7e135aa9c06cedd94ee1961d68c70
# good: [85059964307c3f10e4a328d82af2bb791a5a4927] radeong: do not emit a zero-sized command stream
git bisect good 85059964307c3f10e4a328d82af2bb791a5a4927
# skip: [9b22427911ad27efc1f36faee9462c6082d0417c] Merge branch 'mesa_7_7_branch'
git bisect skip 9b22427911ad27efc1f36faee9462c6082d0417c
# bad: [6f6f3e4227855c87a78a717bce7374a7d64172ce] egl: Add _eglGetAPIContext.
git bisect bad 6f6f3e4227855c87a78a717bce7374a7d64172ce
# good: [7e7f8815fbfa21ab2397e673fa19c36603bc7a51] r300: rv350+ support FLT16_2/4 vertex formats
git bisect good 7e7f8815fbfa21ab2397e673fa19c36603bc7a51
# good: [a098fd71d7b7347bb8f1841bad0e7ce24e0e6de9] i965: Fix build after merge of mesa stable branch.
git bisect good a098fd71d7b7347bb8f1841bad0e7ce24e0e6de9
# bad: [7aed23c36288c2b343073d6d06ca0ea167805cd3] intel: Don't do client-side frame throttling with DRI2 SwapBuffers.
git bisect bad 7aed23c36288c2b343073d6d06ca0ea167805cd3
# skip: [5e1851b144a97bd577409dd5c6f3f6f45b4ff56f] i965: Remove unnecessary malloc/free in VS binding table setup.
git bisect skip 5e1851b144a97bd577409dd5c6f3f6f45b4ff56f
# skip: [c7fc9bfb2207638a479ddaff3ad108ffd9cd294a] Revert "intel: Use the new DRI2 flush invalidate entrypoint to signal frame done."
git bisect skip c7fc9bfb2207638a479ddaff3ad108ffd9cd294a
Comment 1 Eric Anholt 2010-05-13 15:52:43 UTC
Could you try with mesa master and xserver master?  I suspect that the invalidate changes have fixed this.
Comment 2 Nick Bowler 2010-05-13 16:22:58 UTC
Created attachment 35644 [details]
Complete build log.

I'd love to, but git xserver fails to build.
Comment 3 Kristian Høgsberg 2010-05-18 20:03:35 UTC
Created attachment 35744 [details] [review]
Throttle after doing copyregion/swapbuffers round trip

Here's a patch that enables throttling unconditionally like Franciscos patch in comment 20 of bug 27277, but in a way that reduces the overhead of always throttling.  Can you give it a try and see if it fixes the jerkyness?
Comment 4 Nick Bowler 2010-05-18 20:23:01 UTC
> Here's a patch that enables throttling unconditionally like Franciscos patch
> in comment 20 of bug 27277, but in a way that reduces the overhead of always
> throttling.  Can you give it a try and see if it fixes the jerkyness?

It is a _massive_ improvement, but it's still noticeably jerky.  Francisco's
patch, on the other hand, completely fixes this.  Just tested both patches
against git master.
Comment 5 Eric Anholt 2010-08-30 11:31:50 UTC
Is this fixed for you now?
Comment 6 Nick Bowler 2010-08-30 11:34:39 UTC
The game is still jerkier than it used to be, although it's not nearly as bad now.
Comment 7 Eric Anholt 2011-01-04 13:16:58 UTC
Here's a newer commit which may help:

commit 76360d6abc9e0195bc5c373101ae616e68b2e6e6
Author: Eric Anholt <eric@anholt.net>
Date:   Tue Nov 9 13:30:27 2010 -0800

    intel: Fix the client-side swapbuffers throttling.
    We were asking for a wait to GTT read (all GPU rendering to it
    complete), instead of asking for all GPU reading from it to be
    complete.  Prevents swapbuffers-based apps from running away with
    rendering, and produces a better input experience.

(If yes, please close, if not, please clear NEEDINFO)
Comment 8 Chris Wilson 2011-01-31 12:52:04 UTC
I've just installed and played this on an 965GM. Felt very smooth.
Comment 9 Nick Bowler 2011-01-31 13:04:42 UTC
Yeah, it seems good enough these days -- certainly the game is playable.  Since
I can't remember anymore how well it used to run, I can't tell if it's better
or worse than it used to be.  So no objections from me about closing this bug.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.