diff options
author | Christian König <christian.koenig@amd.com> | 2014-06-03 18:13:21 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-06-03 21:59:44 -0400 |
commit | fa7f517cb26eb1a1a1f0baffcced39f6c3ec3337 (patch) | |
tree | 8a678f30f92b7b0f6b1f33115fda9c9c37209b92 /drivers/gpu/drm/radeon/radeon.h | |
parent | b15eb4ea1533b82762932d32cb220ddf75a09b3d (diff) |
drm/radeon: rework page flip handling v4
Instead of trying to flip inside the vblank period when
the buffer is idle, offload blocking for idle to a kernel
thread and program the flip directly into the hardware.
v2: add error handling, fix EBUSY handling
v3: add proper exclusive_lock handling
v4: update crtc->primary->fb when the flip actually happens
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon.h')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 2eaa3300099e..dd4da88b3ab1 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -676,14 +676,16 @@ void radeon_doorbell_free(struct radeon_device *rdev, u32 doorbell); | |||
676 | * IRQS. | 676 | * IRQS. |
677 | */ | 677 | */ |
678 | 678 | ||
679 | struct radeon_unpin_work { | 679 | struct radeon_flip_work { |
680 | struct work_struct work; | 680 | struct work_struct flip_work; |
681 | struct radeon_device *rdev; | 681 | struct work_struct unpin_work; |
682 | int crtc_id; | 682 | struct radeon_device *rdev; |
683 | struct radeon_fence *fence; | 683 | int crtc_id; |
684 | struct drm_framebuffer *fb; | ||
684 | struct drm_pending_vblank_event *event; | 685 | struct drm_pending_vblank_event *event; |
685 | struct radeon_bo *old_rbo; | 686 | struct radeon_bo *old_rbo; |
686 | u64 new_crtc_base; | 687 | struct radeon_bo *new_rbo; |
688 | struct radeon_fence *fence; | ||
687 | }; | 689 | }; |
688 | 690 | ||
689 | struct r500_irq_stat_regs { | 691 | struct r500_irq_stat_regs { |