diff options
author | Ilija Hadzic <ihadzic@research.bell-labs.com> | 2011-10-12 23:29:41 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-10-18 05:10:52 -0400 |
commit | fb3d9e97e1ad5f2c19b68fe5a0c6a95bf57c65c3 (patch) | |
tree | 144cf1b5b2cd3acee7ebb2c5a199074cf01d1fb4 /drivers/gpu/drm/radeon/evergreen.c | |
parent | b353096345f928d8c1164117804d1407790fb5f3 (diff) |
drm/radeon/kms: blit code commoning
factor out most of evergreen blit code and use the refactored code
from r600 that is now common for both r600 and evergreen
Signed-off-by: Ilija Hadzic <ihadzic@research.bell-labs.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen.c')
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index 7cd402412054..b37b6a0bbec9 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
@@ -3087,7 +3087,7 @@ static int evergreen_startup(struct radeon_device *rdev) | |||
3087 | 3087 | ||
3088 | r = evergreen_blit_init(rdev); | 3088 | r = evergreen_blit_init(rdev); |
3089 | if (r) { | 3089 | if (r) { |
3090 | evergreen_blit_fini(rdev); | 3090 | r600_blit_fini(rdev); |
3091 | rdev->asic->copy = NULL; | 3091 | rdev->asic->copy = NULL; |
3092 | dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r); | 3092 | dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r); |
3093 | } | 3093 | } |
@@ -3172,27 +3172,6 @@ int evergreen_suspend(struct radeon_device *rdev) | |||
3172 | return 0; | 3172 | return 0; |
3173 | } | 3173 | } |
3174 | 3174 | ||
3175 | int evergreen_copy_blit(struct radeon_device *rdev, | ||
3176 | uint64_t src_offset, uint64_t dst_offset, | ||
3177 | unsigned num_pages, struct radeon_fence *fence) | ||
3178 | { | ||
3179 | int r; | ||
3180 | |||
3181 | mutex_lock(&rdev->r600_blit.mutex); | ||
3182 | rdev->r600_blit.vb_ib = NULL; | ||
3183 | r = evergreen_blit_prepare_copy(rdev, num_pages); | ||
3184 | if (r) { | ||
3185 | if (rdev->r600_blit.vb_ib) | ||
3186 | radeon_ib_free(rdev, &rdev->r600_blit.vb_ib); | ||
3187 | mutex_unlock(&rdev->r600_blit.mutex); | ||
3188 | return r; | ||
3189 | } | ||
3190 | evergreen_kms_blit_copy(rdev, src_offset, dst_offset, num_pages); | ||
3191 | evergreen_blit_done_copy(rdev, fence); | ||
3192 | mutex_unlock(&rdev->r600_blit.mutex); | ||
3193 | return 0; | ||
3194 | } | ||
3195 | |||
3196 | /* Plan is to move initialization in that function and use | 3175 | /* Plan is to move initialization in that function and use |
3197 | * helper function so that radeon_device_init pretty much | 3176 | * helper function so that radeon_device_init pretty much |
3198 | * do nothing more than calling asic specific function. This | 3177 | * do nothing more than calling asic specific function. This |
@@ -3301,7 +3280,7 @@ int evergreen_init(struct radeon_device *rdev) | |||
3301 | 3280 | ||
3302 | void evergreen_fini(struct radeon_device *rdev) | 3281 | void evergreen_fini(struct radeon_device *rdev) |
3303 | { | 3282 | { |
3304 | evergreen_blit_fini(rdev); | 3283 | r600_blit_fini(rdev); |
3305 | r700_cp_fini(rdev); | 3284 | r700_cp_fini(rdev); |
3306 | r600_irq_fini(rdev); | 3285 | r600_irq_fini(rdev); |
3307 | radeon_wb_fini(rdev); | 3286 | radeon_wb_fini(rdev); |