summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/intel_driver.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/intel_driver.c b/src/intel_driver.c
index 5a019333..eec1ae0d 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -1293,6 +1293,24 @@ static void I830XvInit(ScrnInfoPtr scrn)
intel->colorKey);
}
+static Bool can_accelerate_2d(struct intel_screen_private *intel)
+{
+ if (INTEL_INFO(intel)->gen >= 60) {
+ drm_i915_getparam_t gp;
+ int value;
+
+ /* On Sandybridge we need the BLT in order to do anything since
+ * it so frequently used in the acceleration code paths.
+ */
+ gp.value = &value;
+ gp.param = I915_PARAM_HAS_BLT;
+ if (drmIoctl(intel->drmSubFD, DRM_IOCTL_I915_GETPARAM, &gp))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
/**
* This is called before ScreenInit to do any require probing of screen
* configuration.
@@ -2205,6 +2223,8 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
intel->force_fallback = FALSE;
intel->use_shadow = FALSE;
+ if (!can_accelerate_2d(intel))
+ intel->use_shadow = TRUE;
/* Enable tiling by default */
intel->tiling = TRUE;