提交 96154f2f 编写于 作者: D Daniel Vetter

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: NChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
Reviewed-by: NEugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 b6daa025
...@@ -669,9 +669,9 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data) ...@@ -669,9 +669,9 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
static const char *ring_str(int ring) static const char *ring_str(int ring)
{ {
switch (ring) { switch (ring) {
case RING_RENDER: return " render"; case RCS: return "render";
case RING_BSD: return " bsd"; case VCS: return "bsd";
case RING_BLT: return " blt"; case BCS: return "blt";
default: return ""; default: return "";
} }
} }
...@@ -714,7 +714,7 @@ static void print_error_buffers(struct seq_file *m, ...@@ -714,7 +714,7 @@ static void print_error_buffers(struct seq_file *m,
seq_printf(m, "%s [%d]:\n", name, count); seq_printf(m, "%s [%d]:\n", name, count);
while (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->gtt_offset,
err->size, err->size,
err->read_domains, err->read_domains,
...@@ -724,6 +724,7 @@ static void print_error_buffers(struct seq_file *m, ...@@ -724,6 +724,7 @@ static void print_error_buffers(struct seq_file *m,
tiling_flag(err->tiling), tiling_flag(err->tiling),
dirty_flag(err->dirty), dirty_flag(err->dirty),
purgeable_flag(err->purgeable), purgeable_flag(err->purgeable),
err->ring != -1 ? " " : "",
ring_str(err->ring), ring_str(err->ring),
cache_level_str(err->cache_level)); cache_level_str(err->cache_level));
......
...@@ -203,9 +203,9 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj, ...@@ -203,9 +203,9 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj,
cd->invalidate_domains |= invalidate_domains; cd->invalidate_domains |= invalidate_domains;
cd->flush_domains |= flush_domains; cd->flush_domains |= flush_domains;
if (flush_domains & I915_GEM_GPU_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) if (invalidate_domains & I915_GEM_GPU_DOMAINS)
cd->flush_rings |= ring->id; cd->flush_rings |= intel_ring_flag(ring);
} }
struct eb_objects { struct eb_objects {
......
...@@ -804,7 +804,7 @@ static u32 capture_bo_list(struct drm_i915_error_buffer *err, ...@@ -804,7 +804,7 @@ static u32 capture_bo_list(struct drm_i915_error_buffer *err,
err->tiling = obj->tiling_mode; err->tiling = obj->tiling_mode;
err->dirty = obj->dirty; err->dirty = obj->dirty;
err->purgeable = obj->madv != I915_MADV_WILLNEED; 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; err->cache_level = obj->cache_level;
if (++i == count) if (++i == count)
......
...@@ -729,13 +729,13 @@ void intel_ring_setup_status_page(struct intel_ring_buffer *ring) ...@@ -729,13 +729,13 @@ void intel_ring_setup_status_page(struct intel_ring_buffer *ring)
*/ */
if (IS_GEN7(dev)) { if (IS_GEN7(dev)) {
switch (ring->id) { switch (ring->id) {
case RING_RENDER: case RCS:
mmio = RENDER_HWS_PGA_GEN7; mmio = RENDER_HWS_PGA_GEN7;
break; break;
case RING_BLT: case BCS:
mmio = BLT_HWS_PGA_GEN7; mmio = BLT_HWS_PGA_GEN7;
break; break;
case RING_BSD: case VCS:
mmio = BSD_HWS_PGA_GEN7; mmio = BSD_HWS_PGA_GEN7;
break; break;
} }
...@@ -1199,7 +1199,7 @@ void intel_ring_advance(struct intel_ring_buffer *ring) ...@@ -1199,7 +1199,7 @@ void intel_ring_advance(struct intel_ring_buffer *ring)
static const struct intel_ring_buffer render_ring = { static const struct intel_ring_buffer render_ring = {
.name = "render ring", .name = "render ring",
.id = RING_RENDER, .id = RCS,
.mmio_base = RENDER_RING_BASE, .mmio_base = RENDER_RING_BASE,
.size = 32 * PAGE_SIZE, .size = 32 * PAGE_SIZE,
.init = init_render_ring, .init = init_render_ring,
...@@ -1222,7 +1222,7 @@ static const struct intel_ring_buffer render_ring = { ...@@ -1222,7 +1222,7 @@ static const struct intel_ring_buffer render_ring = {
static const struct intel_ring_buffer bsd_ring = { static const struct intel_ring_buffer bsd_ring = {
.name = "bsd ring", .name = "bsd ring",
.id = RING_BSD, .id = VCS,
.mmio_base = BSD_RING_BASE, .mmio_base = BSD_RING_BASE,
.size = 32 * PAGE_SIZE, .size = 32 * PAGE_SIZE,
.init = init_ring_common, .init = init_ring_common,
...@@ -1332,7 +1332,7 @@ gen6_bsd_ring_put_irq(struct intel_ring_buffer *ring) ...@@ -1332,7 +1332,7 @@ gen6_bsd_ring_put_irq(struct intel_ring_buffer *ring)
/* ring buffer for Video Codec for Gen6+ */ /* ring buffer for Video Codec for Gen6+ */
static const struct intel_ring_buffer gen6_bsd_ring = { static const struct intel_ring_buffer gen6_bsd_ring = {
.name = "gen6 bsd ring", .name = "gen6 bsd ring",
.id = RING_BSD, .id = VCS,
.mmio_base = GEN6_BSD_RING_BASE, .mmio_base = GEN6_BSD_RING_BASE,
.size = 32 * PAGE_SIZE, .size = 32 * PAGE_SIZE,
.init = init_ring_common, .init = init_ring_common,
...@@ -1467,7 +1467,7 @@ static void blt_ring_cleanup(struct intel_ring_buffer *ring) ...@@ -1467,7 +1467,7 @@ static void blt_ring_cleanup(struct intel_ring_buffer *ring)
static const struct intel_ring_buffer gen6_blt_ring = { static const struct intel_ring_buffer gen6_blt_ring = {
.name = "blt ring", .name = "blt ring",
.id = RING_BLT, .id = BCS,
.mmio_base = BLT_RING_BASE, .mmio_base = BLT_RING_BASE,
.size = 32 * PAGE_SIZE, .size = 32 * PAGE_SIZE,
.init = blt_ring_init, .init = blt_ring_init,
......
#ifndef _INTEL_RINGBUFFER_H_ #ifndef _INTEL_RINGBUFFER_H_
#define _INTEL_RINGBUFFER_H_ #define _INTEL_RINGBUFFER_H_
enum {
RCS = 0x0,
VCS,
BCS,
I915_NUM_RINGS,
};
struct intel_hw_status_page { struct intel_hw_status_page {
u32 __iomem *page_addr; u32 __iomem *page_addr;
unsigned int gfx_addr; unsigned int gfx_addr;
...@@ -36,10 +29,11 @@ struct intel_hw_status_page { ...@@ -36,10 +29,11 @@ struct intel_hw_status_page {
struct intel_ring_buffer { struct intel_ring_buffer {
const char *name; const char *name;
enum intel_ring_id { enum intel_ring_id {
RING_RENDER = 0x1, RCS = 0x0,
RING_BSD = 0x2, VCS,
RING_BLT = 0x4, BCS,
} id; } id;
#define I915_NUM_RINGS 3
u32 mmio_base; u32 mmio_base;
void __iomem *virtual_start; void __iomem *virtual_start;
struct drm_device *dev; struct drm_device *dev;
...@@ -119,6 +113,12 @@ struct intel_ring_buffer { ...@@ -119,6 +113,12 @@ struct intel_ring_buffer {
void *private; void *private;
}; };
static inline unsigned
intel_ring_flag(struct intel_ring_buffer *ring)
{
return 1 << ring->id;
}
static inline u32 static inline u32
intel_ring_sync_index(struct intel_ring_buffer *ring, intel_ring_sync_index(struct intel_ring_buffer *ring,
struct intel_ring_buffer *other) struct intel_ring_buffer *other)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册