aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2010-09-15 22:43:11 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2010-09-21 06:19:55 -0400
commit5c1143bbecf50184ff7cad6287b4e0993bacbd9f (patch)
treefeccbd785e3dd4331539f7d0146022eb2806b013 /drivers/gpu
parent92f49d9cec0052e09d938ac913d8e9ab432a0584 (diff)
drm/i915: do not export the instances of struct intel_ring_buffer
Introduce intel_init_render_ring_buffer(), intel_init_bsd_ring_buffer for ring initialization. Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c14
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c29
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.h4
3 files changed, 31 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 325f52bc1401..7b33b4d5ebff 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4496,28 +4496,18 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
4496 drm_i915_private_t *dev_priv = dev->dev_private; 4496 drm_i915_private_t *dev_priv = dev->dev_private;
4497 int ret; 4497 int ret;
4498 4498
4499 dev_priv->render_ring = render_ring;
4500
4501 if (!I915_NEED_GFX_HWS(dev)) {
4502 dev_priv->render_ring.status_page.page_addr
4503 = dev_priv->status_page_dmah->vaddr;
4504 memset(dev_priv->render_ring.status_page.page_addr,
4505 0, PAGE_SIZE);
4506 }
4507
4508 if (HAS_PIPE_CONTROL(dev)) { 4499 if (HAS_PIPE_CONTROL(dev)) {
4509 ret = i915_gem_init_pipe_control(dev); 4500 ret = i915_gem_init_pipe_control(dev);
4510 if (ret) 4501 if (ret)
4511 return ret; 4502 return ret;
4512 } 4503 }
4513 4504
4514 ret = intel_init_ring_buffer(dev, &dev_priv->render_ring); 4505 ret = intel_init_render_ring_buffer(dev);
4515 if (ret) 4506 if (ret)
4516 goto cleanup_pipe_control; 4507 goto cleanup_pipe_control;
4517 4508
4518 if (HAS_BSD(dev)) { 4509 if (HAS_BSD(dev)) {
4519 dev_priv->bsd_ring = bsd_ring; 4510 ret = intel_init_bsd_ring_buffer(dev);
4520 ret = intel_init_ring_buffer(dev, &dev_priv->bsd_ring);
4521 if (ret) 4511 if (ret)
4522 goto cleanup_render_ring; 4512 goto cleanup_render_ring;
4523 } 4513 }
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 45f66e289af1..178e2cea9835 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -793,7 +793,7 @@ void intel_fill_struct(struct drm_device *dev,
793 intel_ring_advance(dev, ring); 793 intel_ring_advance(dev, ring);
794} 794}
795 795
796struct intel_ring_buffer render_ring = { 796static struct intel_ring_buffer render_ring = {
797 .name = "render ring", 797 .name = "render ring",
798 .id = RING_RENDER, 798 .id = RING_RENDER,
799 .regs = { 799 .regs = {
@@ -831,7 +831,7 @@ struct intel_ring_buffer render_ring = {
831 831
832/* ring buffer for bit-stream decoder */ 832/* ring buffer for bit-stream decoder */
833 833
834struct intel_ring_buffer bsd_ring = { 834static struct intel_ring_buffer bsd_ring = {
835 .name = "bsd ring", 835 .name = "bsd ring",
836 .id = RING_BSD, 836 .id = RING_BSD,
837 .regs = { 837 .regs = {
@@ -866,3 +866,28 @@ struct intel_ring_buffer bsd_ring = {
866 .status_page = {NULL, 0, NULL}, 866 .status_page = {NULL, 0, NULL},
867 .map = {0,} 867 .map = {0,}
868}; 868};
869
870int intel_init_render_ring_buffer(struct drm_device *dev)
871{
872 drm_i915_private_t *dev_priv = dev->dev_private;
873
874 dev_priv->render_ring = render_ring;
875
876 if (!I915_NEED_GFX_HWS(dev)) {
877 dev_priv->render_ring.status_page.page_addr
878 = dev_priv->status_page_dmah->vaddr;
879 memset(dev_priv->render_ring.status_page.page_addr,
880 0, PAGE_SIZE);
881 }
882
883 return intel_init_ring_buffer(dev, &dev_priv->render_ring);
884}
885
886int intel_init_bsd_ring_buffer(struct drm_device *dev)
887{
888 drm_i915_private_t *dev_priv = dev->dev_private;
889
890 dev_priv->bsd_ring = bsd_ring;
891
892 return intel_init_ring_buffer(dev, &dev_priv->bsd_ring);
893}
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index 8dc0e62b7d2a..5603d6e945e9 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -133,7 +133,7 @@ void intel_ring_advance(struct drm_device *dev,
133u32 intel_ring_get_seqno(struct drm_device *dev, 133u32 intel_ring_get_seqno(struct drm_device *dev,
134 struct intel_ring_buffer *ring); 134 struct intel_ring_buffer *ring);
135 135
136extern struct intel_ring_buffer render_ring; 136int intel_init_render_ring_buffer(struct drm_device *dev);
137extern struct intel_ring_buffer bsd_ring; 137int intel_init_bsd_ring_buffer(struct drm_device *dev);
138 138
139#endif /* _INTEL_RINGBUFFER_H_ */ 139#endif /* _INTEL_RINGBUFFER_H_ */