summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/intel_ringbuffer.h
diff options
context:
space:
mode:
authorMika Kuoppala <mika.kuoppala@linux.intel.com>2017-09-22 15:43:06 +0300
committerMika Kuoppala <mika.kuoppala@intel.com>2017-09-25 11:33:47 +0300
commit7a62cc6107f31e119a0df6f79fa9fae566b1a22e (patch)
treecdbc7ee44dd03c7d30562e418c6ffa42ca4f745f /drivers/gpu/drm/i915/intel_ringbuffer.h
parentcf4591d1ce1c85d589a3e8e7e5a0bbc7aa9b0027 (diff)
downloadlinux-7a62cc6107f31e119a0df6f79fa9fae566b1a22e.tar.xz
drm/i915: Add execlist_port_complete
When first execlist entry is processed, we move the port (contents). Introduce function for this as execlist and guc use this common operation. v2: rebase. s/GEM_DEBUG_BUG/GEM_BUG (Chris) v3: rebase Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20170922124307.10914-4-mika.kuoppala@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.h')
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index 421e769adb79..0eae5936bc3c 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -228,7 +228,7 @@ struct intel_engine_execlists {
#define port_unpack(p, count) ptr_unpack_bits((p)->request_count, count, EXECLIST_COUNT_BITS)
#define port_set(p, packed) ((p)->request_count = (packed))
#define port_isset(p) ((p)->request_count)
-#define port_index(p, e) ((p) - (e)->execlists.port)
+#define port_index(p, execlists) ((p) - (execlists)->port)
/**
* @context_id: context ID for port
@@ -511,6 +511,18 @@ struct intel_engine_cs {
u32 (*get_cmd_length_mask)(u32 cmd_header);
};
+static inline void
+execlists_port_complete(struct intel_engine_execlists * const execlists,
+ struct execlist_port * const port)
+{
+ struct execlist_port * const port1 = &execlists->port[1];
+
+ GEM_BUG_ON(port_index(port, execlists) != 0);
+
+ *port = *port1;
+ memset(port1, 0, sizeof(struct execlist_port));
+}
+
static inline unsigned int
intel_engine_flag(const struct intel_engine_cs *engine)
{