diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-03-16 17:13:03 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-03-16 17:17:12 +0000 |
commit | ff44ad51ebf8e4693bd66ae41aa37a6bc88a134f (patch) | |
tree | a6c8e60d9bb0a08d6a321439a7b690b8392c9ee0 /drivers/gpu/drm/i915/intel_engine_cs.c | |
parent | 8c185ecaf4ee6966144c3897afdda557c5849bb0 (diff) | |
download | blackbird-obmc-linux-ff44ad51ebf8e4693bd66ae41aa37a6bc88a134f.tar.gz blackbird-obmc-linux-ff44ad51ebf8e4693bd66ae41aa37a6bc88a134f.zip |
drm/i915: Move engine->submit_request selection to a vfunc
It turns out that we may want to restore the original
engine->submit_request (and engine->schedule) callbacks from more than
just the guc <-> execlists transition. Move this to a vfunc so we can
have a common interface.
v2: Move initial selection to intel_engines_init_common(), repaint vfunc
with engine->set_default_submission (and a similar colour for the
helper).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170316171305.12972-2-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/intel_engine_cs.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_engine_cs.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c index 17e7fbf40e28..4200faa520c7 100644 --- a/drivers/gpu/drm/i915/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/intel_engine_cs.c @@ -193,6 +193,7 @@ int intel_engines_init(struct drm_i915_private *dev_priv) goto cleanup; } + GEM_BUG_ON(!engine->submit_request); mask |= ENGINE_MASK(id); } @@ -343,6 +344,8 @@ int intel_engine_init_common(struct intel_engine_cs *engine) { int ret; + engine->set_default_submission(engine); + /* We may need to do things with the shrinker which * require us to immediately switch back to the default * context. This can cause a problem as pinning the @@ -1116,6 +1119,15 @@ bool intel_engines_are_idle(struct drm_i915_private *dev_priv) return true; } +void intel_engines_reset_default_submission(struct drm_i915_private *i915) +{ + struct intel_engine_cs *engine; + enum intel_engine_id id; + + for_each_engine(engine, i915, id) + engine->set_default_submission(engine); +} + #if IS_ENABLED(CONFIG_DRM_I915_SELFTEST) #include "selftests/mock_engine.c" #endif |