diff options
author | Eric Anholt <eric@anholt.net> | 2009-05-18 18:01:05 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-05-19 10:09:41 -0700 |
commit | 09beee378cecd1079e7a9fa6eee8f084d680d37e (patch) | |
tree | 079c53d1e96e60e89f496bd98871145dbfb84e8f /src/drmmode_display.c | |
parent | 34660fd2df5d61b77ed7041d32ac29053fc94f5a (diff) |
Don't do GTT maps on objects bigger than half the available aperture size.
The basic problem is that software fallbacks will do single instructions that
copy from one GTT-mapped BO into another GTT-mapped BO. If we can't get both
of them bound simultanously, we fault one in, retry the instruction, fault the
other in (kicking out #1), retry the instruction, fault #1 back in
(kicking out #2), etc.
Note that we'll still get into a nasty spot if you do a composite operation
with a mask where all 3 are big-but-less-than-half-available-aperture, where
you'll thrash. It at least means you'll make progress, though, since each
instruction will only be operating on two BOs at at time, and the situation
seems unlikely.
Bug #20152 (3/3)
Diffstat (limited to 'src/drmmode_display.c')
-rw-r--r-- | src/drmmode_display.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 7df7b6fb..24e0e269 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -232,6 +232,8 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, drmmode_output_dpms(output, DPMSModeOn); } + i830_set_max_gtt_map_size(pScrn); + done: if (!ret) { crtc->x = saved_x; |