aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_ringbuffer.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-03-16 13:13:03 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2017-03-16 13:17:12 -0400
commitff44ad51ebf8e4693bd66ae41aa37a6bc88a134f (patch)
treea6c8e60d9bb0a08d6a321439a7b690b8392c9ee0 /drivers/gpu/drm/i915/intel_ringbuffer.c
parent8c185ecaf4ee6966144c3897afdda557c5849bb0 (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.c15
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
2053static void i9xx_set_default_submission(struct intel_engine_cs *engine)
2054{
2055 engine->submit_request = i9xx_submit_request;
2056}
2057
2058static void gen6_bsd_set_default_submission(struct intel_engine_cs *engine)
2059{
2060 engine->submit_request = gen6_bsd_submit_request;
2061}
2062
2053static void intel_ring_default_vfuncs(struct drm_i915_private *dev_priv, 2063static 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;