drm/i915: Fail if we can't get a fence for gen2/3 tiled scanout
Gen2/3 display engine depends on the fence for tiled scanout. So if we fail to get a fence fail the entire operation. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180221160235.11134-2-ville.syrjala@linux.intel.com Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
db9c06dfff
commit
85798ac9b3
@ -2123,6 +2123,8 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
|
|||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (i915_vma_is_map_and_fenceable(vma)) {
|
if (i915_vma_is_map_and_fenceable(vma)) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* Install a fence for tiled scan-out. Pre-i965 always needs a
|
/* Install a fence for tiled scan-out. Pre-i965 always needs a
|
||||||
* fence, whereas 965+ only requires a fence if using
|
* fence, whereas 965+ only requires a fence if using
|
||||||
* framebuffer compression. For simplicity, we always, when
|
* framebuffer compression. For simplicity, we always, when
|
||||||
@ -2139,7 +2141,13 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
|
|||||||
* something and try to run the system in a "less than optimal"
|
* something and try to run the system in a "less than optimal"
|
||||||
* mode that matches the user configuration.
|
* mode that matches the user configuration.
|
||||||
*/
|
*/
|
||||||
if (i915_vma_pin_fence(vma) == 0 && vma->fence)
|
ret = i915_vma_pin_fence(vma);
|
||||||
|
if (ret != 0 && INTEL_GEN(dev_priv) < 4) {
|
||||||
|
vma = ERR_PTR(ret);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret == 0 && vma->fence)
|
||||||
*out_flags |= PLANE_HAS_FENCE;
|
*out_flags |= PLANE_HAS_FENCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user