mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
drm/radeon/kms: clean up r6xx/r7xx blit init (v2)
Move common code to init function. v2: make sure the bo is pinned after init as well. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
fb7ba2114b
commit
b70d6bb3f6
3 changed files with 17 additions and 28 deletions
|
@ -2426,19 +2426,7 @@ int r600_startup(struct radeon_device *rdev)
|
||||||
rdev->asic->copy = NULL;
|
rdev->asic->copy = NULL;
|
||||||
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
||||||
}
|
}
|
||||||
/* pin copy shader into vram */
|
|
||||||
if (rdev->r600_blit.shader_obj) {
|
|
||||||
r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
|
|
||||||
if (unlikely(r != 0))
|
|
||||||
return r;
|
|
||||||
r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
|
|
||||||
&rdev->r600_blit.shader_gpu_addr);
|
|
||||||
radeon_bo_unreserve(rdev->r600_blit.shader_obj);
|
|
||||||
if (r) {
|
|
||||||
dev_err(rdev->dev, "(%d) pin blit object failed\n", r);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Enable IRQ */
|
/* Enable IRQ */
|
||||||
r = r600_irq_init(rdev);
|
r = r600_irq_init(rdev);
|
||||||
if (r) {
|
if (r) {
|
||||||
|
|
|
@ -472,9 +472,10 @@ int r600_blit_init(struct radeon_device *rdev)
|
||||||
u32 packet2s[16];
|
u32 packet2s[16];
|
||||||
int num_packet2s = 0;
|
int num_packet2s = 0;
|
||||||
|
|
||||||
/* don't reinitialize blit */
|
/* pin copy shader into vram if already initialized */
|
||||||
if (rdev->r600_blit.shader_obj)
|
if (rdev->r600_blit.shader_obj)
|
||||||
return 0;
|
goto done;
|
||||||
|
|
||||||
mutex_init(&rdev->r600_blit.mutex);
|
mutex_init(&rdev->r600_blit.mutex);
|
||||||
rdev->r600_blit.state_offset = 0;
|
rdev->r600_blit.state_offset = 0;
|
||||||
|
|
||||||
|
@ -532,6 +533,18 @@ int r600_blit_init(struct radeon_device *rdev)
|
||||||
memcpy(ptr + rdev->r600_blit.ps_offset, r6xx_ps, r6xx_ps_size * 4);
|
memcpy(ptr + rdev->r600_blit.ps_offset, r6xx_ps, r6xx_ps_size * 4);
|
||||||
radeon_bo_kunmap(rdev->r600_blit.shader_obj);
|
radeon_bo_kunmap(rdev->r600_blit.shader_obj);
|
||||||
radeon_bo_unreserve(rdev->r600_blit.shader_obj);
|
radeon_bo_unreserve(rdev->r600_blit.shader_obj);
|
||||||
|
|
||||||
|
done:
|
||||||
|
r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
|
||||||
|
if (unlikely(r != 0))
|
||||||
|
return r;
|
||||||
|
r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
|
||||||
|
&rdev->r600_blit.shader_gpu_addr);
|
||||||
|
radeon_bo_unreserve(rdev->r600_blit.shader_obj);
|
||||||
|
if (r) {
|
||||||
|
dev_err(rdev->dev, "(%d) pin blit object failed\n", r);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1028,19 +1028,7 @@ static int rv770_startup(struct radeon_device *rdev)
|
||||||
rdev->asic->copy = NULL;
|
rdev->asic->copy = NULL;
|
||||||
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
||||||
}
|
}
|
||||||
/* pin copy shader into vram */
|
|
||||||
if (rdev->r600_blit.shader_obj) {
|
|
||||||
r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
|
|
||||||
if (unlikely(r != 0))
|
|
||||||
return r;
|
|
||||||
r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
|
|
||||||
&rdev->r600_blit.shader_gpu_addr);
|
|
||||||
radeon_bo_unreserve(rdev->r600_blit.shader_obj);
|
|
||||||
if (r) {
|
|
||||||
DRM_ERROR("failed to pin blit object %d\n", r);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Enable IRQ */
|
/* Enable IRQ */
|
||||||
r = r600_irq_init(rdev);
|
r = r600_irq_init(rdev);
|
||||||
if (r) {
|
if (r) {
|
||||||
|
|
Loading…
Reference in a new issue