Don't disable acceleration on 830/845g by default

Run the risk of a GPU hang (it shouldn't endanger the entire machine
normally) and let the user elect to disable it through

  Option "NoAccel" "true"

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2012-07-29 22:51:26 +01:00
parent 3d45f0affe
commit 0fd680ff52
5 changed files with 16 additions and 14 deletions

View File

@ -390,18 +390,9 @@ static Bool can_accelerate_blt(struct intel_screen_private *intel)
if (INTEL_INFO(intel)->gen == -1)
return FALSE;
if (0 && (IS_I830(intel) || IS_845G(intel))) {
/* These pair of i8xx chipsets have a crippling erratum
* that prevents the use of a PTE entry by the BLT
* engine immediately following updating that
* entry in the GATT.
*
* As the BLT is fundamental to our 2D acceleration,
* and the workaround is lost in the midst of time,
* fallback.
*
* XXX disabled for release as causes regressions in GL.
*/
if (xf86ReturnOptValBool(intel->Options, OPTION_ACCEL_DISABLE, FALSE)) {
xf86DrvMsg(intel->scrn->scrnIndex, X_CONFIG,
"Disabling hardware acceleration.\n");
return FALSE;
}

View File

@ -5,6 +5,7 @@
#include "intel_options.h"
const OptionInfoRec intel_options[] = {
{OPTION_ACCEL_DISABLE, "NoAccel", OPTV_BOOLEAN, {0}, 0},
{OPTION_ACCEL_METHOD, "AccelMethod", OPTV_STRING, {0}, 0},
{OPTION_DRI, "DRI", OPTV_BOOLEAN, {0}, 1},
{OPTION_COLOR_KEY, "ColorKey", OPTV_INTEGER, {0}, 0},

View File

@ -11,6 +11,7 @@
*/
enum intel_options {
OPTION_ACCEL_DISABLE,
OPTION_ACCEL_METHOD,
OPTION_DRI,
OPTION_VIDEO_KEY,

View File

@ -652,8 +652,10 @@ static bool is_hw_supported(struct kgem *kgem,
if (kgem->gen == (unsigned)-1) /* unknown chipset, assume future gen */
return kgem->has_blt;
if (kgem->gen <= 20) /* dynamic GTT is fubar */
return false;
/* Although pre-855gm the GMCH is fubar, it works mostly. So
* let the user decide through "NoAccel" whether or not to risk
* hw acceleration.
*/
if (kgem->gen == 60 && dev->revision < 8) {
/* pre-production SNB with dysfunctional BLT */

View File

@ -439,7 +439,14 @@ static Bool sna_pre_init(ScrnInfoPtr scrn, int flags)
return FALSE;
sna->info = intel_detect_chipset(scrn, sna->pEnt, sna->PciInfo);
kgem_init(&sna->kgem, fd, sna->PciInfo, sna->info->gen);
if (xf86ReturnOptValBool(sna->Options, OPTION_ACCEL_DISABLE, FALSE)) {
xf86DrvMsg(sna->scrn->scrnIndex, X_CONFIG,
"Disabling hardware acceleration.\n");
sna->kgem.wedged = true;
}
if (!xf86ReturnOptValBool(sna->Options,
OPTION_RELAXED_FENCING,
sna->kgem.has_relaxed_fencing)) {