Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 218047
b: refs/heads/master
c: d46eefa
h: refs/heads/master
i:
  218045: f788da4
  218043: 4eac6e0
  218039: a0a756c
  218031: 8dab8aa
  218015: 0d661ee
  217983: 3f95e01
v: v3
  • Loading branch information
Xiang, Haihao authored and Chris Wilson committed Sep 21, 2010
1 parent 0bf2d3d commit 598925f
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5c1143bbecf50184ff7cad6287b4e0993bacbd9f
refs/heads/master: d46eefa29724b1be0e8e90a3a51a190b912ebfab
22 changes: 17 additions & 5 deletions trunk/drivers/gpu/drm/i915/intel_ringbuffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,12 @@ static unsigned int render_ring_get_tail(struct drm_device *dev,
return I915_READ(PRB0_TAIL) & TAIL_ADDR;
}

static inline void render_ring_set_tail(struct drm_device *dev, u32 value)
{
drm_i915_private_t *dev_priv = dev->dev_private;
I915_WRITE(PRB0_TAIL, value);
}

static unsigned int render_ring_get_active_head(struct drm_device *dev,
struct intel_ring_buffer *ring)
{
Expand All @@ -144,8 +150,7 @@ static unsigned int render_ring_get_active_head(struct drm_device *dev,
static void render_ring_advance_ring(struct drm_device *dev,
struct intel_ring_buffer *ring)
{
drm_i915_private_t *dev_priv = dev->dev_private;
I915_WRITE(PRB0_TAIL, ring->tail);
render_ring_set_tail(dev, ring->tail);
}

static int init_ring_common(struct drm_device *dev,
Expand All @@ -159,7 +164,7 @@ static int init_ring_common(struct drm_device *dev,
/* Stop the ring if it's running. */
I915_WRITE(ring->regs.ctl, 0);
I915_WRITE(ring->regs.head, 0);
I915_WRITE(ring->regs.tail, 0);
ring->set_tail(dev, 0);

/* Initialize the ring. */
I915_WRITE(ring->regs.start, obj_priv->gtt_offset);
Expand Down Expand Up @@ -400,6 +405,12 @@ static inline unsigned int bsd_ring_get_tail(struct drm_device *dev,
return I915_READ(BSD_RING_TAIL) & TAIL_ADDR;
}

static inline void bsd_ring_set_tail(struct drm_device *dev, u32 value)
{
drm_i915_private_t *dev_priv = dev->dev_private;
I915_WRITE(BSD_RING_TAIL, value);
}

static inline unsigned int bsd_ring_get_active_head(struct drm_device *dev,
struct intel_ring_buffer *ring)
{
Expand All @@ -410,8 +421,7 @@ static inline unsigned int bsd_ring_get_active_head(struct drm_device *dev,
static inline void bsd_ring_advance_ring(struct drm_device *dev,
struct intel_ring_buffer *ring)
{
drm_i915_private_t *dev_priv = dev->dev_private;
I915_WRITE(BSD_RING_TAIL, ring->tail);
bsd_ring_set_tail(dev, ring->tail);
}

static int init_bsd_ring(struct drm_device *dev,
Expand Down Expand Up @@ -817,6 +827,7 @@ static struct intel_ring_buffer render_ring = {
.init = init_render_ring,
.get_head = render_ring_get_head,
.get_tail = render_ring_get_tail,
.set_tail = render_ring_set_tail,
.get_active_head = render_ring_get_active_head,
.advance_ring = render_ring_advance_ring,
.flush = render_ring_flush,
Expand Down Expand Up @@ -855,6 +866,7 @@ static struct intel_ring_buffer bsd_ring = {
.init = init_bsd_ring,
.get_head = bsd_ring_get_head,
.get_tail = bsd_ring_get_tail,
.set_tail = bsd_ring_set_tail,
.get_active_head = bsd_ring_get_active_head,
.advance_ring = bsd_ring_advance_ring,
.flush = bsd_ring_flush,
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/gpu/drm/i915/intel_ringbuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ struct intel_ring_buffer {
struct intel_ring_buffer *ring);
unsigned int (*get_tail)(struct drm_device *dev,
struct intel_ring_buffer *ring);
void (*set_tail)(struct drm_device *dev,
u32 value);
unsigned int (*get_active_head)(struct drm_device *dev,
struct intel_ring_buffer *ring);
void (*advance_ring)(struct drm_device *dev,
Expand Down

0 comments on commit 598925f

Please sign in to comment.