summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-04-12 13:48:38 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-04-20 08:51:50 +0100
commit1d102cc6ed21d1c4afa47800eecd24b9d663f689 (patch)
tree4befe5d78b54aa892b90ce9b3da1c690b77e628f
parentc9fb69cb2502917dfb2828c90802de7766072899 (diff)
Use SwapbuffersWait config option to control waiting on fullscreen swaps
As fullscreen swaps were going via a different path to the swapping of ordinary windows, we were no longer honouring the xorg.conf option to disable swapbuffer waiting. This changes the code to only use pageflipping if the Option "SwapbuffersWait" is set to "TRUE" (default). Jesse's comment was that this should be superseded by actually supporting asynchronous page flips. As we are missing kernel and dix level support for that, in the meantime honour the config option. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Kristian Høgsberg <krh@bitplanet.net>
-rw-r--r--src/intel_display.c2
-rw-r--r--src/intel_dri.c2
-rw-r--r--src/intel_driver.c2
3 files changed, 2 insertions, 4 deletions
diff --git a/src/intel_display.c b/src/intel_display.c
index b6592c44..b55b110f 100644
--- a/src/intel_display.c
+++ b/src/intel_display.c
@@ -1607,7 +1607,7 @@ Bool intel_mode_pre_init(ScrnInfoPtr scrn, int fd, int cpp)
gp.value = &has_flipping;
(void)drmCommandWriteRead(intel->drmSubFD, DRM_I915_GETPARAM, &gp,
sizeof(gp));
- if (has_flipping) {
+ if (has_flipping && intel->swapbuffers_wait) {
xf86DrvMsg(scrn->scrnIndex, X_INFO,
"Kernel page flipping support detected, enabling\n");
intel->use_pageflipping = TRUE;
diff --git a/src/intel_dri.c b/src/intel_dri.c
index a39b5125..cd72f450 100644
--- a/src/intel_dri.c
+++ b/src/intel_dri.c
@@ -425,7 +425,7 @@ I830DRI2CopyRegion(DrawablePtr drawable, RegionPtr pRegion,
/* Wait for the scanline to be outside the region to be copied */
if (pixmap_is_scanout(get_drawable_pixmap(dst)) &&
- intel->swapbuffers_wait) {
+ intel->swapbuffers_wait && INTEL_INFO(intel)->gen < 60) {
BoxPtr box;
BoxRec crtcbox;
int y1, y2;
diff --git a/src/intel_driver.c b/src/intel_driver.c
index e867351b..7014198e 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -658,8 +658,6 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags)
intel->swapbuffers_wait = xf86ReturnOptValBool(intel->Options,
OPTION_SWAPBUFFERS_WAIT,
TRUE);
- if (IS_GEN6(intel))
- intel->swapbuffers_wait = FALSE;
xf86DrvMsg(scrn->scrnIndex, X_CONFIG, "Framebuffer %s\n",
intel->tiling & INTEL_TILING_FB ? "tiled" : "linear");