aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_ringbuffer.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-11-08 14:18:58 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2010-11-23 15:19:10 -0500
commit05394f3975dceb107a5e1393e2244946e5b43660 (patch)
tree2af73b6efec503ed4cd9c932018619bd28a1fe60 /drivers/gpu/drm/i915/intel_ringbuffer.c
parent185cbcb304ba4dee55e39593fd86dcd7813f62ec (diff)
drm/i915: Use drm_i915_gem_object as the preferred type
A glorified s/obj_priv/obj/ with a net reduction of over a 100 lines and many characters! Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c54
1 files changed, 24 insertions, 30 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 1db860d7989a..181aad31125d 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -139,7 +139,7 @@ u32 intel_ring_get_active_head(struct intel_ring_buffer *ring)
139static int init_ring_common(struct intel_ring_buffer *ring) 139static int init_ring_common(struct intel_ring_buffer *ring)
140{ 140{
141 drm_i915_private_t *dev_priv = ring->dev->dev_private; 141 drm_i915_private_t *dev_priv = ring->dev->dev_private;
142 struct drm_i915_gem_object *obj_priv = to_intel_bo(ring->gem_object); 142 struct drm_i915_gem_object *obj = ring->obj;
143 u32 head; 143 u32 head;
144 144
145 /* Stop the ring if it's running. */ 145 /* Stop the ring if it's running. */
@@ -148,7 +148,7 @@ static int init_ring_common(struct intel_ring_buffer *ring)
148 ring->write_tail(ring, 0); 148 ring->write_tail(ring, 0);
149 149
150 /* Initialize the ring. */ 150 /* Initialize the ring. */
151 I915_WRITE_START(ring, obj_priv->gtt_offset); 151 I915_WRITE_START(ring, obj->gtt_offset);
152 head = I915_READ_HEAD(ring) & HEAD_ADDR; 152 head = I915_READ_HEAD(ring) & HEAD_ADDR;
153 153
154 /* G45 ring initialization fails to reset head to zero */ 154 /* G45 ring initialization fails to reset head to zero */
@@ -178,7 +178,7 @@ static int init_ring_common(struct intel_ring_buffer *ring)
178 178
179 /* If the head is still not zero, the ring is dead */ 179 /* If the head is still not zero, the ring is dead */
180 if ((I915_READ_CTL(ring) & RING_VALID) == 0 || 180 if ((I915_READ_CTL(ring) & RING_VALID) == 0 ||
181 I915_READ_START(ring) != obj_priv->gtt_offset || 181 I915_READ_START(ring) != obj->gtt_offset ||
182 (I915_READ_HEAD(ring) & HEAD_ADDR) != 0) { 182 (I915_READ_HEAD(ring) & HEAD_ADDR) != 0) {
183 DRM_ERROR("%s initialization failed " 183 DRM_ERROR("%s initialization failed "
184 "ctl %08x head %08x tail %08x start %08x\n", 184 "ctl %08x head %08x tail %08x start %08x\n",
@@ -514,17 +514,15 @@ render_ring_dispatch_execbuffer(struct intel_ring_buffer *ring,
514static void cleanup_status_page(struct intel_ring_buffer *ring) 514static void cleanup_status_page(struct intel_ring_buffer *ring)
515{ 515{
516 drm_i915_private_t *dev_priv = ring->dev->dev_private; 516 drm_i915_private_t *dev_priv = ring->dev->dev_private;
517 struct drm_gem_object *obj; 517 struct drm_i915_gem_object *obj;
518 struct drm_i915_gem_object *obj_priv;
519 518
520 obj = ring->status_page.obj; 519 obj = ring->status_page.obj;
521 if (obj == NULL) 520 if (obj == NULL)
522 return; 521 return;
523 obj_priv = to_intel_bo(obj);
524 522
525 kunmap(obj_priv->pages[0]); 523 kunmap(obj->pages[0]);
526 i915_gem_object_unpin(obj); 524 i915_gem_object_unpin(obj);
527 drm_gem_object_unreference(obj); 525 drm_gem_object_unreference(&obj->base);
528 ring->status_page.obj = NULL; 526 ring->status_page.obj = NULL;
529 527
530 memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map)); 528 memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
@@ -534,8 +532,7 @@ static int init_status_page(struct intel_ring_buffer *ring)
534{ 532{
535 struct drm_device *dev = ring->dev; 533 struct drm_device *dev = ring->dev;
536 drm_i915_private_t *dev_priv = dev->dev_private; 534 drm_i915_private_t *dev_priv = dev->dev_private;
537 struct drm_gem_object *obj; 535 struct drm_i915_gem_object *obj;
538 struct drm_i915_gem_object *obj_priv;
539 int ret; 536 int ret;
540 537
541 obj = i915_gem_alloc_object(dev, 4096); 538 obj = i915_gem_alloc_object(dev, 4096);
@@ -544,16 +541,15 @@ static int init_status_page(struct intel_ring_buffer *ring)
544 ret = -ENOMEM; 541 ret = -ENOMEM;
545 goto err; 542 goto err;
546 } 543 }
547 obj_priv = to_intel_bo(obj); 544 obj->agp_type = AGP_USER_CACHED_MEMORY;
548 obj_priv->agp_type = AGP_USER_CACHED_MEMORY;
549 545
550 ret = i915_gem_object_pin(obj, 4096, true); 546 ret = i915_gem_object_pin(obj, 4096, true);
551 if (ret != 0) { 547 if (ret != 0) {
552 goto err_unref; 548 goto err_unref;
553 } 549 }
554 550
555 ring->status_page.gfx_addr = obj_priv->gtt_offset; 551 ring->status_page.gfx_addr = obj->gtt_offset;
556 ring->status_page.page_addr = kmap(obj_priv->pages[0]); 552 ring->status_page.page_addr = kmap(obj->pages[0]);
557 if (ring->status_page.page_addr == NULL) { 553 if (ring->status_page.page_addr == NULL) {
558 memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map)); 554 memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
559 goto err_unpin; 555 goto err_unpin;
@@ -570,7 +566,7 @@ static int init_status_page(struct intel_ring_buffer *ring)
570err_unpin: 566err_unpin:
571 i915_gem_object_unpin(obj); 567 i915_gem_object_unpin(obj);
572err_unref: 568err_unref:
573 drm_gem_object_unreference(obj); 569 drm_gem_object_unreference(&obj->base);
574err: 570err:
575 return ret; 571 return ret;
576} 572}
@@ -578,8 +574,7 @@ err:
578int intel_init_ring_buffer(struct drm_device *dev, 574int intel_init_ring_buffer(struct drm_device *dev,
579 struct intel_ring_buffer *ring) 575 struct intel_ring_buffer *ring)
580{ 576{
581 struct drm_i915_gem_object *obj_priv; 577 struct drm_i915_gem_object *obj;
582 struct drm_gem_object *obj;
583 int ret; 578 int ret;
584 579
585 ring->dev = dev; 580 ring->dev = dev;
@@ -600,15 +595,14 @@ int intel_init_ring_buffer(struct drm_device *dev,
600 goto err_hws; 595 goto err_hws;
601 } 596 }
602 597
603 ring->gem_object = obj; 598 ring->obj = obj;
604 599
605 ret = i915_gem_object_pin(obj, PAGE_SIZE, true); 600 ret = i915_gem_object_pin(obj, PAGE_SIZE, true);
606 if (ret) 601 if (ret)
607 goto err_unref; 602 goto err_unref;
608 603
609 obj_priv = to_intel_bo(obj);
610 ring->map.size = ring->size; 604 ring->map.size = ring->size;
611 ring->map.offset = dev->agp->base + obj_priv->gtt_offset; 605 ring->map.offset = dev->agp->base + obj->gtt_offset;
612 ring->map.type = 0; 606 ring->map.type = 0;
613 ring->map.flags = 0; 607 ring->map.flags = 0;
614 ring->map.mtrr = 0; 608 ring->map.mtrr = 0;
@@ -632,8 +626,8 @@ err_unmap:
632err_unpin: 626err_unpin:
633 i915_gem_object_unpin(obj); 627 i915_gem_object_unpin(obj);
634err_unref: 628err_unref:
635 drm_gem_object_unreference(obj); 629 drm_gem_object_unreference(&obj->base);
636 ring->gem_object = NULL; 630 ring->obj = NULL;
637err_hws: 631err_hws:
638 cleanup_status_page(ring); 632 cleanup_status_page(ring);
639 return ret; 633 return ret;
@@ -644,7 +638,7 @@ void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring)
644 struct drm_i915_private *dev_priv; 638 struct drm_i915_private *dev_priv;
645 int ret; 639 int ret;
646 640
647 if (ring->gem_object == NULL) 641 if (ring->obj == NULL)
648 return; 642 return;
649 643
650 /* Disable the ring buffer. The ring must be idle at this point */ 644 /* Disable the ring buffer. The ring must be idle at this point */
@@ -654,9 +648,9 @@ void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring)
654 648
655 drm_core_ioremapfree(&ring->map, ring->dev); 649 drm_core_ioremapfree(&ring->map, ring->dev);
656 650
657 i915_gem_object_unpin(ring->gem_object); 651 i915_gem_object_unpin(ring->obj);
658 drm_gem_object_unreference(ring->gem_object); 652 drm_gem_object_unreference(&ring->obj->base);
659 ring->gem_object = NULL; 653 ring->obj = NULL;
660 654
661 if (ring->cleanup) 655 if (ring->cleanup)
662 ring->cleanup(ring); 656 ring->cleanup(ring);
@@ -902,11 +896,11 @@ static int blt_ring_init(struct intel_ring_buffer *ring)
902 u32 *ptr; 896 u32 *ptr;
903 int ret; 897 int ret;
904 898
905 obj = to_intel_bo(i915_gem_alloc_object(ring->dev, 4096)); 899 obj = i915_gem_alloc_object(ring->dev, 4096);
906 if (obj == NULL) 900 if (obj == NULL)
907 return -ENOMEM; 901 return -ENOMEM;
908 902
909 ret = i915_gem_object_pin(&obj->base, 4096, true); 903 ret = i915_gem_object_pin(obj, 4096, true);
910 if (ret) { 904 if (ret) {
911 drm_gem_object_unreference(&obj->base); 905 drm_gem_object_unreference(&obj->base);
912 return ret; 906 return ret;
@@ -917,9 +911,9 @@ static int blt_ring_init(struct intel_ring_buffer *ring)
917 *ptr++ = MI_NOOP; 911 *ptr++ = MI_NOOP;
918 kunmap(obj->pages[0]); 912 kunmap(obj->pages[0]);
919 913
920 ret = i915_gem_object_set_to_gtt_domain(&obj->base, false); 914 ret = i915_gem_object_set_to_gtt_domain(obj, false);
921 if (ret) { 915 if (ret) {
922 i915_gem_object_unpin(&obj->base); 916 i915_gem_object_unpin(obj);
923 drm_gem_object_unreference(&obj->base); 917 drm_gem_object_unreference(&obj->base);
924 return ret; 918 return ret;
925 } 919 }