drm/i915/overlay: Stash the kernel context on initialisation
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 4 Jul 2019 20:04:53 +0000 (21:04 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 4 Jul 2019 21:54:59 +0000 (22:54 +0100)
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
drivers/gpu/drm/i915/display/intel_overlay.c

index 21339b7f6a3e9209813d464a8b724f059faaa4a6..07929726b780c98a53e79858dbc188dfb919cf1e 100644 (file)
@@ -175,6 +175,7 @@ struct overlay_registers {
 
 struct intel_overlay {
        struct drm_i915_private *i915;
+       struct intel_context *context;
        struct intel_crtc *crtc;
        struct i915_vma *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)
 {
-       struct intel_engine_cs *engine = overlay->i915->engine[RCS0];
-
-       return i915_request_create(engine->kernel_context);
+       return i915_request_create(overlay->context);
 }
 
 /* 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))
                return;
 
+       if (!HAS_ENGINE(dev_priv, RCS0))
+               return;
+
        overlay = kzalloc(sizeof(*overlay), GFP_KERNEL);
        if (!overlay)
                return;
 
        overlay->i915 = dev_priv;
+       overlay->context = dev_priv->engine[RCS0]->kernel_context;
+       GEM_BUG_ON(!overlay->context);
 
        overlay->color_key = 0x0101fe;
        overlay->color_key_enabled = true;