Fallback to shadow for Sandybridge if we don't have access to the BLT
If we attempt to emit BLT batches without kernel support, we just end up with EINVAL and no rendering. Prevent this, and avoid uncached rendering, by restoring the shadow fallback paths if there is no BLT support. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
8ff37667bf
commit
18839aaec5
|
|
@ -468,6 +468,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.
|
||||
|
|
@ -575,6 +593,8 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags)
|
|||
}
|
||||
|
||||
intel->use_shadow = FALSE;
|
||||
if (!can_accelerate_2d(intel))
|
||||
intel->use_shadow = TRUE;
|
||||
|
||||
if (xf86IsOptionSet(intel->Options, OPTION_SHADOW)) {
|
||||
intel->use_shadow =
|
||||
|
|
|
|||
Loading…
Reference in New Issue