diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-11-08 14:18:58 -0500 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-11-23 15:19:10 -0500 |
commit | 05394f3975dceb107a5e1393e2244946e5b43660 (patch) | |
tree | 2af73b6efec503ed4cd9c932018619bd28a1fe60 /drivers/gpu/drm/i915/intel_ringbuffer.c | |
parent | 185cbcb304ba4dee55e39593fd86dcd7813f62ec (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.c | 54 |
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) | |||
139 | static int init_ring_common(struct intel_ring_buffer *ring) | 139 | static 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, | |||
514 | static void cleanup_status_page(struct intel_ring_buffer *ring) | 514 | static 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) | |||
570 | err_unpin: | 566 | err_unpin: |
571 | i915_gem_object_unpin(obj); | 567 | i915_gem_object_unpin(obj); |
572 | err_unref: | 568 | err_unref: |
573 | drm_gem_object_unreference(obj); | 569 | drm_gem_object_unreference(&obj->base); |
574 | err: | 570 | err: |
575 | return ret; | 571 | return ret; |
576 | } | 572 | } |
@@ -578,8 +574,7 @@ err: | |||
578 | int intel_init_ring_buffer(struct drm_device *dev, | 574 | int 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: | |||
632 | err_unpin: | 626 | err_unpin: |
633 | i915_gem_object_unpin(obj); | 627 | i915_gem_object_unpin(obj); |
634 | err_unref: | 628 | err_unref: |
635 | drm_gem_object_unreference(obj); | 629 | drm_gem_object_unreference(&obj->base); |
636 | ring->gem_object = NULL; | 630 | ring->obj = NULL; |
637 | err_hws: | 631 | err_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 | } |