diff options
author | Michel Thierry <michel.thierry@intel.com> | 2014-11-11 11:47:33 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-11-14 04:29:25 -0500 |
commit | 771b9a532483cc45df19823b8dfaa0cecfd45836 (patch) | |
tree | 9054c769e5b430c0ac91881399a74662bde092a7 /drivers/gpu/drm/i915/intel_ringbuffer.h | |
parent | c6e8f39db96d63a1b4eda32e7dfeac093edc09ee (diff) |
drm/i915: Initialize workarounds in logical ring mode too
Following the legacy ring submission example, update the
ring->init_context() hook to support the execlist submission mode.
v2: update to use the new workaround macros and cleanup unused code.
This takes care of both bdw and chv workarounds.
v2.1: Add missing call to init_context() during deferred context creation.
v3: Split init_context (emit) in legacy/lrc modes. For lrc, get the ringbuf
from the context (Mika/Daniel).
v4: Merge init_context interfaces back, the legacy mode only needs the ring,
but the lrc mode needs the ring and context (Mika).
Issue: VIZ-4092
Issue: GMIN-3475
Change-Id: Ie3d093b2542ab0e2a44b90460533e2f979788d6c
Cc: Deepak S <deepak.s@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Michel Thierry <michel.thierry@intel.com>
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
[danvet: Align function paramater lists properly.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.h')
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h index 96479c89f4bd..aab2e2f90a74 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.h +++ b/drivers/gpu/drm/i915/intel_ringbuffer.h | |||
@@ -148,7 +148,8 @@ struct intel_engine_cs { | |||
148 | 148 | ||
149 | int (*init)(struct intel_engine_cs *ring); | 149 | int (*init)(struct intel_engine_cs *ring); |
150 | 150 | ||
151 | int (*init_context)(struct intel_engine_cs *ring); | 151 | int (*init_context)(struct intel_engine_cs *ring, |
152 | struct intel_context *ctx); | ||
152 | 153 | ||
153 | void (*write_tail)(struct intel_engine_cs *ring, | 154 | void (*write_tail)(struct intel_engine_cs *ring, |
154 | u32 value); | 155 | u32 value); |
@@ -424,6 +425,8 @@ int intel_init_vebox_ring_buffer(struct drm_device *dev); | |||
424 | u64 intel_ring_get_active_head(struct intel_engine_cs *ring); | 425 | u64 intel_ring_get_active_head(struct intel_engine_cs *ring); |
425 | void intel_ring_setup_status_page(struct intel_engine_cs *ring); | 426 | void intel_ring_setup_status_page(struct intel_engine_cs *ring); |
426 | 427 | ||
428 | int init_workarounds_ring(struct intel_engine_cs *ring); | ||
429 | |||
427 | static inline u32 intel_ring_get_tail(struct intel_ringbuffer *ringbuf) | 430 | static inline u32 intel_ring_get_tail(struct intel_ringbuffer *ringbuf) |
428 | { | 431 | { |
429 | return ringbuf->tail; | 432 | return ringbuf->tail; |