diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-03-16 13:13:03 -0400 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-03-16 13:17:12 -0400 |
commit | ff44ad51ebf8e4693bd66ae41aa37a6bc88a134f (patch) | |
tree | a6c8e60d9bb0a08d6a321439a7b690b8392c9ee0 /drivers/gpu/drm/i915/intel_ringbuffer.c | |
parent | 8c185ecaf4ee6966144c3897afdda557c5849bb0 (diff) |
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_ringbuffer.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 4a864f8c9387..1befcdf9b646 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | |||
@@ -2050,6 +2050,16 @@ static void intel_ring_init_irq(struct drm_i915_private *dev_priv, | |||
2050 | } | 2050 | } |
2051 | } | 2051 | } |
2052 | 2052 | ||
2053 | static void i9xx_set_default_submission(struct intel_engine_cs *engine) | ||
2054 | { | ||
2055 | engine->submit_request = i9xx_submit_request; | ||
2056 | } | ||
2057 | |||
2058 | static void gen6_bsd_set_default_submission(struct intel_engine_cs *engine) | ||
2059 | { | ||
2060 | engine->submit_request = gen6_bsd_submit_request; | ||
2061 | } | ||
2062 | |||
2053 | static void intel_ring_default_vfuncs(struct drm_i915_private *dev_priv, | 2063 | static void intel_ring_default_vfuncs(struct drm_i915_private *dev_priv, |
2054 | struct intel_engine_cs *engine) | 2064 | struct intel_engine_cs *engine) |
2055 | { | 2065 | { |
@@ -2080,7 +2090,8 @@ static void intel_ring_default_vfuncs(struct drm_i915_private *dev_priv, | |||
2080 | engine->emit_breadcrumb_sz++; | 2090 | engine->emit_breadcrumb_sz++; |
2081 | } | 2091 | } |
2082 | } | 2092 | } |
2083 | engine->submit_request = i9xx_submit_request; | 2093 | |
2094 | engine->set_default_submission = i9xx_set_default_submission; | ||
2084 | 2095 | ||
2085 | if (INTEL_GEN(dev_priv) >= 8) | 2096 | if (INTEL_GEN(dev_priv) >= 8) |
2086 | engine->emit_bb_start = gen8_emit_bb_start; | 2097 | engine->emit_bb_start = gen8_emit_bb_start; |
@@ -2165,7 +2176,7 @@ int intel_init_bsd_ring_buffer(struct intel_engine_cs *engine) | |||
2165 | if (INTEL_GEN(dev_priv) >= 6) { | 2176 | if (INTEL_GEN(dev_priv) >= 6) { |
2166 | /* gen6 bsd needs a special wa for tail updates */ | 2177 | /* gen6 bsd needs a special wa for tail updates */ |
2167 | if (IS_GEN6(dev_priv)) | 2178 | if (IS_GEN6(dev_priv)) |
2168 | engine->submit_request = gen6_bsd_submit_request; | 2179 | engine->set_default_submission = gen6_bsd_set_default_submission; |
2169 | engine->emit_flush = gen6_bsd_ring_flush; | 2180 | engine->emit_flush = gen6_bsd_ring_flush; |
2170 | if (INTEL_GEN(dev_priv) < 8) | 2181 | if (INTEL_GEN(dev_priv) < 8) |
2171 | engine->irq_enable_mask = GT_BSD_USER_INTERRUPT; | 2182 | engine->irq_enable_mask = GT_BSD_USER_INTERRUPT; |