drm/i915/overlay: Stash the kernel context on initialisation

Simplify runtime request creation by storing the context we need to use
during initialisation. This allows us to remove one more hardcoded
engine lookup.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190704200455.14870-1-chris@chris-wilson.co.uk
This commit is contained in:
Chris Wilson 2019-07-04 21:04:53 +01:00
parent 1ee2ae896b
commit ec22f256a6

View File

@ -175,6 +175,7 @@ struct overlay_registers {
struct intel_overlay { struct intel_overlay {
struct drm_i915_private *i915; struct drm_i915_private *i915;
struct intel_context *context;
struct intel_crtc *crtc; struct intel_crtc *crtc;
struct i915_vma *vma; struct i915_vma *vma;
struct i915_vma *old_vma; struct i915_vma *old_vma;
@ -239,9 +240,7 @@ static int intel_overlay_do_wait_request(struct intel_overlay *overlay,
static struct i915_request *alloc_request(struct intel_overlay *overlay) static struct i915_request *alloc_request(struct intel_overlay *overlay)
{ {
struct intel_engine_cs *engine = overlay->i915->engine[RCS0]; return i915_request_create(overlay->context);
return i915_request_create(engine->kernel_context);
} }
/* overlay needs to be disable in OCMD reg */ /* overlay needs to be disable in OCMD reg */
@ -1359,11 +1358,16 @@ void intel_overlay_setup(struct drm_i915_private *dev_priv)
if (!HAS_OVERLAY(dev_priv)) if (!HAS_OVERLAY(dev_priv))
return; return;
if (!HAS_ENGINE(dev_priv, RCS0))
return;
overlay = kzalloc(sizeof(*overlay), GFP_KERNEL); overlay = kzalloc(sizeof(*overlay), GFP_KERNEL);
if (!overlay) if (!overlay)
return; return;
overlay->i915 = dev_priv; overlay->i915 = dev_priv;
overlay->context = dev_priv->engine[RCS0]->kernel_context;
GEM_BUG_ON(!overlay->context);
overlay->color_key = 0x0101fe; overlay->color_key = 0x0101fe;
overlay->color_key_enabled = true; overlay->color_key_enabled = true;