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

Commit 96154f2f authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm/i915: switch ring->id to be a real id



... and add a helpr function for the places where we want a flag.

This way we can use ring->id to index into arrays.

v2: Resurrect the missing beautification-space Chris Wilson noted.
I'm moving this space around because I'll reuse ring_str in the next
patch.

Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarBen Widawsky <ben@bwidawsk.net>
Reviewed-by: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent b6daa025
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -669,9 +669,9 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
static const char *ring_str(int ring)
{
	switch (ring) {
	case RING_RENDER: return " render";
	case RING_BSD: return " bsd";
	case RING_BLT: return " blt";
	case RCS: return "render";
	case VCS: return "bsd";
	case BCS: return "blt";
	default: return "";
	}
}
@@ -714,7 +714,7 @@ static void print_error_buffers(struct seq_file *m,
	seq_printf(m, "%s [%d]:\n", name, count);

	while (count--) {
		seq_printf(m, "  %08x %8u %04x %04x %08x%s%s%s%s%s%s",
		seq_printf(m, "  %08x %8u %04x %04x %08x%s%s%s%s%s%s%s",
			   err->gtt_offset,
			   err->size,
			   err->read_domains,
@@ -724,6 +724,7 @@ static void print_error_buffers(struct seq_file *m,
			   tiling_flag(err->tiling),
			   dirty_flag(err->dirty),
			   purgeable_flag(err->purgeable),
			   err->ring != -1 ? " " : "",
			   ring_str(err->ring),
			   cache_level_str(err->cache_level));

+2 −2
Original line number Diff line number Diff line
@@ -203,9 +203,9 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj,
	cd->invalidate_domains |= invalidate_domains;
	cd->flush_domains |= flush_domains;
	if (flush_domains & I915_GEM_GPU_DOMAINS)
		cd->flush_rings |= obj->ring->id;
		cd->flush_rings |= intel_ring_flag(obj->ring);
	if (invalidate_domains & I915_GEM_GPU_DOMAINS)
		cd->flush_rings |= ring->id;
		cd->flush_rings |= intel_ring_flag(ring);
}

struct eb_objects {
+1 −1
Original line number Diff line number Diff line
@@ -804,7 +804,7 @@ static u32 capture_bo_list(struct drm_i915_error_buffer *err,
		err->tiling = obj->tiling_mode;
		err->dirty = obj->dirty;
		err->purgeable = obj->madv != I915_MADV_WILLNEED;
		err->ring = obj->ring ? obj->ring->id : 0;
		err->ring = obj->ring ? obj->ring->id : -1;
		err->cache_level = obj->cache_level;

		if (++i == count)
+7 −7
Original line number Diff line number Diff line
@@ -729,13 +729,13 @@ void intel_ring_setup_status_page(struct intel_ring_buffer *ring)
	 */
	if (IS_GEN7(dev)) {
		switch (ring->id) {
		case RING_RENDER:
		case RCS:
			mmio = RENDER_HWS_PGA_GEN7;
			break;
		case RING_BLT:
		case BCS:
			mmio = BLT_HWS_PGA_GEN7;
			break;
		case RING_BSD:
		case VCS:
			mmio = BSD_HWS_PGA_GEN7;
			break;
		}
@@ -1199,7 +1199,7 @@ void intel_ring_advance(struct intel_ring_buffer *ring)

static const struct intel_ring_buffer render_ring = {
	.name			= "render ring",
	.id			= RING_RENDER,
	.id			= RCS,
	.mmio_base		= RENDER_RING_BASE,
	.size			= 32 * PAGE_SIZE,
	.init			= init_render_ring,
@@ -1222,7 +1222,7 @@ static const struct intel_ring_buffer render_ring = {

static const struct intel_ring_buffer bsd_ring = {
	.name                   = "bsd ring",
	.id			= RING_BSD,
	.id			= VCS,
	.mmio_base		= BSD_RING_BASE,
	.size			= 32 * PAGE_SIZE,
	.init			= init_ring_common,
@@ -1332,7 +1332,7 @@ gen6_bsd_ring_put_irq(struct intel_ring_buffer *ring)
/* ring buffer for Video Codec for Gen6+ */
static const struct intel_ring_buffer gen6_bsd_ring = {
	.name			= "gen6 bsd ring",
	.id			= RING_BSD,
	.id			= VCS,
	.mmio_base		= GEN6_BSD_RING_BASE,
	.size			= 32 * PAGE_SIZE,
	.init			= init_ring_common,
@@ -1467,7 +1467,7 @@ static void blt_ring_cleanup(struct intel_ring_buffer *ring)

static const struct intel_ring_buffer gen6_blt_ring = {
	.name			= "blt ring",
	.id			= RING_BLT,
	.id			= BCS,
	.mmio_base		= BLT_RING_BASE,
	.size			= 32 * PAGE_SIZE,
	.init			= blt_ring_init,
+10 −10
Original line number Diff line number Diff line
#ifndef _INTEL_RINGBUFFER_H_
#define _INTEL_RINGBUFFER_H_

enum {
	RCS = 0x0,
	VCS,
	BCS,
	I915_NUM_RINGS,
};

struct  intel_hw_status_page {
	u32	__iomem	*page_addr;
	unsigned int	gfx_addr;
@@ -36,10 +29,11 @@ struct intel_hw_status_page {
struct  intel_ring_buffer {
	const char	*name;
	enum intel_ring_id {
		RING_RENDER = 0x1,
		RING_BSD = 0x2,
		RING_BLT = 0x4,
		RCS = 0x0,
		VCS,
		BCS,
	} id;
#define I915_NUM_RINGS 3
	u32		mmio_base;
	void		__iomem *virtual_start;
	struct		drm_device *dev;
@@ -119,6 +113,12 @@ struct intel_ring_buffer {
	void *private;
};

static inline unsigned
intel_ring_flag(struct intel_ring_buffer *ring)
{
	return 1 << ring->id;
}

static inline u32
intel_ring_sync_index(struct intel_ring_buffer *ring,
		      struct intel_ring_buffer *other)