Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c7dd53b authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm/i915/bdw: Add a context and an engine pointers to the ringbuffer



Any given ringbuffer is unequivocally tied to one context and one engine.
By setting the appropriate pointers to them, the ringbuffer struct holds
all the infromation you might need to submit a workload for processing,
Execlists style.

v2: Drop ring->ctx since that looks terribly ill-defined for legacy
ringbuffer submission.

Signed-off-by: Oscar Mateo <oscar.mateo@intel.com> (v1)
Acked-by: Damien Lespiau <damien.lespiau@intel.com> (v2)
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 84c2377f
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -134,6 +134,7 @@ int intel_lr_context_deferred_create(struct intel_context *ctx,
		return ret;
		return ret;
	}
	}


	ringbuf->ring = ring;
	ringbuf->size = 32 * PAGE_SIZE;
	ringbuf->size = 32 * PAGE_SIZE;
	ringbuf->effective_size = ringbuf->size;
	ringbuf->effective_size = ringbuf->size;
	ringbuf->head = 0;
	ringbuf->head = 0;
+1 −0
Original line number Original line Diff line number Diff line
@@ -1594,6 +1594,7 @@ static int intel_init_ring_buffer(struct drm_device *dev,
	INIT_LIST_HEAD(&ring->active_list);
	INIT_LIST_HEAD(&ring->active_list);
	INIT_LIST_HEAD(&ring->request_list);
	INIT_LIST_HEAD(&ring->request_list);
	ringbuf->size = 32 * PAGE_SIZE;
	ringbuf->size = 32 * PAGE_SIZE;
	ringbuf->ring = ring;
	memset(ring->semaphore.sync_seqno, 0, sizeof(ring->semaphore.sync_seqno));
	memset(ring->semaphore.sync_seqno, 0, sizeof(ring->semaphore.sync_seqno));


	init_waitqueue_head(&ring->irq_queue);
	init_waitqueue_head(&ring->irq_queue);
+2 −0
Original line number Original line Diff line number Diff line
@@ -90,6 +90,8 @@ struct intel_ringbuffer {
	struct drm_i915_gem_object *obj;
	struct drm_i915_gem_object *obj;
	void __iomem *virtual_start;
	void __iomem *virtual_start;


	struct intel_engine_cs *ring;

	u32 head;
	u32 head;
	u32 tail;
	u32 tail;
	int space;
	int space;